Analyse de cohortes

Customer Segmentation in Python

Karolis Urbonas

Head of Data Science, Amazon

Carte thermique d’analyse de cohortes

Lignes :

  • Première activité
  • Ici : mois d’acquisition

Colonnes :

  • Temps depuis la première activité
  • Ici : mois depuis l’acquisition

Carte thermique des cohortes

Customer Segmentation in Python

Carte thermique d’analyse de cohortes

Lignes :

  • Première activité
  • Ici : mois d’acquisition

Colonnes :

  • Temps depuis la première activité
  • Ici : mois depuis l’acquisition

Customer Segmentation in Python

Données de vente en ligne

Plus de 0,5 million de transactions d’une boutique en ligne au Royaume‑Uni.

Nous utiliserons un échantillon aléatoire de 20 % de ce jeu de données tout au long du cours.

Vente en ligne

Customer Segmentation in Python

5 premières lignes des données

online.head()

5 premières lignes

Customer Segmentation in Python

Attribuer le mois d’acquisition à la cohorte

def get_month(x): return dt.datetime(x.year, x.month, 1)

online['InvoiceMonth'] = online['InvoiceDate'].apply(get_month)
grouping = online.groupby('CustomerID')['InvoiceMonth']
online['CohortMonth'] = grouping.transform('min')
online.head()

top5-cohort-added

Customer Segmentation in Python

Extraire les entiers de date

Définir une fonction pour extraire les entiers year, month et day.

Nous l’utiliserons tout au long du cours.

def get_date_int(df, column):
    year = df[column].dt.year
    month = df[column].dt.month
    day = df[column].dt.day
    return year, month, day
Customer Segmentation in Python

Attribuer le décalage temporel

invoice_year, invoice_month, _ = get_date_int(online, 'InvoiceMonth') 
cohort_year, cohort_month, _ = get_date_int(online, 'CohortMonth')

years_diff = invoice_year - cohort_year months_diff = invoice_month - cohort_month
online['CohortIndex'] = years_diff * 12 + months_diff + 1 online.head()

top5-time-offset-added

Customer Segmentation in Python

Compter les clients actifs mensuels par cohorte

grouping = online.groupby(['CohortMonth', 'CohortIndex'])

cohort_data = grouping['CustomerID'].apply(pd.Series.nunique)
cohort_data = cohort_data.reset_index()
cohort_counts = cohort_data.pivot(index='CohortMonth', columns='CohortIndex', values='CustomerID')
print(cohort_counts)
Customer Segmentation in Python

tableau-pivot-comptes-en-ligne

Customer Segmentation in Python

À vous de créer des cohortes !

Customer Segmentation in Python

Preparing Video For Download...