Análise de coortes

Segmentação de Clientes em Python

Karolis Urbonas

Head of Data Science, Amazon

Mapa de calor de análise de coortes

Linhas:

  • Primeira atividade
  • Aqui: mês de aquisição

Colunas:

  • Tempo desde a primeira atividade
  • Aqui: meses desde a aquisição

Mapa de calor de coortes

Segmentação de Clientes em Python

Mapa de calor de análise de coortes

Linhas:

  • Primeira atividade
  • Aqui: mês de aquisição

Colunas:

  • Tempo desde a primeira atividade
  • Aqui: meses desde a aquisição

Segmentação de Clientes em Python

Dados de varejo on-line

Mais de 500 mil transações de uma loja on-line do Reino Unido.

Usaremos uma amostra aleatória de 20% deste conjunto ao longo do curso.

Varejo on-line

Segmentação de Clientes em Python

5 primeiras linhas dos dados

online.head()

5 primeiras linhas

Segmentação de Clientes em Python

Definir coorte pelo mês de aquisição

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

Segmentação de Clientes em Python

Extrair valores inteiros da data

Defina uma função para extrair os inteiros de year, month e day.

Vamos usá-la ao longo do curso.

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
Segmentação de Clientes em Python

Calcular defasagem de tempo

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

Segmentação de Clientes em Python

Contar clientes ativos mensais por coorte

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)
Segmentação de Clientes em Python

tabela-pivot-online

Segmentação de Clientes em Python

Sua vez de criar coortes!

Segmentação de Clientes em Python

Preparing Video For Download...