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