Pandas创建透视表教程
本文介绍如何使用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
从输出结果可以看到:
- A组F位置运动员总分为14
- A组G位置运动员总分为8
- B组F位置运动员总分为22
- B组G位置运动员总分为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
从结果可以看到分别增加行和列的求和。