**Контекст.** Вы продуктовый аналитик интернет-магазина. Маркетинг спрашивает: насколько хорошо мы удерживаем покупателей после первой покупки? Нужен классический когортный retention: клиентов группируем по месяцу первого заказа (когорта), а затем смотрим, какая доля когорты совершала покупки спустя 1, 2, 3... месяца.
**Дано.** DataFrame `orders` с историей заказов:
| колонка | тип | описание |
|---|---|---|
| `order_id` | int | идентификатор заказа |
| `customer_id` | int | идентификатор покупателя |
| `order_date` | datetime | дата заказа |
Один покупатель может иметь много заказов в разные месяцы.
**Задание.**
1. Для каждого покупателя определите когорту — месяц его первого заказа.
2. Для каждого заказа вычислите `cohort_index` — сколько полных месяцев прошло с месяца первого заказа (0 для месяца первого заказа).
3. Постройте таблицу retention: строки — когорты (месяц), столбцы — `cohort_index`, значения — доля покупателей когорты, сделавших заказ в этом смещении (от размера когорты в индексе 0).
4. Ответ — DataFrame `retention` с долями в диапазоне [0, 1], округлёнными до 3 знаков.
**Формат ответа:** пивот-таблица `retention`, где `retention.loc[cohort, 0]` всегда равно 1.0.
Структура для ориентира — реальные значения из эталонного решения.
orders = pd.DataFrame({
'order_id': range(1, 11),
'customer_id': [1, 1, 2, 2, 3, 1, 2, 3, 4, 4],
'order_date': pd.to_datetime([
'2024-01-05', '2024-02-10', # клиент 1: янв (M0), фев (M1)
'2024-01-20', '2024-03-15', # клиент 2: янв (M0), мар (M2)
'2024-01-25', '2024-03-01', # клиент 3: янв (M0) ... клиент 1 мар (M2)
'2024-02-14', # клиент 2 фев (M1)
'2024-02-02', '2024-02-28', # клиент 3 фев (M1); клиент 4: фев (M0), фев (M0)
]),
})
retention когортный анализ pandas pivot e-commerce
Это задание для уровня medium. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «Метрики» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: retention, когортный анализ, pandas, pivot, e-commerce.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «Метрики», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания