Pandas:如何创建带有百分比的数据透视表


您可以使用以下语法将列添加到 pandas 中的数据透视表,以显示特定列的总计百分比:

 my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100

这种特殊的语法将一个名为% 点的新列添加到名为my_table的数据透视表中,该表显示列中总值的百分比。

以下示例展示了如何在实践中使用此语法。

示例:创建带有百分比的 Pandas 数据透视表

假设我们有以下 pandas DataFrame,显示不同篮球运动员的得分:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['Guard', 'Guard', 'Forward', 'Forward',
                                'Guard', 'Guard', 'Forward', 'Forward'],
                   ' points ': [22, 30, 14, 15, 19, 30, 23, 20]})

#view DataFrame
print (df)

  team position points
0 A Guard 22
1A Guard 30
2 A Forward 14
3 A Forward 15
4 B Guard 19
5 B Guard 30
6 B Forward 23
7 B Forward 20

我们可以使用pivot_table()函数创建一个数据透视表,显示按球队和位置划分的得分总和:

 #create pivot table to calculate sum of points by team and position
my_table = pd. pivot_table (df, index=[' team ', ' position '], aggfunc=' sum ')

#view pivot table
print (my_table)

               points
team position        
A Forward 29
     Guard 52
B Forward 43
     Guard 49

从结果我们可以看出:

  • A队的攻击手总共得到29分。
  • A队后卫一共得到52分。
  • B队的攻击手总共得到43分。
  • B队后卫一共得到49分。

然后,我们可以使用以下语法添加一个名为% points的新列,该列显示每行总分的百分比:

 #add column that displays points as a percentage of total points
my_table[' % points '] = (my_table[' points ']/my_table[' points ']. sum ())* 100

#view updated pivot table
print (my_table)

               points % points
team position                   
A Forward 29 16.763006
     Guard 52 30.057803
B Forward 43 24.855491
     Guard 49 28.323699

新的“% Points”列现在将分值显示为总分的百分比。

另请注意,您可以使用round()函数将百分比值四舍五入到一定的小数位数。

 #add column that displays points as a percentage of total points (rounded)
my_table[' % points '] = round ((my_table[' points ']/my_table[' points ']. sum ())* 100 , 2 )

#view updated pivot table
print (my_table)

               points % points
team position                  
A Forward 29 16.76
     Guard 52 30.06
B Forward 43 24.86
     Guard 49 28.32

百分比值现在四舍五入到小数点后两位。

注意:您可以在此处找到 pandas hub_table()函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

Pandas:如何向数据透视表添加过滤器
Pandas:如何按列中的值对数据透视表进行排序
Pandas:如何创建包含值总和的数据透视表

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注