Calcolare le metriche RFM

Customer Segmentation in Python

Karolis Urbonas

Head of Data Science, Amazon

Definizioni

  • Recency: giorni dall’ultima transazione
  • Frequency: numero di transazioni negli ultimi 12 mesi
  • Monetary Value: spesa totale negli ultimi 12 mesi
Customer Segmentation in Python

Dataset e preparazione

  • Stesso dataset online delle lezioni precedenti
  • Serve un po’ di preparazione dati
  • Nuova colonna TotalSum = Quantity x UnitPrice.

prime_5_righe

Customer Segmentation in Python

Passi di preparazione

Partiamo da un DataFrame online già preprocessato con solo gli ultimi 12 mesi:

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

Creiamo una snapshot_day ipotetica come se l’analisi fosse recente.

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

Calcolare le metriche 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()
Customer Segmentation in Python

Valori RFM finali

La tabella per la segmentazione RFM è pronta!

rfm_prime_5

Customer Segmentation in Python

Calcoliamo i valori RFM!

Customer Segmentation in Python

Preparing Video For Download...