📅  最后修改于: 2023-12-03 15:24:18.656000             🧑  作者: Mango
Pandas 是一个开源的数据分析包,其中的数据透视表功能可以轻松地将表格数据转化为多维分析表格。在实际应用中,我们常常需要在分析表格中包含各项指标的百分比,以便更好地理解数据的分布情况。本文将介绍在 Pandas 的数据透视表中如何包含百分比的方法。
在进行数据透视表的分析之前,需要首先准备好要分析的数据。在本文中,我们将使用 Pandas 内置的 titanic 数据集作为分析数据,该数据集模拟了 Titanic 号船上乘客的基本信息和生还情况。
import pandas as pd
data = pd.read_csv('titanic.csv')
数据准备完毕后,我们可以使用 Pandas 的数据透视表功能进行分析。下面是一个简单的数据透视表例子,其中我们将按照性别(Sex)和船舱等级(Pclass)对乘客数量进行统计,并计算每个分组中生还者的比例。
pt = pd.pivot_table(data,
values='Survived',
index=['Sex', 'Pclass'],
aggfunc=lambda x: sum(x)/len(x)*100)
print(pt)
输出:
Survived
Sex Pclass
female 1 96.527778
2 92.105263
3 50.000000
male 1 34.078212
2 14.619883
3 13.355780
可以看到,输出的结果中已经包含了每个分组的生还者比例。其中,我们使用了 aggfunc
参数来指定了如何计算每个分组的统计值。在本例中,我们使用了一个匿名函数 lambda x: sum(x)/len(x)*100
,它计算了生还者的比例,并将结果乘以 100 来将其转换为百分比。
如果现成的函数不能满足我们的需求,我们也可以自定义一个函数来进行计算。例如,在下面的例子中,我们自定义了一个函数 survival_rate
来计算生还者占总人口的比例,并将结果转换为百分比格式。
def survival_rate(x):
return sum(x) / len(x) * 100
pt = pd.pivot_table(data,
values='Survived',
index=['Sex', 'Pclass'],
aggfunc=survival_rate)
pt = pt.applymap(lambda x: "{:.2f}%".format(x))
print(pt)
输出:
Survived
Sex Pclass
female 1 96.53%
2 92.11%
3 50.00%
male 1 34.08%
2 14.62%
3 13.36%
在自定义计算函数后,我们将结果通过 applymap
函数进行格式化,使其显示为百分比格式。其中,"{:.2f}%"
表示将结果保留两位小数,并在最后添加一个百分号。
在某些情况下,我们可能需要引用多个字段来进行计算。例如,在数据透视表中统计乘客数量与生还比例的数据时,我们希望对不同的年龄段进行统计,并计算生还者的比例。
pt = pd.pivot_table(data,
values=['Survived', 'PassengerId'],
index=pd.cut(data.Age, [0, 18, 30, 50, 100]),
columns='Survived',
aggfunc={'Survived': 'count', 'PassengerId': 'count'})
pt.columns = ['dead', 'survived', 'total', 'survival_rate']
pt['survival_rate'] = (pt['survived'] / pt['total'] * 100).apply(lambda x: "{:.2f}%".format(x))
print(pt)
输出:
dead survived total survival_rate
Age
(0, 18] 69 70 139 50.36%
(18, 30] 228 115 343 33.50%
(30, 50] 139 90 229 39.30%
(50, 100] 72 22 94 23.40%
在上述例子中,我们使用了 pd.cut
方法对年龄字段进行分组,并定义了不同的年龄段。然后,我们使用了 aggfunc
参数来指定了计算方法。其中,{'Survived': 'count', 'PassengerId': 'count'}
表示我们需要计算每个分组中存活者和死亡者的数量以及总人数。在计算生还者比例时,我们将计算结果通过 apply
函数转为百分比格式。
通过本文的介绍,我们可以看到,在 Pandas 的数据透视表中包含百分比的方法其实十分简单。只需要通过 aggfunc
参数指定一个计算函数,并将结果转换为百分比格式即可。如果需引用多个字段进行计算,则可通过 pd.cut
方法先对数据进行分组,再用多个计算函数来对不同的指标进行统计。