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

pandas对计算生成的CPA列分组聚合后unstack是否会导致数值偏差

问题核心说明

你当前的计算逻辑确实存在数值偏差的可能,核心原因是单条记录CPA的算术平均值≠分组维度下的整体CPA:
举个简单的例子:假设同一个「时段+星期」分组下有两条原始数据:

  • 第一条:收入100,转化2,单条CPA=50
  • 第二条:收入200,转化10,单条CPA=20
    如果用你当前先算单条CPA再求均值的逻辑,得到的分组CPA是(50+20)/2=35,但该分组真实的整体CPA应为总收入/总转化=(100+200)/(2+10)=25,两者差异很大。

正确的聚合方式

应该先按维度分组,分别对收入、转化字段求和后再计算CPA,示例代码如下:

import pandas as pd

df = pd.read_csv('Tme of Day_Report_90 Days_1.csv')

# 1. 按维度分组,先聚合收入、转化的总和
grouped_df = df.groupby(['Time','Day of Week']).agg(
    total_rev = ('Revenue (Adv Currency)', 'sum'),
    total_conv = ('Total Conversions', 'sum')
)

# 2. 计算分组维度下的CPA
grouped_df['CPA'] = grouped_df['total_rev'] / grouped_df['total_conv']

# 3. 重塑为交叉表并调整列顺序
new_data = grouped_df['CPA'].unstack()
new_data = new_data[['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']]

补充说明

如果你的原始数据中,每一行已经是「Time+Day of Week」的唯一聚合结果,没有重复的维度组合,那你原来的计算逻辑和上述正确逻辑的输出结果是一致的;如果存在同一维度下的多条明细数据,必须使用先求和再算CPA的逻辑才能得到准确值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:09:02