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 через дефис).
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)// Решение
🔒
Решение, подсказки и автопроверка этой задачи — по подписке Premium. Вместе с ней открываются все премиум-задачи трёх тренажёров: SQL, pandas и A/B.
★ Открыть Premium