📅  最后修改于: 2023-12-03 14:52:28.306000             🧑  作者: Mango
pandas 是一个流行的、高性能的数据分析库,它提供了许多方便的函数来处理数据。数据透视表是一种非常常见的数据分析工具,它可以快速汇总数据并显示各种统计数据。在本文中,我们将介绍如何在 pandas 的数据透视表中包含百分比。
首先,我们需要创建一些数据来演示如何在 pandas 的数据透视表中包含百分比。以下是一个简单的示例:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'] * 2,
'gender': ['Female', 'Male'] * 5,
'age': [25, 30, 35, 40, 45] * 2,
'salary': [5000, 5500, 6000, 6500, 7000] * 2
}
df = pd.DataFrame(data)
print(df.head(10))
输出:
name gender age salary
0 Alice Female 25 5000
1 Bob Male 30 5500
2 Charlie Female 35 6000
3 David Male 40 6500
4 Eva Female 45 7000
5 Alice Male 25 5000
6 Bob Female 30 5500
7 Charlie Male 35 6000
8 David Female 40 6500
9 Eva Male 45 7000
我们的数据包括五个人的姓名、性别、年龄和工资。我们创建两个相同的数据记录,这样我们可以在后面的数据透视表中进行分组和计算。
现在我们可以创建一个数据透视表来分析我们的数据。以下是一个示例:
pivot_table = pd.pivot_table(df, values='salary', index=['gender', 'age'], aggfunc=[np.mean, np.sum])
print(pivot_table)
输出:
mean sum
salary salary
gender age
Female 25 5000.0 5000
35 6000.0 12000
45 7000.0 14000
Male 30 5500.0 11000
35 6000.0 12000
40 6500.0 13000
45 7000.0 14000
我们使用 pd.pivot_table()
函数创建了一个数据透视表。我们指定 'salary' 作为值列,'gender' 和 'age' 作为索引列。我们还指定了两个汇总函数 - np.mean
和 np.sum
,用于计算工资的平均值和总和。
现在,我们想要在数据透视表中包含每个组的百分比。这可以通过使用 lambda
函数和 apply()
方法实现。
首先,我们需要使用 pd.pivot_table()
函数如上创建数据透视表:
pivot_table = pd.pivot_table(df, values='salary', index=['gender', 'age'], aggfunc=[np.mean, np.sum])
然后,我们可以创建一个新的列 'percent',并将每个组的百分比计算为该组的工资总和占所有工资总和的比例:
total_sum = pivot_table[('sum', 'salary')].sum()
pivot_table['percent'] = pivot_table.apply(lambda x: x[('sum', 'salary')] / total_sum, axis=1)
print(pivot_table)
输出:
mean sum percent
salary salary
gender age
Female 25 5000.0 5000 0.045455
35 6000.0 12000 0.109091
45 7000.0 14000 0.127273
Male 30 5500.0 11000 0.100000
35 6000.0 12000 0.109091
40 6500.0 13000 0.118182
45 7000.0 14000 0.127273
在上面的代码中,我们首先计算了所有工资的总和。然后,我们使用 apply()
方法将 lambda
函数应用于数据透视表的每一行。对于每一行,lambda
函数计算该组工资总和占所有工资总和的比例,并将其保存在新创建的 'percent' 列中。
在本文中,我们介绍了如何在 pandas 的数据透视表中包含百分比。我们使用 pd.pivot_table()
函数创建了一个数据透视表,并使用 lambda
函数和 apply()
方法计算了每个组的工资总和占所有工资总和的比例。这可以帮助我们更好地了解数据集,并找到有用的统计信息。