TGViewer
LEFT JOIN Insider LEFT JOIN Insider @leftjoin_insider · 1.43K subscribers
Post #35 647
Тестовые задания: задачка на Python и когортный анализ
На прошлой неделе мы разбирали задачку на SQL и считали LTV для недельной когорты новых игроков. Сегодня те же вводные данные, но другая задача.

В этой задаче нужно написать код на Python, который построит таблицу когортного анализа удержания новичков. Примерный вид итоговой таблицы: в колонке Week_start неделя первого входа игрока в игру — когорта; следующие 30 колонок — дни после первого входа.

Что проверяет такая задача?
🔵 базовое знание Python
🔵 понимание сути когортного анализа

Как можно решить?
1️⃣ Берем датафрейм, соответствующий таблице, в которой есть логирование всех входов игрока в игру.
2️⃣ Получаем дату первого захода пользователя и определяем неделю первого входа в качестве когорты.
3️⃣ Считаем количество дней между первым входом и остальными заходами пользователя.
4️⃣ Формируем таблицу в соответствии с датафреймом, где 0 день соответствует размеру когорты.
5️⃣ Корректируем названия столбцов и заполняем нулями пустые значения, где Day <= (current_date - первый день недели).dt.days.

Наш вариант решения:

users_first_login = df.groupby('user_id').agg(
first_login = ('created', 'min')
).reset_index()

users_first_login['week_start'] = users_first_login['first_login'].dt.to_period('W').apply(
lambda r: r.start_time)

df_final = pd.merge(users_first_login, df, how='inner', on='user_id')
df_final['day'] = (df_final['created'] - df_final['first_login']).dt.days

df_final_pivot = pd.pivot_table(df_final, values='user_id', index='week_start',
columns='day', aggfunc='count')
df_final_pivot = df_final_pivot.astype('Int32')

df_final_pivot.columns = list(map(lambda x: 'Day_' + str(x), df_final_pivot.columns))


Задавайте вопросы и предлагайте ваши способы решения в комментариях!

#разбор_тестового
  • 👍 5
  • ❤ 4
  • 🔥 3
More from @leftjoin_insider
  1. Apr 29, 2025Middle Data Engineer в LEFT JOIN У нас появилось несколько новых проектов, поэтому мы снов…
  2. Apr 25, 2025Открыт предзаказ на книгу «Аналитика для руководителей» Про аналитику написано много сложн…
  3. Apr 9, 2025Подводные камни аутсорса: лаги в коммуникации Продолжаем серию постов про трудности, часты…
  4. Apr 2, 2025Что мы поняли, когда сверстали таблицы в Metabase Работа инженера данных каждый день подки…
  5. Mar 26, 2025Вашей маме аналитик не нужен? Или не маме, или не аналитик. В общем, если вы знаете кого-т…
  6. Mar 21, 2025Подводные камни аутсорса: текучка и непредсказуемость Мы работаем в формате аутсорса или а…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →