Pandas 마스터하기: 데이터 조작을 위한 고급 기술

Pandas 여정을 진행하면서 기본을 넘어 데이터 조작 기술에 정교함을 더하는 몇 가지 강력한 기술을 살펴보겠습니다.

1. DataFrame 병합 및 연결

여러 소스의 데이터를 결합하는 기술을 자세히 살펴보세요. DataFrame 병합과 연결의 차이점을 이해하고 다양한 유형의 조인을 처리하는 방법을 알아보세요.

1
2
# Concatenate DataFrames vertically
result = pd.concat([df1, df2])
1
2
# Merge DataFrames based on a common column
merged_df = pd.merge(left_df, right_df, on='common_column', how='inner')
  • 설명
    • 연결: pd.concat()은 DataFrame을 수직으로 쌓는 데 사용됩니다. 동일한 열을 가진 데이터 세트가 있고 행 단위로 결합하려는 경우에 유용합니다.
    • 병합: pd.merge()는 공통 열(column)을 기준으로 DataFrame을 결합하는 데 사용됩니다. SQL 조인과 유사하며 데이터 세트와 관련 정보를 결합하려는 경우에 유용합니다.
  • 사용 사례
    • 연결: 여러 달 또는 여러 해의 데이터를 동일한 열로 결합합니다.
    • 병합: 공통 식별자를 가진 데이터 세트 통합(예: 고객 ID를 기반으로 판매 데이터와 고객 정보 병합)

2. 피벗(Pivot) 테이블로 데이터 재구성

피벗 테이블을 사용하여 더 나은 분석을 위해 데이터 재구성하는 데 능숙해집니다. DataFrame을 피벗 형태로 변환하여 정보를 요약하여 더 나은 인사이트를 얻을 수 있습니다:

1
2
# Create a pivot table
pivot_table = df.pivot_table(index='Category', columns='Month', values='Value', aggfunc='sum')
  • 설명
    • df.pivot_table()은 데이터를 재구성하여 요약 테이블을 생성합니다. 인덱스, 열, 값 및 집계 함수를 지정합니다.
    • 이 예에서는 합계를 사용하여 각 'Category’와 ‘Month’ 조합에 대한 ‘Value’ 열을 요약합니다.
  • 사용 사례
    • 제품 카테고리 및 월별로 분류된 판매 데이터를 분석하여 추세를 파악합니다.

3. 범주형 데이터 처리

범주형 데이터를 효율적으로 관리하여 분석을 향상합니다. 원-핫(one-hot) 인코딩 및 범주형 데이터 유형 변환과 같은 기술을 배워보세요.

1
2
# Convert a column to categorical type
df['Category'] = pd.Categorical(df['Category'])
1
2
# Perform one-hot encoding
df_encoded = pd.get_dummies(df, columns=['Category'])
  • 설명
    • 열을 범주형 유형으로 변환(pd.Categorical())하면 고유 값이 제한된 열의 메모리 사용량이 최적화할 수 있습니다.
    • 원-핫(one-hot) 인코딩(pd.get_dummies())은 범주형 변수를 이진 열로 변환하는 데 사용됩니다. 각 카테고리는 1과 0이 포함된 고유한 열을 갖게 됩니다.
  • 사용 사례
    • ‘성별(Gender)’ 또는 '국가(Country)'와 같은 범주형 변수를 머신 러닝 알고리즘에 적합한 형식으로 변환합니다.

4. 시간 효율적인 문자열 작업

문자열 조작을 위한 Pandas의 다양한 기능을 살펴보세요. 문자열 작업을 효율적으로 적용하여 텍스트 데이터를 정리하고 변환하는 방법을 배워보세요.

1
2
# Convert text to lowercase
df['Text_Column'] = df['Text_Column'].str.lower()
1
2
# Extract information using regular expressions
df['Extracted_Info'] = df['Text_Column'].str.extract(r'(\d+)')
  • 설명
    • str.lower()는 열의 모든 텍스트를 소문자로 변환하여 일관성을 유지합니다.
    • str.extract()는 정규식을 사용하여 텍스트에서 특정 정보를 추출합니다.
  • 사용 사례
    • 비교하기 쉽도록 모든 텍스트를 소문자로 만들어 텍스트 데이터를 표준화합니다.
    • 제품 설명에서 제품 ID를 추출하는 등 텍스트 열에서 숫자 정보를 추출합니다.

5. 날짜/시간 데이터 처리

기본적인 날짜/시간 작업을 넘어 고급 기술을 살펴보세요. 특정 구성 요소를 추출하고, 시차를 계산하고, 표준 시간대로 작업하는 방법을 배워보세요.

1
2
3
# Extract month and year from a datetime column
df['Month'] = df['Date'].dt.month
df['Year'] = df['Date'].dt.year
  • 설명

    • dt.monthdt.year는 각각 월과 연도를 추출하는 날짜/시간 접근자(dt)의 속성입니다.
  • 사용 사례

    • 월별 또는 연도별 추세 분석과 같은 더 나은 시간 기반 분석을 위해 날짜/시간 데이터를 구성 요소로 세분화합니다.

6. 메모리 최적화

DataFrame의 메모리 사용량을 최적화하여 보다 효율적으로 처리하세요. 데이터 무결성을 손상시키지 않고 메모리 사용량을 줄이는 방법을 알아보세요.

1
2
# 숫자 열을 더 작은 데이터 유형으로 다운캐스트(Downcast)하기
df = df.apply(pd.to_numeric, downcast='integer')
  • 설명
    • pd.to_numeric()은 열을 숫자 유형으로 변환합니다.
    • downcast='integer'는 데이터에 맞는 가장 작은 정수 유형을 선택하여 메모리 사용량을 더욱 최적화합니다.
  • 사용 사례
    • 대규모 데이터 세트의 메모리 사용을 최적화하며, 특히 메모리에 않을 수 있는 데이터 세트로 작업할 때 유용합니다.

결론

이러한 고급 Pandas 기술은 데이터 조작 기술을 향상시켜 복잡한 시나리오에 대한 솔루션을 제공합니다. 주요 내용은 다음과 같습니다.

  • 포괄적인 데이터 통합을 위해 DataFrame을 병합하고 연결합니다.
  • 데이터 재구성을 위해 피벗 테이블의 기능을 활용합니다.
  • 범주형 데이터를 효율적으로 처리하고 원-핫(one-hot) 인코딩을 수행합니다.
  • 시간 효율적인 문자열 및 날짜/시간 작업을 마스터합니다.
  • 대규모 데이터 세트의 메모리 사용량을 최적화합니다.

이러한 고급 기술을 적용하면 다양한 데이터 시나리오에서 Pandas를 정확하게 사용할 수 있습니다.

Share