计算数据框熊猫中所有联盟的百分比

Posted

技术标签:

【中文标题】计算数据框熊猫中所有联盟的百分比【英文标题】:Calculate percentage of all alliances in year in dataframe pandas 【发布时间】:2021-10-17 19:18:39 【问题描述】:

我有看起来像的数据框(实际框架的年份从 1990 年到 2020 年):

Year Chains_Normalize Alliance_Name
1990 0.000 Gaint Inc
1990 0.000 Kell Inc
1990 0.000 New Corp
1991 13.222 Sad Corp
1991 18.152 Second Corp
1991 16.333 Shin Inc
1992 19.212 No inc
1992 0.000 Third inc
1992 14.332 Fourth inc

如果Chains_Normalize不为0,我必须计算每年的联盟百分比。(这个想法是计算数据帧中所有联盟的百分比包括每年)

结果将如下所示:

Year  Percentage
1990  0.000
1991  33.333
1992  22.222

1990年联盟全为零,百分比为0。

1991 年有 3 个非零联盟和 (3/9)*100 = 33.333

1992 年有 2 个非零联盟和 (2/9)*100 = 22.222

【问题讨论】:

【参考方案1】:

只需计算每年的非零值,然后除以 df 的长度并乘以 100(您已经使用 (N/9)*100 手动完成):

>>> df['Chains_Normalize'].ne(0).groupby(df['Year']).sum() / len(df) * 100
Year
1990     0.000000
1991    33.333333
1992    22.222222
Name: Chains_Normalize, dtype: float64

这是有效的,因为df['Chains_Normalize'].ne(0) 返回一系列布尔值,其中联盟非零,然后您可以对其求和:

>>> df['Chains_Normalize'].ne(0)
0    False
1    False
2    False
3     True
4     True
5     True
6     True
7    False
8     True
Name: Chains_Normalize, dtype: bool

【讨论】:

以上是关于计算数据框熊猫中所有联盟的百分比的主要内容,如果未能解决你的问题,请参考以下文章

熊猫计算唯一值并更改为百分比并放入绘图条形图中

对多个熊猫列进行排序并计算大于零的值百分比

如何获得熊猫数据框中一行的百分位数?

使用百分位数从熊猫数据框中删除异常值

熊猫如何在数据框的相应列检查行的每个元素的百分位数

熊猫在其中获得价值百分位