✅ 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()을 적극 활용! 🚀
반응형
'ChatGPT 아카이브 > Pandas' 카테고리의 다른 글
melt() 함수의 옵션 헛갈리지 않게 기억하기 (0) | 2025.03.05 |
---|---|
메서드 체이닝(Method Chaining) 파헤치기 (0) | 2025.03.05 |
concate / 축(axis) 번호 살펴보기 (0) | 2025.03.05 |
pandas rename 함수 / astype 함수 / Pandas의 View 와 Copy 반환 (0) | 2025.03.05 |
dropna() vs fillna() 비교 / NaN과 None의 차이 (0) | 2025.03.04 |