Pandas Pivot Table 활용 (pivot_table())
데이터 분석을 진행하다 보면 데이터를 요약하고 집계해야 하는 경우가 많습니다. Pandas의 pivot_table()
함수는 이러한 데이터 요약을 편리하게 수행할 수 있도록 도와주는 강력한 도구입니다. 이번 포스팅에서는 pivot_table()
의 개념과 활용법을 예제와 함께 살펴보겠습니다.
1. Pivot Table이란?
Pivot Table(피벗 테이블)은 특정 기준에 따라 데이터를 그룹화하고, 해당 그룹의 값을 집계하여 요약된 형태로 보여주는 테이블입니다. pivot_table()
함수는 다음과 같은 기능을 제공합니다.
- 데이터를 그룹화하여 요약
- 여러 개의 집계 함수를 적용 가능
- 멀티 인덱스를 활용한 다차원 분석 가능
Pandas에서 제공하는 pivot_table()
함수의 기본 문법은 다음과 같습니다.
pd.pivot_table(
data,
values=None,
index=None,
columns=None,
aggfunc='mean',
fill_value=None,
margins=False,
margins_name='All'
)
2. 기본적인 Pivot Table 사용법
예제 데이터를 생성하여 pivot_table()
의 기본적인 사용법을 살펴보겠습니다.
import pandas as pd
# 예제 데이터 생성
data = {
'날짜': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-03'],
'도시': ['서울', '부산', '서울', '부산', '서울'],
'판매량': [100, 200, 150, 250, 300],
'매출': [1000, 2000, 1500, 2500, 3000]
}
df = pd.DataFrame(data)
print(df)
위의 데이터프레임을 사용하여 도시별 평균 판매량을 구해 보겠습니다.
pivot = pd.pivot_table(df, values='판매량', index='도시', aggfunc='mean')
print(pivot)
출력 결과:
판매량
도시
부산 225.0
서울 183.3
3. 여러 개의 값과 여러 개의 집계 함수 적용하기
여러 개의 값을 동시에 요약하거나, 여러 개의 집계 함수를 적용할 수도 있습니다.
pivot = pd.pivot_table(df, values=['판매량', '매출'], index='도시', aggfunc=['mean', 'sum'])
print(pivot)
출력 결과:
mean sum
판매량 매출 판매량 매출
도시
부산 225.0 2250.0 450 4500
서울 183.3 1833.3 550 5500
4. 다중 인덱스를 활용한 피벗 테이블
날짜별, 도시별 판매량과 매출을 함께 분석하려면 여러 개의 인덱스를 사용할 수 있습니다.
pivot = pd.pivot_table(df, values=['판매량', '매출'], index=['날짜', '도시'], aggfunc='sum')
print(pivot)
출력 결과:
판매량 매출
날짜 도시
2024-01-01 부산 200 2000
서울 100 1000
2024-01-02 부산 250 2500
서울 150 1500
2024-01-03 서울 300 3000
5. 열(columns) 기준으로 피벗 테이블 만들기
열(columns
) 옵션을 사용하여 데이터를 더욱 직관적으로 정리할 수도 있습니다.
pivot = pd.pivot_table(df, values='판매량', index='날짜', columns='도시', aggfunc='sum')
print(pivot)
출력 결과:
도시 부산 서울
날짜
2024-01-01 200 100
2024-01-02 250 150
2024-01-03 NaN 300
6. 결측값 처리 (fill_value
옵션)
위의 결과를 보면 일부 값이 NaN
으로 표시됩니다. fill_value
옵션을 사용하면 결측값을 특정 값으로 채울 수 있습니다.
pivot = pd.pivot_table(df, values='판매량', index='날짜', columns='도시', aggfunc='sum', fill_value=0)
print(pivot)
출력 결과:
도시 부산 서울
날짜
2024-01-01 200 100
2024-01-02 250 150
2024-01-03 0 300
7. 전체 합계를 계산하는 margins
옵션
margins=True
옵션을 설정하면 전체 합계를 함께 계산할 수 있습니다.
pivot = pd.pivot_table(df, values='판매량', index='도시', aggfunc='sum', margins=True, margins_name='총합')
print(pivot)
출력 결과:
판매량
도시
부산 450
서울 550
총합 1000
8. 정리
Pandas의 pivot_table()
함수는 데이터를 그룹화하여 요약하는 데 유용한 기능을 제공합니다. 주요 기능은 다음과 같습니다.
- 특정 기준(
index
)으로 데이터를 그룹화하여 요약 - 여러 개의 값(
values
)을 한 번에 집계 가능 - 여러 개의 집계 함수(
aggfunc
) 적용 가능 - 결측값 처리 (
fill_value
) - 전체 합계 계산 (
margins
)
실제 데이터 분석에서는 피벗 테이블을 사용하여 데이터를 더욱 효과적으로 요약하고 패턴을 파악할 수 있습니다. 이를 활용하여 데이터 분석의 효율을 높여 보시기 바랍니다.
'Python Pandas' 카테고리의 다른 글
Pandas 내장 시각화 기능 (plot()) 활용하기 (0) | 2025.02.21 |
---|---|
Pandas 데이터 프레임 결합 - merge()와 concat() (0) | 2025.02.20 |
Pandas 그룹화(groupby()) 및 집계 함수(agg(), mean(), sum()) (0) | 2025.02.18 |
Pandas 다중 인덱스 사용 (set_index(), reset_index()) (0) | 2025.02.17 |
Pandas에서 조건부 필터링 (Conditional Filtering) (0) | 2025.02.16 |