熊猫通过与上一年的基线相匹配来计算每月流失率



我需要计算数百万用户每月的流失率。

月度流失率=当月流失用户数/上年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

最新更新