code_module final_result
AAA Distinction 44
Fail 91
Pass 487
Withdrawn 126
这是PYTHON CODE的结果
studentInfo.groupby(['code_module','final_result']).agg({'code_module':[np.size]})
我想从总数中计算每个final_result的百分比
数学是AAA.pass / AAA.total
总数是上述所有数字的总和。
最佳答案
我相信您需要使用参数SeriesGroupBy.value_counts
的normalize
:
s1 = studentInfo.groupby('code_module')['final_result'].value_counts(normalize=True)
print (s1)
code_module final_result
AAA Pass 0.651070
Withdrawn 0.168449
Fail 0.121658
Distinction 0.058824
Name: final_result, dtype: float64
或按
DataFrameGroupBy.size
的每个第一级用sum
除以MultiIndex
来简化解决方案s = studentInfo.groupby(['code_module','final_result']).size()
s2 = s.div(s.sum(level=0), level=0)
print (s2)
code_module final_result
AAA Distinction 0.058824
Fail 0.121658
Pass 0.651070
Withdrawn 0.168449
dtype: float64
解决方案之间的区别是
value_counts
降序返回输出Series
,以便第一个元素是最频繁出现的元素,而size
不是。