关键词

如何在Pandas的数据透视表中包含百分比

利用Pandas生成的数据透视表,我们可以方便地对数据进行分组、统计和分析。其中,包括了对每组数据的计数、求和等操作,但也可以计算每组数据的百分比。

下面是如何在 Pandas 的数据透视表中包含百分比的步骤:

  1. 在 DataFrame 中构建数据透视表

使用 Pandas 的 pivot_table 函数,可以快速创建数据透视表。在这里我们需要至少两个参数:

  • index:需要进行分组的列;
  • values:需要进行统计的列。

举个例子,若我们有如下数据集:

姓名 性别 年龄 工资
Alice 25 1000
Bob 30 2000
Bob 27 1500
Cindy 25 1200
Cindy 30 1800

我们希望能够按照性别统计每个人的工资总和,并包含每个性别的工资总和的百分比。我们可以用下面的代码来实现数据透视表:

import pandas as pd

df = pd.DataFrame({'姓名': ['Alice', 'Bob', 'Bob', 'Cindy', 'Cindy'],
                   '性别': ['女', '男', '男', '女', '女'],
                   '年龄': [25, 30, 27, 25, 30],
                   '工资': [1000, 2000, 1500, 1200, 1800]})

table = pd.pivot_table(df, values='工资', index='性别', aggfunc=sum)

此时,table 的结果为:

     工资
性别     
女   4000
男   3500
  1. 增加百分比列

使用 Pandas 的 apply 函数,可以在表格的后面增加需要的列。我们可以在原表格中新增一个百分比列,用每个性别的工资总和除以所有性别工资总和的和。

具体实现如下:

table['百分比'] = table.apply(lambda x: x / x.sum() * 100)

此时,table 的结果为:

      工资        百分比
性别                 
女   4000  53.333333
男   3500  46.666667
  1. 可选:格式化输出

最后,我们可以使用 Pandas 的 style.format 函数,调整输出格式。比如,将百分数保留两位小数:

table.style.format({'百分比': '{:.2f}%'})

此时,table 的结果为:

      工资    百分比
性别               
女   4000  53.33%
男   3500  46.67%

通过以上步骤,我们成功在 Pandas 的数据透视表中包含了百分比,并格式化输出。

本文链接:http://task.lmcjl.com/news/17269.html

展开阅读全文