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

如何在Pandas中计算条件响应概率?

计算分组条件响应概率的实现方法

基础数据与初始聚合

先看示例数据构造代码:

import pandas as pd

gender = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]
is_family = [0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1]
treatment = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1]
response = [1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1]
num_rows = [10,10,5,20,0,5,10,30,20,30,10,5,60,10,10,20]

df = pd.DataFrame(data={'gender': gender, 'is_family': is_family, 'treatment': treatment, 'response': response, 'num_rows': num_rows})

你已经实现了按gender、treatment、response分组求和num_rows的代码:

agg_df = df.groupby(by=['gender', 'treatment', 'response'])['num_rows'].sum().reset_index()

计算条件响应概率

要得到给定gender和treatment组合下的response概率,核心逻辑是用每组的num_rows总和,除以对应gender+treatment分组的总num_rows。以下是两种简洁的实现方式:

方法1:使用transform直接计算

这种方法可以在聚合后的DataFrame上直接生成概率列,步骤更紧凑:

# 先执行基础聚合
agg_df = df.groupby(by=['gender', 'treatment', 'response'])['num_rows'].sum().reset_index()
# 按gender+treatment分组计算总num_rows,再用当前行的num_rows除以该总和得到概率
agg_df['resp_prob'] = agg_df['num_rows'] / agg_df.groupby(['gender', 'treatment'])['num_rows'].transform('sum')

方法2:分步计算再合并

如果需要更清晰的流程拆分,可以先单独计算分组总规模,再通过合并关联计算概率:

# 步骤1:完成基础聚合
agg_df = df.groupby(by=['gender', 'treatment', 'response'])['num_rows'].sum().reset_index()
# 步骤2:计算每个gender+treatment组合的总num_rows
total_df = agg_df.groupby(['gender', 'treatment'])['num_rows'].sum().reset_index(name='total_rows')
# 步骤3:合并数据并计算概率
result_df = pd.merge(agg_df, total_df, on=['gender', 'treatment'])
result_df['resp_prob'] = result_df['num_rows'] / result_df['total_rows']
# 可选:删除中间辅助列
result_df = result_df.drop('total_rows', axis=1)

最终结果

运行上述任意一种方法后,都会得到符合预期的结果:

gender  treatment  response  num_rows  resp_prob
0       0          0         0        15   0.600000
1       0          0         1        10   0.400000
2       0          1         0        15   0.230769
3       0          1         1        50   0.769231
4       1          0         0        20   0.200000
5       1          0         1        80   0.800000
6       1          1         0        40   0.615385
7       1          1         1        25   0.384615

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:45:39