You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas统计变量值概率并按组汇总的无循环优雅实现方案

实现代码

import pandas as pd

# 此处省略你已有的DF生成逻辑
total_rows = len(DF)

# 按group、names分组统计出现次数,计算对应概率
name_prob = DF.groupby(['group', 'names'], as_index=False).size()
name_prob['prob'] = name_prob['size'] / total_rows

# 透视转换为宽表,缺失name的概率填充为0
result = name_prob.pivot(index='group', columns='names', values='prob').fillna(0).reset_index()

# 按要求重命名字段
result.columns = ['groups', 'P_n1', 'P_n2', 'P_n3', 'P_n4']

# 计算分组总概率
result['P_total'] = result[['P_n1', 'P_n2', 'P_n3', 'P_n4']].sum(axis=1)

print(result)

输出结果示例

groups      P_n1      P_n2      P_n3      P_n4   P_total
0     A1  0.142857  0.000000  0.428571  0.000000  0.571429
1     A2  0.142857  0.142857  0.000000  0.000000  0.285714
2     A3  0.000000  0.000000  0.000000  0.142857  0.142857

逻辑说明

全程使用pandas内置的分组、透视能力,没有自定义循环,逻辑清晰易维护:

  • 每行数据对应一个types,每条数据的概率权重为1/DF总行数,同一个name下的所有行概率相加就是该name的总概率
  • 透视表自动对齐不同name列,缺失值填充0即可覆盖所有name字段
  • 最后按行求和即可得到每个group的总概率

内容的提问来源于stack exchange,提问作者Geinkehdsk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:45:04