- изначально объединяющее событие (первое посещение сайта, регистрация или скачивание мобильного приложения. Так в анализ попадает только определённая категория людей — впервые посетившие сайт, зарегистрированные в программе лояльности, пользователи приложения.)
- время
- дополнительный признак (может отсутствовать)
Обычно BI системы ведут два основных журнала:
- журнал посещений
- uid
- дата начала сессии
- длительность (или дата окончания)
- другие параметры (устройство, география, источник и т.п.)
- журнал покупок
- uid
- дата покупки
- сумма
- м.б. состав покупки
Ниже на основании журналов подготовим профили пользователей для когортного анализа.
import pandas as pd
sessions = pd.read_csv('sessions.csv') #https://drive.google.com/file/d/1mM4m4W_jWH8KqicHjJguw70ViO5_ldgK/view?usp=share_link
sessions['session_start'] = pd.to_datetime(sessions['session_start'])
orders = pd.read_csv('book_orders.csv') #https://drive.google.com/file/d/1BRxsxvtYXrADqD6fXd_YqXgo4xiXeCRb/view?usp=share_link
orders['event_dt'] = pd.to_datetime(orders['event_dt'])
# добавили второй аргумент
def get_profiles(sessions, orders=None):
profiles = (
sessions.sort_values(by=['user_id', 'session_start'])
.groupby('user_id')
.agg(
{
'session_start': 'first',
'channel': 'first',
'device': 'first',
'region': 'first',
# другие параметры
}
)
.rename(columns={'session_start': 'first_ts'})
.reset_index()
)
profiles['dt'] = profiles['first_ts'].dt.date
profiles['month'] = profiles['first_ts'].to_numpy().astype('datetime64[M]')
# проверьте, есть ли ID пользователей из profiles в orders
if orders is not None:
payers = set(orders.user_id.unique())
profiles['payer'] = profiles['user_id'].map(lambda x: True if x in payers else False)
return profiles
# строим профили по двум наборам данных
profiles = get_profiles(sessions, orders)
print(profiles)
Комментариев нет:
Отправить комментарий