본문 바로가기
ChatGPT 아카이브/Pandas

pivot vs pivot_table 차이점

by Nanki 2025. 3. 5.

Pandas의 pivot() 함수 정리

함수 이름 pandas.DataFrame.pivot()
역할 데이터를 특정 열(column) 값을 기준으로 재구성(재배열)
왜 사용? 긴 형태의 데이터(멀티 인덱스 형태)를 넓은 형태(행렬 형태)로 변환할 때 유용
어떻게 동작? index, columns, values를 지정하여 새로운 형태의 데이터프레임 생성
기본 문법 df.pivot(index='행으로 설정할 열', columns='열로 설정할 열', values='값')
제약 조건 같은 (index, columns) 조합에 중복된 값이 없어야 함 (pivot_table()은 가능)

 

🚀 결론

pivot()은 데이터를 행(index), 열(columns), 값(values)을 기준으로 재구성
긴 형태(Long Format) → 넓은 형태(Wide Format) 변환할 때 유용
동일한 (index, columns) 조합에 중복 데이터가 있으면 pivot()이 오류 발생 (pivot_table()을 사용하면 해결 가능)
시계열 데이터나 그룹별 데이터를 쉽게 분석할 때 사용 🚀

 

import pandas as pd

df = pd.DataFrame({
    'date': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02'],
    'city': ['Seoul', 'Busan', 'Seoul', 'Busan'],
    'temperature': [5, 8, 3, 7]
})

print(df)
         date   city  temperature
0  2024-01-01  Seoul            5
1  2024-01-01  Busan            8
2  2024-01-02  Seoul            3
3  2024-01-02  Busan            7

 

df_pivot = df.pivot(index='date', columns='city', values='temperature')
print(df_pivot)
city        Busan  Seoul
date                    
2024-01-01      8      5
2024-01-02      7      3

 

📌 pivot() vs pivot_table() 차이점

 

  함수중복 값 처리 가능 여부 집계 함수 (aggfunc) 사용 가능 여부
pivot() ❌ 중복 값이 있으면 오류 발생 ❌ 지원하지 않음
pivot_table() ✅ 자동으로 집계 (기본 평균) ✅ aggfunc 옵션으로 변경 가능

📌 여러 가지 집계 함수 적용 가능 (aggfunc)

df_pivot_table_sum = df.pivot_table(index='date', columns='city', values='temperature', aggfunc='sum')
df_pivot_table_max = df.pivot_table(index='date', columns='city', values='temperature', aggfunc='max')
df_pivot_table_count = df.pivot_table(index='date', columns='city', values='temperature', aggfunc='count')

✅ aggfunc='sum' → 합계
✅ aggfunc='max' → 최대값
✅ aggfunc='count' → 데이터 개수

 

Pandas pivot_table() 정리

구분설명

함수 이름 pandas.DataFrame.pivot_table()
역할 데이터를 재구성하면서, 같은 값이 중복될 경우 집계 함수(aggfunc)를 적용하여 요약
왜 사용? pivot()과 달리, 중복되는 값이 있을 때 평균, 합계 등 집계 가능
어떻게 동작? index, columns, values를 지정하고 aggfunc로 원하는 집계 방식을 선택
기본 문법 df.pivot_table(index='행으로 설정할 열', columns='열로 설정할 열', values='값', aggfunc='집계함수')
집계 함수 (aggfunc) 기본값 = 평균(mean), sum, count, max, min 등 선택 가능
NaN 처리 옵션 (fill_value) fill_value=0 → NaN을 특정 값(예: 0)으로 채움

pivot_table() 사용 (평균값 집계)

 
city        Busan  Seoul
date                    
2024-01-01      9      5  # (8+10) / 2 = 9
2024-01-02      7      3

🔹 출력 결과 (aggfunc='mean', 중복된 값 평균 처리)

 
city Busan Seoul date 2024-01-01 9 5 # (8+10) / 2 = 9 2024-01-02 7 3

➡ Busan (2024-01-01)의 값 [8, 10]이 평균((8+10)/2 = 9)으로 변환됨 ✅

 

 

 

🚀 결론

pivot()은 집계 함수를 지원하지 않음 → 중복 데이터가 있으면 오류 발생
pivot_table()은 aggfunc 옵션을 통해 다양한 집계 함수 적용 가능
중복된 데이터를 평균(mean), 합(sum), 최대(max), 개수(count) 등으로 처리 가능
데이터 분석에서 집계 처리가 필요할 경우 pivot_table()을 적극 활용! 🚀

반응형