**Контекст:** CRM-команда ритейлера хочет запустить персонализированные рассылки. Для этого нужна классическая RFM-сегментация.
**Данные:** `orders.csv` — история заказов (может быть миллионы строк).
[см. код в задании]
**Задание:** для **каждого активного юзера** (хотя бы 1 заказ за последние 365 дней) посчитать:
- **R (Recency):** сколько дней назад был последний заказ. Меньше = лучше.
- **F (Frequency):** сколько всего заказов за период анализа. Больше = лучше.
- **M (Monetary):** суммарная выручка за период. Больше = лучше.
Потом каждому признаку присвоить score 1-5 через квантили (`pd.qcut`), чтобы получился код типа `"543"` (R=5, F=4, M=3).
На основе 3 скоров присвоить **сегмент** из 8:
| Сегмент | Правило |
|---|---|
| Champions | R=5 AND F≥4 AND M≥4 |
| Loyal | R≥4 AND F≥4 |
| Potential | R≥4 AND F=1-2 |
| Big Spender | M=5 AND F ≤3 |
| New | R=5 AND F=1 |
| Promising | R=4 AND F≤2 AND M≤3 |
| At Risk | R≤2 AND F≥3 (пропали высокоактивные) |
| Hibernating | остальные |
Верни DataFrame `[user_id, R_score, F_score, M_score, rfm_code, segment]`.
pandas segmentation rfm qcut customer-analytics
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: pandas, segmentation, rfm, qcut, customer-analytics.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 482 Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания