Calcul des métriques RFM

Customer Segmentation in Python

Karolis Urbonas

Head of Data Science, Amazon

Définitions

  • Récence : jours depuis la dernière transaction client
  • Fréquence : nombre de transactions sur les 12 derniers mois
  • Valeur monétaire : dépense totale sur les 12 derniers mois
Customer Segmentation in Python

Jeu de données et préparations

  • Même jeu de données online que dans les leçons précédentes
  • Quelques préparations de données sont nécessaires
  • Nouvelle colonne TotalSum = Quantity × UnitPrice.

top_5_rows

Customer Segmentation in Python

Étapes de préparation

Nous partons d’un DataFrame online prétraité, limité aux 12 derniers mois :

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

Créons une snapshot_day hypothétique, comme si l’analyse était récente.

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

Calculer les métriques 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

Valeurs RFM finales

Notre table pour la segmentation RFM est prête !

rfm_top_5

Customer Segmentation in Python

Passons à la pratique !

Customer Segmentation in Python

Preparing Video For Download...