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

如何在DataFrame中创建累积概率分箱?

解决方案

步骤说明

要实现按10%增量生成累积分箱统计,核心思路是遍历每个分箱上限,筛选出概率小于等于该上限的所有记录,分别统计唯一用户数和销售总额,最后整理成目标DataFrame。

完整代码

import pandas as pd

# 1. 构造原始DataFrame(替换成你的实际数据即可)
data = {
    'date': ['2020-01-01', '2020-01-20', '2020-01-01', '2020-01-10'],
    'user_id': [1, 1, 3, 2],
    'purchase_probability': [0.19, 0.04, 0.31, 0.05],
    'sales': [10, 0, 5, 18]
}
df = pd.DataFrame(data)

# 2. 生成10%增量的分箱上限和标签
bins_upper = [i/10 for i in range(1, 11)]  # 对应0.1到1.0的分箱上限
bin_labels = [f'0-{i}%' for i in range(10, 101, 10)]  # 生成"0-10%"这类标签

# 3. 遍历分箱计算统计值
result = []
for upper, label in zip(bins_upper, bin_labels):
    filtered_records = df[df['purchase_probability'] <= upper]
    total_users = filtered_records['user_id'].nunique()  # 统计唯一用户数
    total_sales = filtered_records['sales'].sum()        # 统计累计销售额
    result.append({
        'probability_bin': label,
        'total_users': total_users,
        'total_sales': total_sales
    })

# 4. 转换为目标DataFrame
result_df = pd.DataFrame(result)
print(result_df)

输出结果

probability_bin  total_users  total_sales
0          0-10%            2           18
1          0-20%            2           28
2          0-30%            2           28
3          0-40%            3           33
4          0-50%            3           33
5          0-60%            3           33
6          0-70%            3           33
7          0-80%            3           33
8          0-90%            3           33
9         0-100%            3           33

关键说明

  • 用nunique()统计唯一用户数,避免同一用户多条记录重复计数
  • 直接按分箱上限筛选记录并累加销售额,实现累积统计的效果
  • 分箱标签和上限通过列表推导式批量生成,无需手动逐个输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:18:27