Мир аналитика данных
@analysts_world
3 28 3.2K
concat(YEAR(first_payed_product_at),'-',week(first_payed_product_at,1)) as week. В итоге будут данные в таком формате: 2023-0, 2023-1, 2023-2 и прочееquery = f""" -- здесь нужен f, чтобы потом в условии where можно было бы воспользоваться и указать список клиентов, по которым мы ищем выручку.
select account_id, type
sum(amount) as 'amount'
from payment
where account_id in {tuple(df_acc['account_id'])}
and deleted=0
and status='accepted'
and created_at >= '2023-01-01'
group by 1,2
order by 1,3
df_rev = pd.read_sql(query, connection)
Выгрузка сохраняется в датафрейм df_rev.df_big = df_rev.groupby(by='account_id').last().reset_index()
Соединяем базу со всеми клиентами – df_acc, который мы выкачали вначале с выгрузкой df_revdf_merge = pd.merge(df_acc, df_big, on = 'account_id', how = 'left').fillna('no_payment’)
А теперь самое интересное!df_final = df_merge.pivot_table(index = 'week', columns=['type'], values = 'account_id',aggfunc = 'count', margins=True).fillna(0).reset_index()
Мы развернули таблицу, чтобы по строкам у нас были недели, по столбцам – типы оплат, а в значениях - кол-во account_id, то есть кол-во клиентов, максимальные платежи которых проходят через этот тип оплат.Платформа использует файлы cookie для авторизации и сохранения настроек. Продолжая работу, вы соглашаетесь с нашей Политикой использования cookie.
Обсуждение 3
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram