pandas 그룹화와 집계

pandas 그룹화와 집계 (groupby)

groupby()는 데이터를 특정 컬럼 값으로 묶어 집계하는 가장 강력한 pandas 도구 중 하나예요. SQL의 GROUP BY처럼 "카테고리별 평균", "연도별 합계" 같은 분석을 한 줄로 처리해요.

출처: https://pandas.pydata.org/docs/user_guide/groupby.html

기본 groupby

groupby()에 묶을 컬럼을 주고, 집계 함수를 적용해요.

import pandas as pd

df = pd.DataFrame({
    "category": ["A", "B", "A", "B"],
    "value": [10, 20, 30, 40]
})

print(df.groupby("category").mean())
# A -> 20, B -> 30

sum, mean, count, max, min 같은 집계를 쓸 수 있어요. 여러 집계를 한 번에 하려면 agg()를 써요.

result = df.groupby("category").agg({"value": ["mean", "sum", "count"]})

여러 컬럼으로 그룹화

두 컬럼 이상으로 묶을 수도 있어요. yearregion을 함께 묶으면 그 조합별로 집계돼요.

g = df.groupby(["year", "region"]).sum()

자유로운 집계 함수

agg()에 커스텀 함수나 별칭을 지정해 자유롭게 집계할 수 있어요.

result = df.groupby("category")["value"].agg(["mean", "max", lambda x: x.max() - x.min()])

pivot과의 조합

그룹화 결과를 표 형태로 재구성하려면 pivot_table()을 쓸 수 있어요. 행·열·값·집계 방식을 지정하면 복잡한 요약표를 만들 수 있어요.

pivot = df.pivot_table(index="category", values="value", aggfunc="mean")

더 알아보기