利用Pandas生成的数据透视表,我们可以方便地对数据进行分组、统计和分析。其中,包括了对每组数据的计数、求和等操作,但也可以计算每组数据的百分比。
下面是如何在 Pandas 的数据透视表中包含百分比的步骤:
使用 Pandas 的 pivot_table 函数,可以快速创建数据透视表。在这里我们需要至少两个参数:
举个例子,若我们有如下数据集:
姓名 | 性别 | 年龄 | 工资 |
---|---|---|---|
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
使用 Pandas 的 apply 函数,可以在表格的后面增加需要的列。我们可以在原表格中新增一个百分比列,用每个性别的工资总和除以所有性别工资总和的和。
具体实现如下:
table['百分比'] = table.apply(lambda x: x / x.sum() * 100)
此时,table 的结果为:
工资 百分比
性别
女 4000 53.333333
男 3500 46.666667
最后,我们可以使用 Pandas 的 style.format 函数,调整输出格式。比如,将百分数保留两位小数:
table.style.format({'百分比': '{:.2f}%'})
此时,table 的结果为:
工资 百分比
性别
女 4000 53.33%
男 3500 46.67%
通过以上步骤,我们成功在 Pandas 的数据透视表中包含了百分比,并格式化输出。
本文链接:http://task.lmcjl.com/news/17269.html