我需要计算数百万用户每月的流失率。
月度流失率=当月流失用户数/上年12月用户总数
如果用户存在于基线(2016年12月(中,并且当月的销售额低于1,则该用户被视为当月的流失
我有一个简单的数据框架,年、月、用户和销售额。
请注意,在这个简单的例子中,当月可能有新用户"D",但由于"D"不在前一年的12月,因此在计算流失率的基线中不考虑它。
YearMonth User Sales Year Month
201612 A 2 2016 12
201612 B 2 2016 12
201612 C 2 2016 12
201701 A 3 2017 1
201701 B 0.5 2017 1
201701 C 1 2017 1
201701 D 1 2017 1
201702 A 2 2017 2
201702 B 3 2017 2
201702 C 2 2017 2
201702 D 0.5 2017 2
计算流失率的最有效方法是什么
YearMonth User Sales Churn or Not? Churn Rate In Baseline?
201612 A 2 0 NA 1
201612 B 2 0 NA 1
201612 C 2 0 NA 1
201701 A 3 0 1/3 1
201701 B 0.5 1 1/3 1
201701 C 1 0 1/3 1
201701 D 1 0 1/3 0
201702 A 2 0 0/3 1
201702 B 3 0 0/3 1
201702 C 2 0 0/3 1
201702 D 0.5 0 0/3 0
所需数据帧输出
YearMonth Churn Rate
201612 NA
201701 1/3
201702 0
IIUC
s=df.pivot(*['YearMonth','User','Sales'])
s=s.loc[:,s.iloc[0].notna()]
s.lt(1).sum(1).drop(201612).reindex(s.index)/s.shape[1]
YearMonth
201612 NaN
201701 0.333333
201702 0.000000
dtype: float64