均值留存

This commit is contained in:
wuaho 2021-11-30 11:15:07 +08:00
parent 0513f46d99
commit dbe3fb52b1

View File

@ -337,13 +337,32 @@ async def retention_model(request: Request,
tmp['p_outflow'].append(v[f'op{i}']) tmp['p_outflow'].append(v[f'op{i}'])
tmp['n_outflow'].append(v[f'on{i}']) tmp['n_outflow'].append(v[f'on{i}'])
tmp = summary_values['均值'] tmp = summary_values['均值']
tmp['d0'] = int(df['cnt0'].sum()) retention_avg_dict = {}
tmp['p'] = (pd.Series(avg) * 100 / tmp['d0']).round(2).tolist()
tmp['n'] = pd.Series(avg).values.tolist()
tmp['p_outflow'] = (pd.Series(avgo) * 100 / tmp['d0']).round(2).tolist()
tmp['n_outflow'] = pd.Series(avgo).values.tolist()
title = ['日期', '用户数', '次留', *[f'{i+1}' for i in retention_n[1:]]] for rn in retention_n:
for rt, rd in df.T.items():
if rt + datetime.timedelta(days=rn) <= pd.datetime.now().date():
retention_avg_dict.setdefault(rn, {'cnt0': 0, 'cntn': 0,'o_cnt0':0,'o_cntn':0})
retention_avg_dict[rn]['cnt0'] += rd['cnt0']
retention_avg_dict[rn]['cntn'] += rd[f'cnt{rn}']
retention_avg_dict[rn]['o_cnt0'] += rd['cnt0']
retention_avg_dict[rn]['o_cntn'] += rd[f'on{rn}']
tmp['p'] = []
tmp['n'] = []
tmp['p_outflow'] = []
tmp['n_outflow'] = []
tmp['d0'] = 0
for rt, rd in retention_avg_dict.items():
tmp['d0'] = tmp['d0'] + rd['cnt0']
tmp['p'].append(round(rd['cntn'] * 100 / rd['cnt0'], 2))
tmp['n'].append(rd['cntn'])
tmp['p_outflow'].append(round(rd['o_cntn'] * 100 / rd['cnt0'], 2))
tmp['n_outflow'].append(rd['o_cntn'])
title = ['日期', '用户数', '次留', *[f'{i + 1}' for i in retention_n[1:]]]
# 未到达的日期需要补齐- # 未到达的日期需要补齐-
retention_length = len(retention_n) retention_length = len(retention_n)