Когортний аналіз

Сегментація клієнтів у Python

Karolis Urbonas

Head of Data Science, Amazon

Теплова мапа когортного аналізу

Рядки:

  • Перша активність
  • Тут — місяць залучення

Стовпці:

  • Час від першої активності
  • Тут — місяці від залучення

Теплова мапа когорт

Сегментація клієнтів у Python

Теплова мапа когортного аналізу

Рядки:

  • Перша активність
  • Тут — місяць залучення

Стовпці:

  • Час від першої активності
  • Тут — місяці від залучення

Сегментація клієнтів у Python

Дані онлайн-ритейлу

Понад 0,5 мільйона транзакцій з інтернет-магазину у Великій Британії.

Упродовж курсу ми використовуватимемо випадкову 20% вибірку цього набору даних.

OnlineRetail

Сегментація клієнтів у Python

Перші 5 рядків даних

online.head()

Перші 5 рядків

Сегментація клієнтів у Python

Призначення місяця залучення для когорти

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

Сегментація клієнтів у Python

Вилучення цілих значень з даних

Визначте функцію для вилучення цілих значень year, month і day.

Ми використовуватимемо її протягом курсу.

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
Сегментація клієнтів у Python

Призначення значення часової зсувності

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

Сегментація клієнтів у Python

Підрахунок щомісячно активних клієнтів у кожній когорті

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)
Сегментація клієнтів у Python

зведена_таблиця_щомісячних_клієнтів

Сегментація клієнтів у Python

Тепер ваша черга створити кілька когорт!

Сегментація клієнтів у Python

Preparing Video For Download...