Pandas:如何创建带有数值之和的透视表

219 阅读2分钟

你可以使用下面的基本语法在pandas中创建一个透视表,显示某些列的数值之和。

pd.pivot_table(df, values='col1', index='col2', columns='col3', aggfunc='sum')

下面的例子展示了如何在实践中使用这种语法。

例子:创建带有数值之和的潘达斯透视表

假设我们有如下的pandas数据框架,其中包含各种篮球运动员的信息。

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

下面的代码显示了如何在pandas中创建一个透视表,显示DataFrame中每个 "球队 "和 "位置 "的 "得分 "值之和。

#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

从输出结果中我们可以看到:

  • 位于F位置的A队球员共得14
  • 位于G位置的A队球员共得8
  • 在F位置的B队球员共得22
  • 处于G位置的B队球员共得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

现在透视表显示的是行和和列和。

:你可以在这里找到pandas**pivot_table()**函数的完整文档。

其他资源

下面的教程解释了如何在pandas中执行其他常见操作。

Pandas:如何将数据框架从长形重塑为宽形
Pandas:如何将数据框架从宽形重塑为长形
Pandas:如何通过多列进行分组和聚合