Calcul des mesures RFM

Segmentation de la clientèle en Python

Karolis Urbonas

Head of Data Science, Amazon

Définitions

  • Récence — jours depuis la dernière transaction du client
  • Fréquence — nombre de transactions dans les 12 derniers mois
  • Valeur monétaire — dépenses totales dans les 12 derniers mois
Segmentation de la clientèle en Python

Ensemble de données et préparation

  • Même ensemble de données online que dans les leçons précédentes
  • Un peu de préparation des données est nécessaire
  • Nouvelle colonne TotalSum = Quantity x UnitPrice.

top_5_rows

Segmentation de la clientèle en Python

Étapes de préparation des données

Nous partons d'un DataFrame online prétraité ne couvrant que les 12 derniers mois :

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

Créons une valeur hypothétique de snapshot_day comme si l'analyse était récente.

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
Segmentation de la clientèle en Python

Calculer les mesures RFM

# Agréger les données au niveau client
datamart = online.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'TotalSum': 'sum'})

# Renommer les colonnes pour faciliter l'interprétation datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)
# Vérifier les premières lignes datamart.head()
Segmentation de la clientèle en Python

Valeurs RFM finales

Notre table pour la segmentation RFM est prête !

rfm_top_5

Segmentation de la clientèle en Python

Passons à la pratique !

Segmentation de la clientèle en Python

Preparing Video For Download...