[Python] pandas

파이썬 Python Pandas

Pandas 소개

Pandas는 고성능이고 사용하기 쉬운 데이터 구조와 데이터 분석 도구를 제공하는 Python 라이브러리입니다. 데이터 과학자와 분석가가 데이터 정리, 조작 및 분석을 위해 널리 사용합니다.

시리즈 및 DataFrame

Pandas의 두 가지 주요 데이터 구조는 Series와 DataFrame입니다. Series는 1차원 데이터 배열이고, DataFrame은 2차원 데이터 배열입니다. Series와 DataFrame은 모두 인덱싱 및 슬라이싱이 가능하며 다양한 방법을 사용하여 조작할 수 있습니다.

데이터프레임 생성

DataFrame은 목록, 사전 또는 CSV 파일과 같은 다양한 소스에서 생성될 수 있습니다. 예를 들어 다음 코드는 목록에서 DataFrame을 생성합니다.

import pandas as pd

data = [1, 2, 3, 4, 5]
df = pd.DataFrame(data)

print(df)

이 코드는 다음 DataFrame을 인쇄합니다.

  0
0  1
1  2
2  3
3  4
4  5

외부 파일 로드

DataFrame은 CSV 파일과 같은 외부 파일에서 로드할 수도 있습니다. 예를 들어 다음 코드는 “data.csv”라는 CSV 파일에서 DataFrame을 로드합니다.

df = pd.read_csv("data.csv")

print(df)

이 코드는 “data.csv” 파일에 저장된 DataFrame을 인쇄합니다.

DataFrame 기본 사항 알아보기

DataFrame을 생성한 후에는 해당 데이터 탐색을 시작할 수 있습니다. head()tail()메서드를 사용하여 각각 DataFrame의 처음 몇 행과 마지막 몇 행을 볼 수 있습니다. 또한 이 info()메서드를 사용하여 행과 열 수, 열의 데이터 유형, 누락된 값 등 DataFrame에 대한 정보를 얻을 수도 있습니다.

DataFrame 인덱싱 및 정렬

행 또는 열 이름을 사용하여 DataFrame을 인덱싱할 수 있습니다. 예를 들어 다음 코드는 DataFrame의 두 번째 행과 세 번째 열의 값을 인쇄합니다.

df["column_name"][1]

행이나 열을 기준으로 DataFrame을 정렬할 수도 있습니다. 예를 들어 다음 코드는 DataFrame을 해당 column_name열을 기준으로 오름차순으로 정렬합니다.

df = df.sort_values(by="column_name")

DataFrame 행과 열 추가 및 삭제

append()및 메서드를 사용하여 DataFrame에서 행과 열을 추가하고 삭제할 수 있습니다 drop(). 예를 들어 다음 코드는 DataFrame에 새 행을 추가합니다.

df = df.append({"column_name": "new_value"}, ignore_index=True)

다음 코드는 DataFrame에서 세 번째 열을 삭제합니다.

df = df.drop("column_name", axis=1)

DataFrame 누락값 감지 및 처리

DataFrame의 누락된 값은 으로 표시됩니다 NaN. isnull()및 메서드를 사용하여 notnull()DataFrame에서 누락된 값을 확인할 수 있습니다. 예를 들어 다음 코드는 column_nameDataFrame 열에 누락된 값이 있는지 확인합니다 .

df["column_name"].isnull().values.any()

메서드를 사용하여 DataFrame에서 누락된 값을 채울 수도 있습니다 fillna(). 예를 들어 다음 코드는 열의 누락된 값을 column_name값으로 채웁니다 0.

df["column_name"].fillna(0, inplace=True)

DataFrame 통계 처리

평균, 표준 편차, 최소값 및 최대값과 같은 DataFrame에 대한 다양한 통계를 계산할 수 있습니다. 예를 들어 다음 코드는 column_nameDataFrame 열에 있는 값의 평균을 계산합니다.

df["column_name"].mean()

하나 이상의 열로 DataFrame을 그룹화하고 각 그룹에 대한 통계를 계산할 수도 있습니다. 예를 들어 다음 코드는 DataFrame을 컬럼 이름 열을 기준으로 그룹화하고 각 그룹에 대한 컬럼 이름 열 값의 평균을 계산합니다.

df = df.groupby("column_name")["column_name"].mean()

데이터 분석을 위한 Pandas

Pandas는 데이터 분석을 위한 강력한 Python 라이브러리입니다. 데이터 로드, 정리, 변환 및 분석을 위한 다양한 도구를 제공합니다. Pandas는 사용하기 쉽고 효율적이며 확장 가능하기 때문에 데이터 과학자와 분석가에게 인기 있는 선택입니다.

다음은 데이터 분석을 위한 가장 일반적인 Pandas DataFrame 작업 중 일부입니다.

  • DataFrames 그룹핑: 이 작업을 사용하면 하나 이상의 열로 DataFrame을 그룹화한 다음 그룹에 대해 집계 작업을 수행할 수 있습니다. 예를 들어 DataFrame을 성별로 그룹화한 다음 각 성별의 평균 급여를 계산할 수 있습니다.
  • DataFrame 중복 제거: 이 작업을 사용하면 DataFrame에서 중복 행을 제거할 수 있습니다. 이는 중복 데이터를 제거하거나 DataFrame을 단순화하려는 경우 유용할 수 있습니다.
  • DataFrame value_counts: 이 함수는 DataFrame 열에 각 값이 나타나는 횟수를 반환합니다. 이는 열에서 가장 일반적인 값을 빠르게 식별하는 데 유용할 수 있습니다.
  • DataFrames 결합: 이 작업을 사용하면 두 개 이상의 DataFrame을 단일 DataFrame으로 결합할 수 있습니다. 이는 다양한 소스의 데이터를 병합하거나 어떤 방식으로든 관련된 데이터를 결합하는 데 유용할 수 있습니다.
  • DataFrame 순위 지정: 이 작업을 사용하면 지정된 열을 기준으로 DataFrame의 행 순위를 지정할 수 있습니다. 이는 데이터세트에서 최고 또는 최저 성과자를 식별하는 데 유용할 수 있습니다.
  • DataFrame 날짜 유형 사용: Pandas DataFrames는 날짜 또는 날짜/시간 유형의 데이터를 저장할 수 있습니다. 이를 통해 날짜별로 행을 필터링하거나 두 날짜 간의 차이를 계산하는 등 데이터에 대해 날짜 관련 작업을 수행할 수 있습니다.
  • dtypes: 이 함수는 DataFrame에 있는 각 열의 데이터 유형을 반환합니다. 이는 DataFrame에 저장된 데이터 유형을 이해하고 해당 데이터 유형과 호환되는 작업을 수행하는 데 유용할 수 있습니다.
  • DataFrame apply: 이 함수를 사용하면 DataFrame의 각 행이나 열에 함수를 적용할 수 있습니다. 이는 데이터에 대한 사용자 정의 계산을 수행하는 데 유용할 수 있습니다.
  • DataFrame map: 이 함수를 사용하면 DataFrame 열의 값을 새 값으로 바꿀 수 있습니다. 이는 데이터를 정리하거나 데이터를 다른 형식으로 변환하는 데 유용할 수 있습니다.
  • DataFrame 산술 연산: Pandas DataFrames는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 다양한 산술 연산을 지원합니다. 이를 통해 데이터에 대한 계산을 수행하고 기존 DataFrame에서 새 DataFrame을 생성할 수 있습니다.
  • 원 핫 인코딩: 원 핫 인코딩은 범주형 데이터를 기계 학습 알고리즘에서 사용할 수 있는 숫자 형식으로 변환하는 기술입니다. Pandas는 하나의 핫 인코딩을 수행하기 위한 다양한 기능을 제공합니다.

이는 데이터 분석을 위한 가장 일반적인 Pandas DataFrame 작업 중 일부에 불과합니다. 자세한 내용은 pandas 설명서( https://pandas.pydata.org/ )를 참조하세요.

다음은 위에 언급된 pandas DataFrame 작업 중 일부를 보여주는 샘플 코드입니다.

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    "name": ["John Doe", "Jane Doe", "John Smith", "Jane Smith"],
    "age": [30, 25, 40, 35],
    "gender": ["male", "female", "male", "female"]
})

# Group the DataFrame by gender
grouped_df = df.groupby("gender")

# Calculate the average salary for each gender
average_salary_by_gender = grouped_df["salary"].mean()

# Remove duplicate rows from the DataFrame
df = df.drop_duplicates()

# Count the number of times each value appears in the "gender" column
gender_value_counts = df["gender"].value_counts()

# Combine two DataFrames
df_1 = pd.DataFrame({
    "name": ["John Doe", "Jane Doe", "John Smith", "Jane Smith"],
    "age": [30, 25, 40, 35]
})

df_2 = pd.DataFrame({
    "name": ["John Doe", "Jane Doe", "Michael Smith"],
    "salary": [50000, 60000, 70000]
})

df = df_1.merge(df_2, on="name")

# Rank the DataFrame by salary
df = df.sort_values("salary", ascending=False)

# Get the date type of the "date_of_birth" column
date_of_birth_dtype = df

다음은 Pandas를 사용하는 Python의 핫 인코딩에 대한 샘플 코드입니다.

import pandas as pd

# Create a DataFrame
df = pd.DataFrame({
    "country": ["USA", "Canada", "Mexico", "Brazil", "Argentina"],
    "population": [330000000, 38000000, 128000000, 212000000, 44000000]
})

# One hot encode the country column
df = pd.get_dummies(df, columns=["country"])

# Print the DataFrame
print(df)

country이 코드는 먼저 두 개의 열( 및 ) 이 있는 DataFrame을 생성합니다 population. 열에 country는 5개 국가의 이름이 포함되고 population열에는 각 국가의 인구가 포함됩니다.

다음 코드 줄에서는 이 get_dummies()함수를 사용하여 열을 핫 인코딩합니다 country. 즉, 해당 country열은 열의 각 고유 값에 대해 새 열로 변환됩니다 country. 예를 들어 country열의 원래 값은 “USA”, “Canada”, “Mexico”, “Brazil” 및 “Argentina”였습니다. 한 번의 핫 인코딩 후에 DataFrame에는 country_USA, country_Canada, country_Mexico, country_Brazil및 5개의 새로운 열이 있습니다 country_Argentina. 이러한 새 열 각각에는 해당 국가가 원래 열에 있으면 값 1이 포함되고 country, 그렇지 않으면 값 0이 포함됩니다.

코드의 마지막 줄은 DataFrame을 콘솔에 인쇄합니다. 코드의 출력은 6개의 열이 있는 DataFrame입니다. 열을 population핫 인코딩하여 생성된 5개의 새 열입니다 country.

다음은 코드 출력의 예입니다.

   population  country_Argentina  country_Brazil  ...  country_Mexico  country_USA
0   330000000                  0              0  ...               0            1
1    38000000                  0              0  ...               0            0
2   128000000                  1              0  ...               1            0
3   212000000                  0              1  ...               0            0
4    44000000                  1              0  ...               0            0

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!
Scroll to Top