RFM-metrics berekenen

Klantsegmentatie in Python

Karolis Urbonas

Head of Data Science, Amazon

Definities

  • Recency - dagen sinds laatste klanttransactie
  • Frequency - aantal transacties in de laatste 12 maanden
  • Monetary Value - totale besteding in de laatste 12 maanden
Klantsegmentatie in Python

Dataset en voorbereiding

  • Zelfde online-dataset als in de vorige lessen
  • Enige datapreparatie nodig
  • Nieuwe kolom TotalSum = Quantity x UnitPrice.

top_5_rows

Klantsegmentatie in Python

Stappen voor datapreparatie

We starten met een voorbewerkte online-DataFrame met alleen de laatste 12 maanden aan data:

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

Laten we een hypothetische snapshot_day maken, alsof we nu analyseren.

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
Klantsegmentatie in Python

RFM-metrics berekenen

# 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()
Klantsegmentatie in Python

Definitieve RFM-waarden

Onze tabel voor RFM-segmentatie is klaar!

rfm_top_5

Klantsegmentatie in Python

Laten we oefenen!

Klantsegmentatie in Python

Preparing Video For Download...