Категоризация клиентов по RFM-сегментам

Hard pandas pandas Lamoda

Условие задачи

Дано: DataFrame `rfm` с колонками client_id, recency (дни с последнего заказа), frequency (кол-во заказов), monetary (общая сумма) -- 12 клиентов. Постройте RFM-сегментацию клиентов: 1. r_score -- 3 квантильных бакета по recency, метки 3,2,1 (чем меньше recency, тем выше балл) 2. f_score -- 3 квантильных бакета по frequency, метки 1,2,3 (при ничьих ранжирование по порядку появления) 3. m_score -- 3 квантильных бакета по monetary, метки 1,2,3 (тоже first-ранжирование) 4. segment -- "VIP" если r+f+m ≥ 8, "Loyal" если ≥ 5, иначе "At Risk" Score-колонки -- int. Сохраните DataFrame в `result`.

Темы

rfm qcut segmentation apply

Подсказки

Что проверяет эта задача

Задача «Категоризация клиентов по RFM-сегментам» учит обрабатывать табличные данные в pandas: фильтрация, группировка, объединение и метрики. Такие задачи дают на собеседованиях в Lamoda и других IT-компаниях. Уровень сложный — проверяет глубину и умение собрать решение из нескольких приёмов.

Как подступиться к решению

Сначала разбери условие и формат входа-выхода, прикинь крайние случаи (пустой ввод, дубли, NaN). Затем выбери структуру данных и собери решение по шагам — начни с простого рабочего варианта, потом оптимизируй сложность. Код пишешь и запускаешь прямо в браузере: Python-тренажёр исполняет его через Pyodide (pandas, numpy, scipy) и проверяет результат автоматически.

В pandas один и тот же результат часто достаётся разными путями — через groupby, pivot_table, merge или векторные операции над колонками. Важно выбрать читаемый и быстрый: встроенные векторные методы почти всегда обгоняют циклы и построчный apply. На собеседовании ценят не только правильный ответ, но и то, как ты объясняешь выбор подхода, обрабатываешь пропуски (NaN) и оцениваешь, что будет на больших данных.

Разобраться в pandas системно — бесплатный курс «Pandas с нуля» и гайды по pandas.

Открыть задачу в тренажёре → ← Все Python-задачи