如何在cohort同期群分析中自定义计算周期长度?
同期群分析自定义周期实现方案
你原有代码计算的是订单月份与同期群月份的自然月间隔,要实现每X个月为一个计算周期,对间隔月数做整除处理即可,具体代码调整如下:
- 首先定义自定义周期长度,以你需要的12个月为一个周期为例:
# 可按需修改为任意周期月份数 cycle_months = 12
- 调整周期编号计算逻辑:
from operator import attrgetter # 原有分组聚合逻辑不变 df_cohort = df.groupby(['cohort', 'order_month']) \ .agg(n_customers=('CustomerID', 'nunique')) \ .reset_index(drop=False) # 先计算间隔自然月数,再按自定义周期长度整除得到周期编号 df_cohort['month_gap'] = (df_cohort.order_month - df_cohort.cohort).apply(attrgetter('n')) df_cohort['period_number'] = df_cohort['month_gap'] // cycle_months
注:以上逻辑会将入群后0-11个月的交易归入第0个周期、12-23个月的交易归入第1个周期,以此类推。
留存判定适配
按照你提出的「用户在所属同期群的12个月内有过1次交易即判定为留存」的规则,直接筛选period_number == 0的用户即为满足留存条件的用户,后续可基于该字段直接聚合统计各同期群的留存率。
内容的提问来源于stack exchange,提问作者joethemow
相关产品推荐
相关产品推荐

