groupby는 「특정 열의 값을 기준으로 행들을 그룹화하고, 그룹마다 집계 함수를 적용하는」 SQL의 GROUP BY와 같은 기능입니다.
데이터 분석의 핵심 패턴 중 하나입니다.
기본 사용.
df.groupby("city")["age"].mean() — 도시별 평균 나이.
df.groupby("city").size() — 도시별 행 수.
df.groupby("city")["sales"].sum() — 도시별 매출 합계.
「split(나누기) → apply(적용) → combine(결합)」 패턴이 한 줄로 표현됩니다.
여러 열로 그룹화.
df.groupby(["city", "category"])["sales"].sum() — 도시 + 카테고리별 합계.
결과는 멀티 인덱스 Series.
.reset_index()로 일반 DataFrame으로 변환할 수 있습니다.
여러 집계 동시 적용.
df.groupby("city")["age"].agg(["mean", "min", "max"]) — 평균·최솟·최댓값을 한꺼번에.
df.groupby("city").agg({"age": "mean", "sales": "sum"}) — 열마다 다른 집계.
transform — 그룹별 계산을 원래 행에 매핑.
df["city_avg_age"] = df.groupby("city")["age"].transform("mean") — 각 행에 그 도시의 평균 나이가 들어감.
「자기 그룹의 평균과 비교」 같은 분석에 유용.
groupby는 한 번 익히면 데이터 분석의 80%를 풀 수 있는 핵심 도구입니다.
한 줄 요약
groupby는 SQL의 GROUP BY와 같이 「그룹화 → 집계」 패턴입니다.
mean·sum·size 같은 단일 집계, agg로 여러 집계, transform으로 그룹 통계를 원래 행에 매핑할 수 있습니다.
더 알아볼 것
- pivot_table — groupby의 친척
- apply — 그룹마다 임의 함수
- filter — 그룹 단위 필터링