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

如何使用Pandas实现按年统计客户收入流失(revenue churn)

Pandas 实现流失收入统计

实现逻辑说明

完全匹配你提到的计算规则:提取每个客户最后一次交易年份的当年总收入,计入该年份后一年的流失收入,最终按年汇总。


分步代码实现

1. 预处理:计算每个客户单年总收入

合并同客户同年的多笔收入记录:

# 按客户+年份分组求和,得到每个客户每年的累计收入
cust_year_rev = df.groupby(['cust', 'year'], as_index=False)['revenue'].sum()

2. 提取客户最后交易信息

取每个客户的最晚交易年份,以及对应年份的总收入,生成对应的流失年份:

# 按年份排序后取每个客户的最后一条记录,即最后一次交易信息
last_trade = cust_year_rev.sort_values('year').groupby('cust', as_index=False).last()
# 流失年份 = 最后交易年份 + 1
last_trade['churn_year'] = last_trade['year'] + 1

3. 按流失年份汇总收入

churn_total = last_trade.groupby('churn_year', as_index=False)['revenue'].sum().rename(columns={'revenue': 'lost_revenue'})

4. 补全所有年份的统计结果

生成完整年份序列,无流失收入的年份填充0:

# 若需自动适配数据年份范围,可替换为以下两行:
# min_year = df['year'].min()
# max_year = last_trade['churn_year'].max()
all_years = pd.DataFrame({'year': range(2013, 2021)})

# 关联流失数据,空值补0
result = all_years.merge(
    churn_total,
    left_on='year',
    right_on='churn_year',
    how='left'
)[['year', 'lost_revenue']].fillna(0)

最终输出的result和你给出的示例格式完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:48:02