[Python 데이터 분석] 파이썬 판다스 피벗 테이블(Python Pandas Pivot Table)
| 판다스 피벗 테이블(Pandas Pivot Table)
판다스에서는 DataFrame의 피벗 테이블(Pivot Table)을 만들 수 있는 기능을 제공한다. 아래 코드는 판다스를 통해 피벗 테이블을 어떻게 만들 수 있는지를 알아 볼 수 있는 예제들이다.
import pandas as pd
import numpy as np
df = pd.read_csv('cars.csv')
print(df.head())
'''
YEAR Make Model ... RATING (km) TIME (h)
0 2012 MITSUBISHI i-MiEV ... NaN 100 7
1 2012 NISSAN LEAF ... NaN 117 7
2 2013 FORD FOCUS ELECTRIC ... NaN 122 4
3 2013 MITSUBISHI i-MiEV ... NaN 100 7
4 2013 NISSAN LEAF ... NaN 117 7
'''
print(df.columns)
'''
Index(['YEAR', 'Make', 'Model', 'Size', '(kW)', 'Unnamed: 5', 'TYPE',
'CITY (kWh/100 km)', 'HWY (kWh/100 km)', 'COMB (kWh/100 km)',
'CITY (Le/100 km)', 'HWY (Le/100 km)', 'COMB (Le/100 km)', '(g/km)',
'RATING', '(km)', 'TIME (h)'],
dtype='object')
'''
# Year와 Make를 기준으로 (kW) 컬럼의 평균값을 구한다.
# 그 다음 피벗 테이블을 만드는 데 index(행) = YEAR, column(열) = Make 로 한다.
pivot = df.pivot_table(values='(kW)', index='YEAR', columns='Make', aggfunc=np.mean)
print(pivot)
'''
Make BMW CHEVROLET FORD ... NISSAN SMART TESLA
YEAR ...
2012 NaN NaN NaN ... 80.0 NaN NaN
2013 NaN NaN 107.0 ... 80.0 35.0 280.000000
2014 NaN 104.0 107.0 ... 80.0 35.0 268.333333
2015 125.0 104.0 107.0 ... 80.0 35.0 320.666667
2016 125.0 104.0 107.0 ... 80.0 35.0 409.700000
[5 rows x 8 columns]
'''
# aggfunc를 두 개 이상 적용할 수 있다.
# margin의 의미는 모든 값을 합산한 값을 보여주는 인덱스를 생성할 지를 결정하는 인자다.
pivot = df.pivot_table(values='(kW)', index='YEAR', columns='Make', aggfunc=[np.mean, np.min], margins=True)