利用pandas可以根据表中的一列来进行分组,之后可以利用.mean()分组求平均,.count分组求和,但碰到了一个特殊情况需要求每组里每个数出现的频率,没有找到现成的方法,就自己写了一个。
思路:
1、先利用groupby分组;
2、遍历每个分组,得到每个组的表内容;
3、在每个分组表里利用value_counts()统计不同值的出现次数,然后利用to_dict()转换成词典(数值:出现次数);
4、计算每个组的值个数,就是求频率时要用到的总数;
5、利用每个值的次数除以总数,这里要注意一下,因为需要与表格里每个值的顺序对应,所以这里根据列中值出现的顺序来对应提取词典里的出现次数,然后做成一个list。
6、遍历求频率;
原始表:
根据A分组,对分组后的C求频率,例如A的值分为1和2,当A=1时,C的值有1,4,1,2四个;当A=2时,C的值有4,4,1,3四个,这样在A=1时,C=1出现的频数C_count=2,C=1的频率C_freq=2/4=0.5: