728x90

데이터 분석의 핵심 기능 중 하나인 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
'Artificial Intelligence > 60. Python' 카테고리의 다른 글
| [PYTHON] pip 설치 오류 : 자주 발생하는 문제와 해결 가이드 (0) | 2025.07.25 |
|---|---|
| [PYTHON] Redis‑Py : Python용 Redis 커넥터 완벽 가이드 (0) | 2025.07.25 |
| [PYTHON] Matplotlib 한글 깨짐 해결법 완벽 가이드 (0) | 2025.07.25 |
| [PYTHON] Cython으로 파이썬 속도 10배 빠르게 만들기 (0) | 2025.07.25 |
| [PYTHON] tkinter로 만드는 파이썬 GUI : 윈도우부터 이벤트까지 (0) | 2025.07.25 |