pandasRFM-сегментацияHardPremium~12 мин

NTILE-биннинг: RFM-классы 1–5

// Условие

Таблица df — заказы маркетплейса за первую половину 2024 года. Нужно не просто посчитать R/F/M, но и перевести непрерывные метрики в скоры 1–5 через квинтильный биннинг.

Что нужно
Аналогично предыдущей задаче посчитай R/F/M для каждого юзера (только completed-заказы, cutoff 2024-06-30). Затем примени NTILE по квинтилям:
  • r_score (1–5): 5 = самый свежий (recency_days маленький). Используй pd.qcut(recency_days, 5, labels=[5,4,3,2,1]).
  • f_score (1–5): 5 = самый частый. Применяй qcut к frequency.rank(method='first') (устойчиво к ties).
  • m_score (1–5): 5 = самый дорогой. Используй pd.qcut(monetary, 5, labels=[1,2,3,4,5]).
  • rfm_class (str): метка вида '5-4-3' (r-f-m через дефис).
Верни DataFrame с колонками user_id, recency_days, frequency, monetary, r_score, f_score, m_score, rfm_class. Сортировка по user_id asc.

Подсказка: передавай duplicates='drop' в pd.qcut для recency и monetary — иначе упадёт при совпадающих границах квинтилей.

// Данные

df: order_id, user_id, order_date (datetime), amount (float), status (completed / cancelled)
▶ Решить в pandas-тренажёре

// Решение

🔒

Решение, подсказки и автопроверка этой задачи — по подписке Premium. Вместе с ней открываются все премиум-задачи трёх тренажёров: SQL, pandas и A/B.

★ Открыть Premium

// Похожие задачи

// Разобраться в теме

→ RFM-сегментация