GroupBy와 집계
GroupBy는 데이터를 특정 기준으로 그룹화한 뒤 각 그룹에 집계 함수를 적용하는 패턴입니다. SQL의GROUP BY와 동일한 개념이며, 데이터 분석에서 가장 빈번하게 사용되는 연산 중 하나입니다.
학습 목표
- GroupBy의 Split-Apply-Combine 메커니즘을 이해한다
- agg로 다양한 집계 함수를 적용할 수 있다
- transform과 agg의 차이를 이해하고 적절히 사용할 수 있다
- filter로 그룹 단위 필터링을 수행할 수 있다
왜 중요한가
“부서별 평균 매출”, “고객 등급별 구매 빈도”, “연도별 성장률” 등 비즈니스 분석의 대부분은 그룹별 집계입니다. EDA에서 범주형 변수와 수치형 변수의 관계를 탐색할 때, 피처 엔지니어링에서 그룹 통계를 피처로 만들 때 GroupBy가 핵심입니다.Split-Apply-Combine
agg — 다중 집계
transform — 그룹 통계를 원본에 매핑
transform()은 agg()와 달리 원본과 같은 shape의 결과를 반환합니다.
agg()는 그룹당 하나의 값을 반환하여 행이 줄어듭니다. transform()은 각 행에 그룹 통계를 매핑하여 원본 크기를 유지합니다. 피처 엔지니어링에서는 transform()이 더 자주 사용됩니다.filter — 그룹 단위 필터링
다중 그룹화
AI/ML에서의 활용
- 피처 엔지니어링:
transform()으로 그룹별 평균, 개수, 비율 등을 피처로 추가합니다 - 타겟 인코딩:
groupby('카테고리')['target'].transform('mean')으로 범주형 피처를 인코딩합니다 - EDA: 그룹별 통계로 범주형 변수와 타겟 변수의 관계를 탐색합니다
- 데이터 품질: 그룹별 결측치 비율, 이상치 비율을 계산합니다
agg와 apply의 차이는 무엇인가요?
agg와 apply의 차이는 무엇인가요?
agg()는 집계 함수(스칼라 반환)에 최적화되어 있고, apply()는 임의의 함수를 적용할 수 있지만 더 느립니다. 가능하면 agg()를 사용하고, 복잡한 로직이 필요할 때만 apply()를 사용하세요.as_index=False는 무엇인가요?
as_index=False는 무엇인가요?
groupby('열', as_index=False)로 설정하면 그룹 키가 인덱스가 되지 않고 일반 열로 남습니다. .reset_index()를 호출하는 것과 동일한 효과입니다.체크리스트
- GroupBy의 Split-Apply-Combine 패턴을 설명할 수 있다
- agg로 열별 다른 집계 함수를 적용할 수 있다
- Named Aggregation 문법을 사용할 수 있다
- transform과 agg의 차이를 이해하고 상황에 맞게 선택할 수 있다
- filter로 조건을 만족하는 그룹만 남길 수 있다

