ltv加工
This commit is contained in:
parent
f93a120700
commit
6c210e092f
@ -51,7 +51,7 @@ async def ltv_model_sql(
|
||||
res = analysis.ltv_model_sql()
|
||||
sql = res['sql']
|
||||
quota = res['quota']
|
||||
ltv_len = res['ltv_len']
|
||||
ltv_n = res['ltv_n']
|
||||
df = await ckdb.query_dataframe(sql)
|
||||
if df.empty:
|
||||
return schemas.Msg(code=-1, msg='查无数据')
|
||||
@ -60,9 +60,9 @@ async def ltv_model_sql(
|
||||
df.loc[len(df)] = 0
|
||||
df.loc[len(df) - 1, 'date'] = d
|
||||
days = (pd.Timestamp.now().date() - d).days
|
||||
if days + 2 >= ltv_len:
|
||||
continue
|
||||
df.loc[len(df) - 1, f'LTV{days + 2}':] = '-'
|
||||
# if days + 2 >= ltv_len:
|
||||
# continue
|
||||
df.iloc[len(df) - 1, days+3:] = '-'
|
||||
df.sort_values('date', inplace=True)
|
||||
|
||||
df.rename(columns={'date': '注册日期'}, inplace=True)
|
||||
@ -71,10 +71,10 @@ async def ltv_model_sql(
|
||||
cat = '设备数'
|
||||
df.rename(columns={'cnt1': cat}, inplace=True)
|
||||
|
||||
df1 = df[['注册日期', cat, *[f'LTV{i}' for i in range(1, ltv_len + 1)]]]
|
||||
df2 = df[['注册日期', cat, *[f'sumpay_{i}' for i in range(1, ltv_len + 1)]]]
|
||||
df1 = df[['注册日期', cat, *[f'LTV{i}' for i in ltv_n]]]
|
||||
df2 = df[['注册日期', cat, *[f'sumpay_{i}' for i in ltv_n]]]
|
||||
df2.replace('-', 0, inplace=True)
|
||||
avg_ltv = (df2[[f'sumpay_{i}' for i in range(1, ltv_len + 1)]].sum() / df2[cat].sum()).round(2)
|
||||
avg_ltv = (df2[[f'sumpay_{i}' for i in ltv_n]].sum() / df2[cat].sum()).round(2)
|
||||
df1.loc[len(df1)] = ['均值', df2[cat].sum(), *avg_ltv]
|
||||
df1.insert(2, '累计LTV', 0)
|
||||
last_ltv = []
|
||||
|
@ -131,7 +131,9 @@ class XAnalysis:
|
||||
select_ltv = []
|
||||
sumpay = []
|
||||
sum_money = []
|
||||
for i in range(1, days + 2):
|
||||
# for i in range(1, days + 2):
|
||||
ltv_n = [*[k for k in range(1, 31)], 45, 60, 90, 120, 180, 240, 300, 360]
|
||||
for i in ltv_n:
|
||||
# select_ltv.append(func.round(sa.Column(f'sumpay_{i}') / sa.Column('cnt1'), 2).label(f'LTV{i}'))
|
||||
select_ltv.append(
|
||||
f"if(dateDiff('day', reg.date, now())<{i - 1}, '-',toString(round(sumpay_{i} / cnt1, 2))) AS LTV{i}")
|
||||
@ -194,5 +196,5 @@ class XAnalysis:
|
||||
'start_date': self.event_view['startTime'][:10],
|
||||
'end_date': self.event_view['endTime'][:10],
|
||||
'date_range': self.date_range,
|
||||
'ltv_len': days + 1
|
||||
'ltv_n': ltv_n
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user