
1. 개요
pandas.pivot_table은 엑셀의 피벗 테이블과 같은 기능을 제공하는 강력한 데이터 분석 도구입니다. 복잡한 데이터를 쉽게 요약하고 분석할 수 있도록 도와주며, 스프레드시트 스타일의 피벗 테이블을 DataFrame 형태로 생성합니다.
2. 기본 문법
pandas.pivot_table(data, values=None, index=None, columns=None,
aggfunc='mean', fill_value=None, margins=False,
dropna=True, margins_name='All', observed=<no_default>,
sort=True)
3. 매개변수 상세 설명
[필수 매개변수]
data (DataFrame)
- 피벗 테이블을 생성할 원본 데이터프레임입니다.
[선택적 매개변수]
values (list-like 또는 scalar, 선택사항)
- 집계할 열을 지정합니다.
- 여러 열을 지정할 수 있으며, 이 경우 각 열에 대해 집계 함수가 적용됩니다.
index (column, Grouper, array, 또는 이들의 리스트)
- 피벗 테이블의 인덱스(행)로 사용할 그룹화 기준입니다.
- 여러 열을 지정하면 계층적 인덱스(MultiIndex)가 생성됩니다.
columns (column, Grouper, array, 또는 이들의 리스트)
- 피벗 테이블의 컬럼으로 사용할 그룹화 기준입니다.
- 여러 열을 지정하면 계층적 컬럼이 생성됩니다.
aggfunc (함수, 함수 리스트, 또는 딕셔너리, 기본값: 'mean')
- 집계에 사용할 함수를 지정합니다.
- 사용 가능한 함수: 'mean', 'sum', 'count', 'min', 'max', 'std' 등
- 여러 함수를 리스트로 전달하면 계층적 컬럼이 생성됩니다.
- 딕셔너리로 전달하면 열별로 다른 집계 함수를 적용할 수 있습니다.
fill_value (scalar, 기본값: None)
- 결측값(NaN)을 대체할 값을 지정합니다.
- 집계 후 빈 셀에 표시될 값입니다.
margins (bool, 기본값: False)
- True로 설정하면 행과 열의 부분 집계를 포함한 'All' 행과 열이 추가됩니다.
- 전체 합계나 평균을 확인할 때 유용합니다.
dropna (bool, 기본값: True)
- 모든 항목이 NaN인 컬럼을 제외할지 결정합니다.
- True일 경우, NaN 값이 포함된 행은 마진 계산 전에 제외됩니다.
margins_name (str, 기본값: 'All')
- margins=True일 때 합계 행/열의 이름을 지정합니다.
observed (bool, 기본값: False)
- 범주형 데이터에만 적용됩니다.
- True: 관찰된 범주 값만 표시
- False: 모든 범주 값 표시
- 주의: 2.2.0 버전부터 기본값이 True로 변경될 예정입니다.
sort (bool, 기본값: True)
- 결과를 정렬할지 여부를 지정합니다.
4. 실제 사용 예시
[기본 사용법]
import pandas as pd
# 샘플 데이터
data = {
'지역': ['서울', '서울', '부산', '부산', '대구', '대구'],
'제품': ['A', 'B', 'A', 'B', 'A', 'B'],
'매출': [100, 150, 80, 120, 90, 110],
'수량': [10, 15, 8, 12, 9, 11]
}
df = pd.DataFrame(data)
# 기본 피벗 테이블
pivot = pd.pivot_table(df, values='매출', index='지역', columns='제품')
결과

[다중 집계 함수 사용]
# 여러 집계 함수 적용
pivot_multi = pd.pivot_table(df, values='매출', index='지역', columns='제품',
aggfunc=['mean', 'sum'])
결과

[마진(합계) 포함]
# 합계 행/열 포함
pivot_margins = pd.pivot_table(df, values='매출', index='지역', columns='제품',
margins=True, margins_name='전체')
결과

5. 주요 특징
- 계층적 인덱스 지원 : 피벗 테이블의 결과는 MultiIndex 객체를 사용하여 계층적 구조를 지원합니다. 이를 통해 복잡한 데이터 구조를 효과적으로 표현할 수 있습니다.
- 유연한 집계 : 다양한 집계 함수를 사용할 수 있으며, 열별로 서로 다른 집계 함수를 적용할 수도 있습니다.
- 결측값 처리 : fill_value 매개변수를 통해 결측값을 원하는 값으로 대체할 수 있어 데이터 분석 시 편의성을 제공합니다.
6. 활용 팁
- 대용량 데이터 처리: 큰 데이터셋의 경우 필요한 열만 values로 지정하여 성능을 향상시킬 수 있습니다.
- 범주형 데이터: observed=True를 사용하여 실제 존재하는 범주만 표시하면 더 깔끔한 결과를 얻을 수 있습니다.
- 다중 분석: 여러 집계 함수를 동시에 사용하여 한 번에 다양한 통계치를 확인할 수 있습니다.
7. 결론
pivot_table은 pandas의 핵심 기능 중 하나로, 복잡한 데이터 분석 작업을 간단하게 만들어줍니다. 다양한 매개변수를 조합하여 원하는 형태의 요약 테이블을 생성할 수 있으며, 데이터 탐색과 분석에 매우 유용한 도구입니다.
Reference : https://pandas.pydata.org/docs/reference/api/pandas.pivot_table.html
반응형
'자격증공부 > 빅데이터분석기사 실기' 카테고리의 다른 글
| [Pandas] loc vs iloc: 헷갈리지 말고 정확히 사용하기 (1) | 2025.06.20 |
|---|---|
| [Pandas] idxmax() 결과 변환의 숨겨진 이유 (1) | 2025.06.18 |