如何获取同一表中不同类别的布尔值的比例

时间:2019-05-10 03:44:51

标签: python pandas jupyter-notebook pandas-groupby

我是python的新手,这是我所修课程的一部分。我应该找到一个值A比例最高的组(有10个以上的组)(它是布尔值-仅A或B)。

我尝试查找每个组的值总数以及每个组的A和B计数。我希望可以编写一个简单的除法公式来获取每个组在值A中的比例,但是我很困惑。实际上,我可能甚至从一开始就没有采取正确的方法。

import numpy as np
import pandas as pd

Data = pd.read_csv('data.txt', header = None)

Data.head()
0  Group  Value
1   1       A
2   1       A
3   1       B
4   3       A
5   3       B 
6   2       A
7   2       B
8   2       A
9   2       A
10  4       B

Data.groupby('Group')['Value'].size()
# to get the total number of values applicable

Data.groupby(['Group', 'Value']).size()
# to get the count of rows for each Value (A and B only) for each Group (10+ groups) 

如果我的解释不够清楚,请原谅。如果需要,我会尽力解决。我希望学习如何获取每个组的值A的百分比。

例如。

    Group1 61% (or 0.61)
    Group2 54%
    Group3 49$ and so on...

请告知。

谢谢。

1 个答案:

答案 0 :(得分:0)

类似的事情可以完成工作(我现在看起来不漂亮)

for group in [1,2,3,4]:
    if 'A' in Data.loc[Data['Group'] == group].groupby(['Value']).count().index:
       proportion = (Data.loc[Data['Group'] == group].groupby(['Value']).count()/
                    Data.loc[Data['Group'] == group].count()).loc['A','Group']
       print('Group'+ str(group) + ' ' + str(proportion))
    else:
        print('Group'+ str(group) + ' ' + str(0))


Group1 0.6666666666666666
Group2 1.0
Group3 0.3333333333333333
Group4 0