Обчислення метрик RFM

Сегментація клієнтів у Python

Karolis Urbonas

Head of Data Science, Amazon

Визначення

  • Recency — днів від останньої транзакції клієнта
  • Frequency — кількість транзакцій за останні 12 місяців
  • Monetary Value — сума витрат за останні 12 місяців
Сегментація клієнтів у Python

Набір даних і підготовка

  • Той самий набір даних online, як у попередніх уроках
  • Потрібна підготовка даних
  • Новий стовпець TotalSum = Quantity x UnitPrice.

top_5_rows

Сегментація клієнтів у Python

Кроки підготовки даних

Починаємо з попередньо обробленого датафрейму online лише з останніми 12 місяцями даних:

print('Min:{}; Max:{}'.format(min(online.InvoiceDate),
                              max(online.InvoiceDate)))
Min:2010-12-10; Max:2011-12-09

Створімо гіпотетичну дату snapshot_day, ніби аналіз виконується зараз.

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
Сегментація клієнтів у Python

Обчисліть метрики RFM

# Aggregate data on a customer level
datamart = online.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'TotalSum': 'sum'})

# Rename columns for easier interpretation datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)
# Check the first rows datamart.head()
Сегментація клієнтів у Python

Підсумкові значення RFM

Таблицю для сегментації RFM завершено!

rfm_top_5

Сегментація клієнтів у Python

Давайте потренуємось!

Сегментація клієнтів у Python

Preparing Video For Download...