大熊猫分类变量的百分比计数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大熊猫分类变量的百分比计数相关的知识,希望对你有一定的参考价值。

我有一只像熊猫一样的熊猫

df_test = pd.DataFrame({'A': 'a a a b b'.split(), 'B': ['Y','N','Y','Y','N']})

我想要的输出是df_test2 = pd.DataFrame({'A': 'a b'.split(), 'B': [2/3,1/2]})你怎么做groupby()。用A列申请得到B栏中'Y'的百分比?

我一直在搜索groupby.apply()但到目前为止没有任何工作谢谢!

答案

一种方法可能是

In [10]: df_test.groupby('A').B.apply(lambda x: (x == 'Y').mean())
Out[10]:
A
a    0.666667
b    0.500000

或者,如果你不介意在这个过程中改变df_test

In [15]: df_test['C'] = df_test.B == 'Y'
In [17]: df_test.groupby('A').C.mean()
Out[17]:
A
a    0.666667
b    0.500000
Name: C, dtype: float64
另一答案

使用带有布尔掩码的GroupBy.mean,其中Trues是像1这样的过程,不需要新列,因为也是将Series df_test["A"]传递给groupby

注意:

相反,==使用eq更清晰的语法。

df = df_test["B"].eq('Y').groupby(df_test["A"]).mean().reset_index()
print (df)
   A         B
0  a  0.666667
1  b  0.500000

以上是关于大熊猫分类变量的百分比计数的主要内容,如果未能解决你的问题,请参考以下文章

Xcode中的变量模板(variable template)的用法

大熊猫是否表现出错误的百分位数?

给定一个代表值频率的熊猫系列,我如何将这些频率转换为百分比?

如何创建具有 1 个自变量和 3 个因变量的计数和百分比表和折线图

字典列操作计数器

如何将计数总结为百分比而不是绝对值?