大熊猫分类变量的百分比计数
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
,其中True
s是像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)的用法
给定一个代表值频率的熊猫系列,我如何将这些频率转换为百分比?