我是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...
请告知。
谢谢。
答案 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