본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] pandas groupby 예제 : 실전 활용 완전 정복

by Papa Martino V 2025. 7. 25.
728x90

pandas groupby 예제 : 실전 활용 완전 정복
[PYTHON] pandas groupby

 

데이터 분석의 핵심 기능 중 하나인 pandas의 groupby()는 복잡한 데이터셋을 집계·변환·필터링하는 데 매우 유용합니다. 본 글에서는 기본 개념(wikipedia의 split‑apply‑combine), 단순 집계부터 transform, apply를 활용한 실전 예시까지 단계적으로 안내합니다 

1. split‑apply‑combine 구조 이해하기

groupby는 크게 세 단계를 거칩니다:

  • Split: 데이터를 지정한 컬럼 기준으로 그룹 나눔
  • Apply: 각 그룹에 집계나 변환 적용
  • Combine: 결과를 하나의 구조로 합침

이 구조는 pandas 공식 문서에서도 동일하게 정의되어 있습니다

2. 기본 집계 예제

import pandas as pd

df = pd.DataFrame({
    'city': ['A','A','B','B','C'],
    'value': [10, 20, 30, 40, 50]
})
agg = df.groupby('city')['value'].sum()
print(agg)
# A    30
# B    70
# C    50

특정 컬럼 기준으로 합계, 평균, 개수 등을 간단하게 계산할 수 있습니다 

3. 여러 집계 함수를 동시에 사용하기

agg_multi = df.groupby('city').agg({
    'value': ['count', 'mean', 'sum']
})
print(agg_multi)

count, mean, sum 등 여러 함수를 한 번에 적용할 수 있으며, 결과는 다중 인덱스로 구성됩니다

4. transform을 활용한 원본과 동일한 형태 유지 예

df['group_sum'] = df.groupby('city')['value'].transform('sum')
print(df)

transform은 결과 형태를 입력과 동일하게 유지하여, 추가 컬럼을 결합하거나 조건 기반 처리를 쉽게 할 수 있습니다

5. apply로 복잡한 그룹 연산 처리하기

def custom(group):
    return pd.Series({
        'sum': group['value'].sum(),
        'size': len(group),
        'range': group['value'].max() - group['value'].min()
    })

result = df.groupby('city').apply(custom)
print(result)

apply 메소드는 직접 정의한 함수를 그룹 전체에 적용할 때 유용하며, 조건 로직 등 복합 연산이 가능합니다

6. SQL 스타일 다중 그룹핑

df2 = pd.DataFrame({
    'city': ['A','A','B','B','C','C'],
    'type': ['x','y','x','y','x','y'],
    'value': [5,10,15,20,25,30]
})
multi = df2.groupby(['city','type'])['value'].sum()
print(multi)

city와 type의 조합 기준으로 그룹핑할 수 있습니다

7. 예제 요약 비교표

기능 예제 코드 용도
sum() df.groupby('city')['value'].sum() 기본 집계
agg() .agg({'value':['mean','max']}) 다중 함수 적용
transform() .transform('sum') 원본 모양 유지
apply() .apply(custom) 복잡한 로직 처리
다중 그룹 groupby(['city','type']) 다중 기준 그룹화

8. 성능 팁

  • apply보다 가능한 경우엔 agg/transform 추천
  • as_index=False를 통해 SQL 스타일 출력 지원
  • 카테고리(dtype='category')는 메모리 및 속도 향상에 유리 

9. 결론

pandas의 groupby는 단순 집계부터 복잡한 그룹 기반 로직까지 아우르는 강력한 기능입니다. split‑apply‑combine 패턴과 함께 agg, transform, apply를 적재적소에 선택하면, 실무에서 데이터 분석 효율을 크게 높일 수 있습니다. 오늘 소개한 실전 예제를 통해 분석 업무에 즉시 적용해보세요.


출처 (References)

  • Real Python – pandas GroupBy 사용법
  • Pandas 공식 문서 – DataFrame.groupby 
  • GeeksforGeeks – groupby 활용 예제 
  • StackOverflow – transform 예제 
728x90