本文介紹如何使用Pandas創建透視表(交叉表)。
pd.pivot_table(df, values='col1', index='col2', columns='col3', aggfunc='sum')
下面通過示例進行說明。
首先創建示例數據:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'position': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
'points': [4, 4, 6, 8, 9, 5, 5, 12]})
#view DataFrame
print(df)
# team position points
# 0 A G 4
# 1 A G 4
# 2 A F 6
# 3 A F 8
# 4 B G 9
# 5 B F 5
# 6 B F 5
# 7 B F 12
下面創建透視表,按team和position匯總points值:
#create pivot table
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position', aggfunc='sum')
#view pivot table
print(df_pivot)
# position F G
# team
# A 14 8
# B 22 9
從輸出結果可以看到:
另外還可以通過margins參數進行透視表的邊緣計算:
#create pivot table with margins
df_pivot = pd.pivot_table(df, values='points', index='team', columns='position',
aggfunc='sum', margins=True, margins_name='Sum')
#view pivot table
print(df_pivot)
position F G Sum
team
A 14 8 22
B 22 9 31
Sum 36 17 53
從結果可以看到分別增加行和列的求和。