我需要计算数百万用户每月的流失率。
每月流失率=当月的流失用户数/上一年12月的用户总数
如果该用户存在于基准(2016年12月)中,并且当月销售额小于1,则该用户被视为当月流失
我有一个简单的YearMonth,User和Sales数据框。
请注意,在此简单示例中,当月可以有新用户“ 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
答案 0 :(得分: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