Analiza kohort

Segmentacja klientów w Pythonie

Karolis Urbonas

Head of Data Science, Amazon

Mapa cieplna analizy kohort

Wiersze:

  • Pierwsza aktywność
  • Tu — miesiąc pozyskania

Kolumny:

  • Czas od pierwszej aktywności
  • Tu — miesiące od pozyskania

Mapa cieplna kohort

Segmentacja klientów w Pythonie

Mapa cieplna analizy kohort

Wiersze:

  • Pierwsza aktywność
  • Tu — miesiąc pozyskania

Kolumny:

  • Czas od pierwszej aktywności
  • Tu — miesiące od pozyskania

Segmentacja klientów w Pythonie

Dane sklepu internetowego

Ponad 0,5 miliona transakcji z brytyjskiego sklepu internetowego.

W kursie używamy losowej próby stanowiącej 20% tego zbioru danych.

OnlineRetail

Segmentacja klientów w Pythonie

Pierwsze 5 wierszy danych

online.head()

Pierwsze 5 wierszy

Segmentacja klientów w Pythonie

Przypisanie kohorty miesiąca pozyskania

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 z dodaną kohortą

Segmentacja klientów w Pythonie

Wyodrębnianie wartości całkowitych z danych

Funkcja wyodrębniająca wartości całkowite year, month i day.

Będzie używana w całym kursie.

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
Segmentacja klientów w Pythonie

Przypisanie wartości przesunięcia czasowego

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 z dodanym przesunięciem czasowym

Segmentacja klientów w Pythonie

Liczba aktywnych klientów miesięcznie dla każdej kohorty

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)
Segmentacja klientów w Pythonie

pivot z liczbą aktywnych klientów

Segmentacja klientów w Pythonie

Czas na zbudowanie własnych kohort!

Segmentacja klientów w Pythonie

Preparing Video For Download...