基于多列绘制100%堆叠柱状图的概率占比计算问题
概率占比计算方案
第一步:按
Category分组对概率列求和
提取p0到p3列,按Category分组求和,得到每个类别下各概率的总和:prob_sum = df.groupby('Category')[['p0', 'p1', 'p2', 'p3']].sum()第二步:转换为行总和的百分比
计算每个分组行的总概率和,再将每个概率值除以该行总和并乘以100,得到占比(可按需保留小数位数):# 计算每行的总概率和 row_totals = prob_sum.sum(axis=1) # 转换为百分比并保留两位小数 prob_percent = prob_sum.div(row_totals, axis=0).round(2) * 100也可以用更简洁的
apply写法:prob_percent = df.groupby('Category')[['p0', 'p1', 'p2', 'p3']].sum().apply(lambda x: x/x.sum()*100, axis=1).round(2)
处理后的数据中,每个Category对应的p0-p3值都是该类别下所有概率总和的占比,每行数值和为100%,完全满足堆叠柱状图的100%堆叠要求。
内容的提问来源于stack exchange,提问作者amestrian
相关产品推荐
相关产品推荐

