首先,建议在sql中完成groupby操作,获取小分组的数量 count(distinct id),
后续,在python环境中,有2中解决方法。
第一种解决方法:使用transform + piovt进行处理, 使用tranform对原始数据,获取该小组在大组中的占比情况,最后使用pivot_table汇总到大组维度。该方案的主要缺点为,多个维度比较的时候, 需要前置tranform和后置pivot_table代码中的参数保持同步。
第二种解决方法:使用pivot+apply进行处理,使用pivot_table进行横向纵向的统计,而后 apply可以进行,横向或者纵向的汇总,包括计算占比的工作。
```
aggfunc='size').apply(lambda x:x*100/sum(x),axis=1 or 0)
```
综上,建议使用第二种方案,只需要改变最后的apply参数即可得到想要的结果。