均值留存
This commit is contained in:
parent
0513f46d99
commit
dbe3fb52b1
@ -337,13 +337,32 @@ async def retention_model(request: Request,
|
||||
tmp['p_outflow'].append(v[f'op{i}'])
|
||||
tmp['n_outflow'].append(v[f'on{i}'])
|
||||
tmp = summary_values['均值']
|
||||
tmp['d0'] = int(df['cnt0'].sum())
|
||||
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()
|
||||
retention_avg_dict = {}
|
||||
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user