如何用Python pandas按多维度生成分数频率与占比统计表
实现代码及说明
- 原代码存在两个问题:一是谷歌云盘的共享预览链接无法直接被pandas读取,需转换为导出链接;二是仅按两个维度分组且未计算占比字段,不符合需求。
- 完整可运行实现如下:
import pandas as pd # 转换谷歌云盘链接为可直接读取的csv导出链接 df = pd.read_csv('https://drive.google.com/uc?id=1pL8fHCc25-XRBYgj9n6NdRt5VHrIr-p1', sep=',') # 按Containe、Class、score三个维度分组统计频次 result = df.groupby(['Containe', 'Class', 'score'], as_index=False).agg(频次=('score', 'count')) # 计算全局占比,按需求保留2位小数 total_count = len(df) result['占比(%)'] = round(result['频次'] / total_count * 100, 2) # 若需计算每个Containe+Class分组内的占比,替换上一行占比计算逻辑即可 # result['组内占比(%)'] = result.groupby(['Containe', 'Class'])['频次'].transform(lambda x: round(x/x.sum()*100, 2)) # 输出结果 print(result)
- 若需要生成交叉表样式的展示结果,可额外增加透视操作:
# 以Class为行、Containe为列生成透视表 pivot_result = result.pivot_table( index='Class', columns='Containe', values=['频次', '占比(%)'], aggfunc='sum' ) print(pivot_result)
内容的提问来源于stack exchange,提问作者MARCOS SANTOS
相关产品推荐
相关产品推荐

