update
This commit is contained in:
parent
a92489b96f
commit
bee7045492
@ -212,7 +212,23 @@ async def funnel_model(
|
||||
|
||||
df = await ckdb.query_dataframe(sql)
|
||||
# df.set_index('date',inplace=True)
|
||||
data = {'level': cond_level}
|
||||
data_list = []
|
||||
if df.shape == (0, 0):
|
||||
return schemas.Msg(code=0, msg='ok', data={'list': data_list, 'level': cond_level})
|
||||
|
||||
tmp = {'title': '总体'}
|
||||
tmp_df = df[['level', 'values']].groupby('level').sum()
|
||||
tmp_df.sort_index(inplace=True)
|
||||
for i in tmp_df.index:
|
||||
tmp_df.loc[i, 'values'] = tmp_df.loc[i:]['values'].sum()
|
||||
|
||||
tmp['n'] = tmp_df['values'].to_list()
|
||||
tmp['p1'] = [100]
|
||||
# tmp['p2'] = []
|
||||
for i, v in tmp_df.loc[2:, 'values'].items():
|
||||
tmp['p1'].append(round(v * 100 / tmp_df.loc[1, 'values'], 2))
|
||||
# tmp['p2'].append(round(v*100 / tmp_df.loc[i - 1, 'values'], 2))
|
||||
data_list.append(tmp)
|
||||
if groupby:
|
||||
# 补齐数据
|
||||
concat_data = []
|
||||
@ -225,7 +241,7 @@ async def funnel_model(
|
||||
# df.sort_values(list((*groupby, 'level')), inplace=True, ascending=False)
|
||||
|
||||
for key, tmp_df in df.groupby(groupby):
|
||||
tmp = data.setdefault(key, {})
|
||||
tmp = {'title': key}
|
||||
tmp_df.set_index('level', inplace=True)
|
||||
tmp_df.sort_index(inplace=True)
|
||||
for i in tmp_df.index:
|
||||
@ -233,23 +249,9 @@ async def funnel_model(
|
||||
|
||||
tmp['n'] = tmp_df['values'].to_list()
|
||||
tmp['p1'] = [100]
|
||||
tmp['p2'] = []
|
||||
# tmp['p2'] = []
|
||||
for i, v in tmp_df.loc[2:, 'values'].items():
|
||||
tmp['p1'].append(round(v*100 / tmp_df.loc[1, 'values'], 2))
|
||||
tmp['p1'].append(round(v * 100 / tmp_df.loc[1, 'values'], 2))
|
||||
# tmp['p2'].append(round(v*100 / tmp_df.loc[i - 1, 'values'], 2))
|
||||
|
||||
else:
|
||||
tmp = data.setdefault('全部', {})
|
||||
df.set_index('level', inplace=True)
|
||||
df.sort_index(inplace=True)
|
||||
for i in df.index:
|
||||
df.loc[i, 'values'] = df.loc[i:]['values'].sum()
|
||||
|
||||
tmp['n'] = df['values'].to_list()
|
||||
tmp['p1'] = [100]
|
||||
tmp['p2'] = []
|
||||
for i, v in df.loc[2:, 'values'].items():
|
||||
tmp['p1'].append(round(v*100 / df.loc[1, 'values'], 2))
|
||||
# tmp['p2'].append(round(v*100 / df.loc[i - 1, 'values'], 2))
|
||||
|
||||
return schemas.Msg(code=0, msg='ok', data=data)
|
||||
data_list.append(tmp)
|
||||
return schemas.Msg(code=0, msg='ok', data={'list': data_list, 'level': cond_level})
|
||||
|
Loading…
Reference in New Issue
Block a user