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

如何用Pandas从首笔非零订单月份起计算客户12个月销售均值?

解决方案:计算客户首次下单后的销售均值

问题核心是要排除首次下单前的所有月份(无论是否为0),只计算首次下单月份及之后的所有月份销售额均值(包含该期间的零销售额)。直接用.mean()会把整个12个月的数据都算进去,包括首次下单前的无效零值,所以结果不对。

下面分两种常见的数据格式给出实现方案:

一、宽表格式(每行一个客户,每列对应一个月份销售额)

假设你的数据结构是每个客户一行,列是customer_id+12个月份的销售额,示例代码如下:

import pandas as pd

# 构造示例数据(模拟12个月的情况,这里简化为5个月)
data = pd.DataFrame({
    'customer_id': [1, 2, 3],
    'month1': [0, 20, 0],
    'month2': [50, 0, 0],
    'month3': [0, 40, 10],
    'month4': [20, 0, 0],
    'month5': [0, 15, 0]
    # 可扩展到month12,逻辑完全一致
})

# 定义计算单个客户目标均值的函数
def get_mean_from_first_order(row):
    # 提取当前客户的所有销售额列(排除customer_id)
    sales_data = row.drop('customer_id')
    # 找到第一个非零销售额对应的月份列(首次下单月份)
    first_order_col = sales_data.ne(0).idxmax()
    # 截取首次下单及之后的所有销售额数据
    relevant_sales = sales_data.loc[first_order_col:]
    # 返回该区间的均值
    return relevant_sales.mean()

# 对每个客户应用函数,得到结果
data['mean_after_first_order'] = data.apply(get_mean_from_first_order, axis=1)

# 查看结果
print(data[['customer_id', 'mean_after_first_order']])

二、长表格式(每行是客户-月份的销售额记录)

如果数据是长表结构(每个客户每个月一条记录),示例代码如下:

import pandas as pd

# 构造长表示例数据
long_data = pd.DataFrame({
    'customer_id': [1,1,1,2,2,2,3,3,3],
    'month': [1,2,3,1,2,3,1,2,3],
    'sales': [0,50,0,20,0,40,0,0,10]
})

# 第一步:计算每个客户的首次下单月份(筛选销售额>0的记录,取最小月份)
first_order_info = long_data[long_data['sales'] > 0].groupby('customer_id')['month'].min().reset_index()
first_order_info.rename(columns={'month': 'first_order_month'}, inplace=True)

# 第二步:将首次下单月份合并回原数据
merged_data = pd.merge(long_data, first_order_info, on='customer_id')

# 第三步:筛选出首次下单及之后的所有月份数据
valid_data = merged_data[merged_data['month'] >= merged_data['first_order_month']]

# 第四步:按客户分组计算均值
customer_mean_result = valid_data.groupby('customer_id')['sales'].mean().reset_index()
customer_mean_result.rename(columns={'sales': 'mean_after_first_order'}, inplace=True)

# 查看结果
print(customer_mean_result)

关键逻辑说明

  1. 先定位每个客户的首次下单月份:通过筛选销售额非零的记录,取最早的月份;
  2. 只保留该月份及之后的所有数据(包括该期间的零销售额);
  3. 对筛选后的子集计算均值,这样就排除了首次下单前的无效数据。

内容的提问来源于stack exchange,提问作者aleks.zheltkov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:52:53