Kohortenanalyse für Data Science

Inhalt

Dieser Artikel wurde im Rahmen der Data Science Blogathon

Nachdem Sie dieses praktische Tutorial verstanden und durchgearbeitet haben, kann:

  • Verstehen, was Kohorte und Kohortenanalyse ist.
  • Umgang mit fehlenden Werten
  • Monat aus Datum extrahieren
  • Asignar cohorte a cada Transaktion
  • Asignar Index de cohorte a cada transacción
  • Berechnen Sie die Anzahl der eindeutigen Kunden in jeder Gruppe.
  • Erstellen Sie eine Kohortentabelle für die Bindungsrate
  • Visualice la tabla de cohortes usando el Heatmap
  • Retentionsrate interpretieren

Was ist Kohorte und Kohortenanalyse?

Eine Kohorte ist eine Sammlung von Benutzern, die etwas gemeinsam haben. Eine traditionelle Kohorte, zum Beispiel, Teilen Sie die Personen nach der Woche oder dem Monat, in dem sie zum ersten Mal erworben wurden. Bei Bezugnahme auf nicht zeitabhängige Pools, Anstelle von Kohorte wird häufig der Begriff Segment verwendet.

El análisis de cohortes es una técnica Analyse descriptiva en el análisis de cohortes. Kunden werden in sich gegenseitig ausschließende Kohorten eingeteilt, die dann über die Zeit verfolgt werden. Eitelkeitsindikatoren bieten nicht den gleichen Erkenntnisgrad wie Kohortenforschung. Hilft bei der tieferen Interpretation von Mustern auf hoher Ebene, indem Metriken über den Produkt- und Verbraucherlebenszyklus bereitgestellt werden.

Allgemein, Es gibt drei Haupttypen von Kohorten:

  • Zeit Kohorten: Kunden, die sich während eines bestimmten Zeitraums für ein Produkt oder eine Dienstleistung angemeldet haben.
  • Verhaltenskohorten: Kunden, die in der Vergangenheit ein Produkt gekauft oder einen Dienst abonniert haben.
  • Größe Kohorten: beziehen sich auf die unterschiedliche Größe der Kunden, die die Produkte oder Dienstleistungen des Unternehmens kaufen.

Aber trotzdem, wir werden tun Zeitbasierte Kohortenanalyse. Die Kunden werden basierend auf dem Monat ihres ersten Kaufs in Kaufkohorten eingeteilt. Später, der Kohortenindex würde jedem der Einkäufe des Kunden zugeordnet werden, die die Anzahl der Monate seit der ersten Transaktion darstellt.

Ziele:

  1. Ermitteln Sie den Prozentsatz der aktiven Kunden im Vergleich zur Gesamtzahl der Kunden nach jedem Monat: Kundensegmentierungen
  2. Retentionsrate interpretieren

Hier ist der vollständige Code für dieses Tutorial. si desea seguir la información a messen que avanza en el tutorial.

Schritt, der an der Analyse der Kohortenbindungsrate beteiligt ist

1. Laden und Bereinigen von Daten

2. Ordnen Sie die Kohorte zu und berechnen Sie die

Paso 2.1

  • Kürzen Sie das Datenobjekt auf ein erforderliches Objekt (Hier brauchen wir den Monat, also das Transaktionsdatum)
  • Groupby-Objekt mit Zielspalte erstellen (hier, Kundennummer)
  • Transformiere mit einer min-Funktion () jedem Kunden das kleinste Transaktionsdatum im Monatswert zuzuordnen.

Das Ergebnis dieses Prozesses ist die Akquisitionsmonatskohorte für jeden Kunden, nämlich, Jedem Kunden haben wir die Kohorte des Akquisitionsmonats zugeordnet.

Paso 2.2

  • Berechnen Sie den Zeitversatz, indem Sie ganzzahlige Werte des Jahres extrahieren, Monat und Tag eines datetime-Objekts ().
  • Berechnen Sie die Anzahl der Monate zwischen jeder Transaktion und der ersten Transaktion für jeden Kunden. Dazu verwenden wir die Werte TransactionMonth und CohortMonth.

Das Ergebnis davon ist cohortIndex, nämlich, der Unterschied zwischen “TransaktionsMonat” Ja “KohortenMonat” in Bezug auf die Anzahl der Monate und nennen Sie die Spalte “Kohortenindex”.

Paso 2.3

  • Erstellen Sie ein Groupby-Objekt mit CohortMonth und CohortIndex.
  • Zählen Sie die Anzahl der Kunden in jeder Gruppe, indem Sie die pandas nunique-Funktion anwenden ().
  • Setzen Sie den Index zurück und erstellen Sie einen Pandas-Pivot mit CohortMonth in den Zeilen, Die Spalten CohortIndex und customer_id zählen als Werte.

Das Ergebnis ist die Tabelle, die als Grundlage für die Berechnung der Retentionsrate und weiterer Matrizen dient.

3. Berechnen Sie kommerzielle Matrizen: Retentionsrate.

Retention misst, wie viele Kunden aus jeder Kohorte in den folgenden Monaten zurückgekehrt sind.

  • Verwenden des Datenframeworks namens cohort_counts, Wir wählen die ersten Spalten aus (entspricht der Gesamtzahl der Kunden in Kohorten)
  • Berechnen Sie den Anteil, wie viele dieser Kunden in den folgenden Monaten zurückgekehrt sind.

Das Ergebnis ergibt eine Retentionsrate.

4. Anzeigen der Aufbewahrungsrate

5. Interpretation der Retentionsrate

65475screen20shot202021-05-1820at201-56-0720pm-6150766

Monatliche Kohortenbindungsrate.

Lasst uns beginnen:

Bibliotheken importieren

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import datetime as dt
import missingno as msno
from textwrap import wrap

Laden und Bereinigen von Daten

# Loading dataset
transaction_df = pd.read_excel("Transkationen.xlsx")
# View data
transaction_df.head()

Comprobando y trabajando con valor faltante

# Inspect missing values in the dataset
print(transaction_df.isnull().Werte.Summe())
# Replace the ' 's with NaN
transaction_df = transaction_df.replace(" ",Np. NaN)
# Impute the missing values with mean imputation
transaction_df = transaction_df.fillna(transaction_df.Mittelwert())
# Count the number of NaNs in the dataset to verify
print(transaction_df.isnull().Werte.Summe())
drucken(transaction_df.info())
für col in transaction_df.columns:
    # Check if the column is of object type
    if transaction_df[col].dtypes == 'object':
        # Impute with the most frequent value
        transaction_df[col] = transaction_df[col].Fillna(transaction_df[col].value_counts().Index[0])
# Count the number of NaNs in the dataset and print the counts to verify
print(transaction_df.isnull().Werte.Summe())

Hier, podemos ver que tenemos 1542 Valores Nulos. Que tratamos con valores medios y más frecuentes según el tipo de datos. Ahora que hemos completado nuestra limpieza y comprensión de datos, Comenzaremos el análisis de cohorte.

Asignó las cohortes y calculó la compensación mensual.

# Eine Funktion, die die datumszeitbasierte Kohorte analysiert:  1 day of month
def get_month(x): Rückgabe dt.datetime(x.Jahr, x.Monat, 1) 
# Create transaction_date column based on month and store in TransactionMonth
transaction_df['TransactionMonth'] = transaction_df["transaction_date"].anwenden(get_month) 
# Grouping by customer_id and select the InvoiceMonth value
grouping = transaction_df.groupby("customer_id")['TransactionMonth'] 
# Assigning a minimum InvoiceMonth value to the dataset
transaction_df['Kohortenmonat'] = gruppieren.transform("min")
# oben drucken 5 rows
print(transaction_df.Kopf())

71928screen20shot202021-05-1920at205-06-3320pm-1263368

Cálculo de la compensación de tiempo en el mes como índice de cohorte

Die Berechnung der Zeitkompensation für jede Transaktion ermöglicht es Ihnen, die Metriken für jede Kohorte auf vergleichbare Weise auszuwerten.

Zuerst, wir werden schaffen 6 Variablen, die den ganzzahligen Wert von Jahren erfassen, Monate und Tage für Transaktion und Kohortendatum mit der Funktion get_date_int ().

def get_date_int(df, Säule):
    Jahr = df[Säule].dt.year
    month = df[Säule].dt.month
    day = df[Säule].dt.day
    return year, Monat, Tag
# Getting the integers for date parts from the `InvoiceDay` column
transcation_year, transaction_month, _ = get_date_int(transaction_df, 'TransactionMonth')
# Getting the integers for date parts from the `CohortDay` column
cohort_year, cohort_month, _ = get_date_int(transaction_df, 'Kohortenmonat')

Wir berechnen nun die Differenz zwischen Rechnungsdaten und Kohortendaten in Jahren, Monate separat. Berechnen Sie dann die Gesamtdifferenz der Monate zwischen den beiden. Dies wird der Kohorten- oder Vergütungsindex unseres Monats sein., die wir im nächsten Abschnitt verwenden werden, um die Retentionsrate zu berechnen.

#  Get the  difference in years
years_diff = transcation_year - cohort_year
# Calculate difference in months
months_diff = transaction_month - cohort_month
""" Extrahieren Sie die Differenz in Monaten aus allen vorherigen Werten
 "+1" am Ende hinzugefügt, so dass der erste Monat als 1 Anstatt von 0 für eine einfachere Interpretation. 
 """
transaction_df['Kohortenindex'] = years_diff * 12 + months_diff  + 1 
drucken(transaction_df.Kopf(5))
83682screen20shot202021-05-1920at2011-50-5120pm-9825983

Hier, anfangs, wir haben ein erstellt Gruppe() Objekt mit Kohortenmonat und KohortenIndex und speichern Sie es als Gruppierung.

Später, Wir nennen dieses Objekt, Wir wählen die Kundenidentifikation Spalte und berechnen Sie den Durchschnitt.

Wir speichern die Ergebnisse dann als cohort_data. Später, Setzen Sie den Index zurück, bevor Sie die Pivot-Funktion aufrufen, um auf die Spalten zugreifen zu können, die jetzt als Indizes gespeichert sind.

Schließlich, creamos una dynamische Tabelle omitiendo

  • KohortenMes zum Indexparameter,
  • Kohortenindex zum Parameter column,
  • Kundenidentifikation zum Parameter values.

und runden Sie es auf 1 Ziffern Sie und sehen Sie, was wir bekommen.

# Counting daily active user from each chort
grouping = transaction_df.groupby(['Kohortenmonat', 'Kohortenindex'])
# Counting number of unique customer Id's falling in each group of CohortMonth and CohortIndex
cohort_data = grouping["customer_id"].anwenden(Pd. Serie.nunique)
cohort_data = cohort_data.reset_index()
 # Assigning column names to the dataframe created above
cohort_counts = cohort_data.pivot(index='CohortMonth',
                                 Spalten="KohortenIndex",
                                 Werte="Kundennummer")
# Drucken nach oben 5 rows of Dataframe
cohort_data.head()

7-1-1-300x144-5686850

Geschäftsmetriken berechnen: Retentionsrate

Der Prozentsatz der aktiven Kunden im Vergleich zur Gesamtzahl der Kunden nach einem bestimmten Zeitintervall wird als Bindungsrate bezeichnet.

In diesem Abschnitt, Wir berechnen die Retentionszahl für jeden Kohortenmonat gepaart mit dem Kohortenindex

Jetzt, da wir für jeden eine Anzahl von Stammkunden haben kohorteMes Ja Kohortenindex. Wir berechnen die Bindungsrate für jede Kohorte.

Dazu erstellen wir eine Pivot-Tabelle.

cohort_sizes = cohort_counts.iloc[:,0]
Retention = cohort_counts.divide(cohort_sizes, Achse=0)
# Umrechnung der Retentionsrate in Prozent und Rundung.
Retention.round(3)*100
68437screen20shot202021-05-1920at2011-42-1520pm-6296703

Der Datenrahmen für die Bindungsrate stellt die Kundenbindung über alle Kohorten dar. Wir können es wie folgt lesen:

  • Der Indexwert repräsentiert die Kohorte
  • Die Spalten stellen die Anzahl der Monate seit der aktuellen Kohorte dar

Zum Beispiel: Der Wert in CohortMonth 2017-01-01, KohortenIndex 3 es ist 35,9 und repräsentiert 35,9% der Kunden in der Kohorte 2017-01 wurden in der gehalten 3ist mes.

Was ist mehr, Sie können im Retention Rate DataFrame sehen:

  • Retention Rate Der erste Index, nämlich, der erste Monat ist 100%, da sich alle Kunden dieses bestimmten Kunden im ersten Monat angemeldet haben
  • Die Haltequote kann in nachfolgenden Indizes steigen oder sinken.
  • Die Werte rechts unten haben viele NaN-Werte.

Visualisierung der Retentionsrate

Bevor wir mit dem Plotten unserer Heatmap beginnen, Lassen Sie uns den Index unseres Datenrahmens für die Aufbewahrungsrate auf ein besser lesbares Zeichenfolgenformat setzen.

average_standard_cost.index = average_standard_cost.index.strftime('%Y-%m')
# Initialize the figure
plt.figure(Feigengröße=(16, 10))
# Adding a title
plt.title("Durchschnittliche Standardkosten: Monatliche Kohorten", fontsize = 14)
# Creating the heatmap
sns.heatmap(average_standard_cost, annot = wahr,vmin = 0.0, vmax = 20,cmap="YlGnBu", fmt="g")
plt.ylabel('Kohortenmonat')
plt.xlabel("Kohortenindex")
plt.yticks( rotation='360')
plt.zeigen()
12487screen20shot202021-05-1920at2011-45-0820pm-4695049

Interpretation der Retentionsrate

Der effektivste Weg, Kohortenanalysedaten zu visualisieren und zu analysieren, ist eine Heatmap., wie wir es zuvor getan haben. Bietet sowohl tatsächliche Metrikwerte als auch Farbcodierung, um Zahlenunterschiede visuell anzuzeigen.

Wenn Sie keine Grundkenntnisse über Heatmap haben, Sie können meinen Blog überprüfen. Explorative Datenanalyse für Einsteiger mit Python, wo ich über Heatmaps für Anfänger gesprochen habe.

Hier, haben 12 Kohorten für jeden Monat und 12 Kohortensätze. Je dunkler die Blautöne, desto höher die Werte. A) Ja, wenn wir im Monat der Kohorte sehen 2017-07 in der 5. Indexkohorte, wir sehen den dunkelblauen Ton mit a 48% was bedeutet, dass die 48% der Kohorten, die im Juli unterzeichnet haben 2017 aktiv waren 5 Monate später.

Damit ist unsere Kohortenanalyse für die Retentionsrate abgeschlossen. Ähnlich, Wir können Kohortenanalysen für andere kommerzielle Matrizen durchführen.

Klicken Sie hier, um mehr über die Kohortenanalyse für Unternehmen zu erfahren kostenlos mit DataCamp.(Affiliate-Link)

Deswegen, Wir haben unsere Kohortenanalyse abgeschlossen, wo Sie Grundlagen- und Kohortenanalyse kennengelernt haben, Durchführung von Zeitkohorten, Arbeiten mit Pandas Pivot und Erstellen einer Hold-Tabelle zusammen mit Visualisierung. Wir haben auch gelernt, wie man andere Arrays untersucht.

Jetzt, Sie können selbst damit beginnen, die Metriken zu erstellen und zu untersuchen, die für Ihr Unternehmen wichtig sind.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.