판다스 (Pandas) (Pivot Table)
2024. 8. 3. 17:32ㆍ프로그래밍 (확장)/Python-Pandas
pivot을 생성할 때 index, columns, values에 지정된 값이 유일하지 않으면 ValueError가 발생하는데 pivot_table 함수는 피벗 테이블을 만들 때 중복 값을 처리할 수 있다
기본 사용법
DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False, sort=True)
- values: 피벗 테이블에 포함될 데이터 열
- index: 행 레이블로 사용할 열
- columns: 열 레이블로 사용할 열
- aggfunc: 집계 함수 (기본값은 'mean')
- fill_value: 결측치를 대체할 값
- margins: 총계를 추가할지 여부
- margins_name: 총계 열/행의 이름 (기본값은 'All')
추가 설명
- pivot_table은 aggfunc 매개변수를 사용하여 집계 함수를 지정할 수 있다. (기본값은 mean)
- 여러 값을 피벗할 때 values 매개변수에 열 이름의 리스트를 전달할 수 있다.
- 결측치를 특정 값으로 채우려면 fill_value 매개변수를 사용.
- 총계 행/열을 추가하려면 margins 매개변수를 True로 설정하고, 총계의 이름을 지정하려면 margins_name 매개변수를 사용한다.
예시는 ChatGPT로 생성
예시 1:
데이터 프레임 생성
import pandas as pd
# 중복 데이터를 포함한 DataFrame 생성
data = {
'Date': ['2020-01-01', '2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'],
'City': ['New York', 'New York', 'Los Angeles', 'New York', 'Los Angeles'],
'Temperature': [30, 32, 25, 35, 28],
'Humidity': [80, 85, 70, 75, 65]
}
df = pd.DataFrame(data)
print(df)
Date City Temperature Humidity
0 2020-01-01 New York 30 80
1 2020-01-01 New York 32 85
2 2020-01-01 Los Angeles 25 70
3 2020-01-02 New York 35 75
4 2020-01-02 Los Angeles 28 65
pivot_table 함수로 생성
# 중복 값을 평균으로 집계하여 피벗 테이블 생성
pivot_table = df.pivot_table(values='Temperature', index='Date', columns='City', aggfunc='mean')
print(pivot_table)
City Los Angeles New York
Date
2020-01-01 25.0 31.0
2020-01-02 28.0 35.0
위에서 같은 Date에 같은 City인 값을은 mean(평균)값으로 계산되어 value가 채워져 있는 것을 확인 할 수 있다.
예시 2:
기본 피벗 테이블
import pandas as pd
# 데이터 생성
data = {
'Date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'],
'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles'],
'Temperature': [30, 25, 35, 28],
'Humidity': [80, 70, 75, 65]
}
df = pd.DataFrame(data)
print(df)
Date City Temperature Humidity
0 2020-01-01 New York 30 80
1 2020-01-01 Los Angeles 25 70
2 2020-01-02 New York 35 75
3 2020-01-02 Los Angeles 28 65
피벗 테이블 생성
pivot_table = df.pivot_table(values='Temperature', index='Date', columns='City')
print(pivot_table)
City Los Angeles New York
Date
2020-01-01 25.0 30.0
2020-01-02 28.0 35.0
예시 3:
여러 값 피벗 테이블
pivot_table = df.pivot_table(values=['Temperature', 'Humidity'], index='Date', columns='City')
print(pivot_table)
Humidity Temperature
City Los Angeles New York Los Angeles New York
Date
2020-01-01 70.0 80.0 25.0 30.0
2020-01-02 65.0 75.0 28.0 35.0
예시 4:
집계 함수 설정
pivot_table = df.pivot_table(values='Temperature', index='Date', columns='City', aggfunc=['mean', 'max', 'min'])
print(pivot_table)
mean max min
City Los Angeles New York Los Angeles New York Los Angeles New York
Date
2020-01-01 25.0 30.0 25 30 25 30
2020-01-02 28.0 35.0 28 35 28 35
예시 5:
걸측치 처리
pivot_table = df.pivot_table(values='Temperature', index='Date', columns='City', fill_value=0)
print(pivot_table)
City Los Angeles New York
Date
2020-01-01 25.0 30.0
2020-01-02 28.0 35.0
예시 6:
총계 행/열 추가
pivot_table = df.pivot_table(values='Temperature', index='Date', columns='City', margins=True, margins_name='Total')
print(pivot_table)
City Los Angeles New York Total
Date
2020-01-01 25.0 30.0 27.5
2020-01-02 28.0 35.0 31.5
Total 26.5 32.5 29.5
예시 7:
여러 인덱스와 컬럼을 사용한 피벗 테이블
data = {
'Date': ['2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02'],
'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles'],
'Weather': ['Sunny', 'Sunny', 'Rainy', 'Cloudy'],
'Temperature': [30, 25, 35, 28]
}
df = pd.DataFrame(data)
print(df)
Date City Weather Temperature
0 2020-01-01 New York Sunny 30
1 2020-01-01 Los Angeles Sunny 25
2 2020-01-02 New York Rainy 35
3 2020-01-02 Los Angeles Cloudy 28
pivot_table = df.pivot_table(values='Temperature', index=['Date', 'Weather'], columns='City')
print(pivot_table)
City Los Angeles New York
Date Weather
2020-01-01 Sunny 25.0 30.0
2020-01-02 Cloudy 28.0 NaN
Rainy NaN 35.0
참고: https://pandas.pydata.org/docs/
pandas documentation — pandas 2.2.2 documentation
API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.
pandas.pydata.org
'프로그래밍 (확장) > Python-Pandas' 카테고리의 다른 글
Pandas - 2. 데이터 구조 (0) | 2025.01.24 |
---|---|
Pandas - 1. 소개와 설치 (0) | 2025.01.24 |
판다스 (Pandas) (GroupBy) (0) | 2024.08.03 |
판다스 (Pandas) (Pivot) (0) | 2024.08.03 |
판다스 (Pandas) (데이터 정제) (0) | 2024.08.03 |