---
Agora vamos aprender sobre o tipo de análise de coorte mais popular - coortes de tempo. Vamos segmentar os clientes em coortes de aquisição com base no mês em que fizeram sua primeira compra. Em seguida, atribuíremos o índice da coorte a cada compra do cliente. Isso representará o número de meses desde a primeira transação.
Coortes baseadas em tempo agrupam clientes pelo momento em que completaram sua primeira atividade.
Nesta lição, vamos agrupar os clientes em coortes com base no mês de sua primeira compra. Depois, marcaremos cada transação com base em seu período de tempo relativo desde a primeira compra. Neste exemplo, calcularemos o número de meses desde a aquisição. No próximo passo, calcularemos métricas como retenção ou valor médio de gasto, e construiremos este mapa de calor.
Por exemplo, esse número significa que 24% da coorte que se inscreveu em agosto de 2011 estava ativa 4 meses depois.
A primeira coluna aqui é o mês da primeira compra, portanto a taxa de retenção é de 100%. Isso é por definição, já que os clientes precisavam estar ativos neste mês para serem atribuídos a essa coorte.
Um pouco sobre os dados. Usaremos uma amostra aleatória de 20% de um conjunto de dados de varejo online com meio milhão de transações.
Este é um conjunto de dados realista com transações de clientes que é comumente usado em segmentação.
Vamos olhar as primeiras 5 linhas dele.
Os dados contêm 7 colunas com transações de clientes. As principais que usaremos são data, preço e customerID.
Agora que carregamos os dados, vamos construir uma tabela de coorte simples para coortes baseadas em tempo.
Primeiro, criamos uma função que trunca um objeto de data para o primeiro dia do mês.
Em seguida, aplicamos isso à InvoiceDate e criamos uma coluna InvoiceMonth.
Depois, criamos um objeto groupby() com CustomerID e usamos a coluna InvoiceMonth para manipulação posterior.
Finalmente, usamos transform() junto com uma função min() para atribuir o menor valor de InvoiceMonth a cada cliente. Com isso, atribuímos o mês de aquisição da coorte a cada cliente.
Vamos olhar os dados. Adicionamos duas colunas - InvoiceMonth e CohortMonth. Agora, vamos calcular o deslocamento de tempo!
Antes de calcular o deslocamento de tempo, primeiro criaremos uma função auxiliar que extrairá valores inteiros do ano, mês e dia de um objeto datetime().
Agora, calcularemos o número de meses entre qualquer transação e a primeira transação de cada cliente. Usaremos os valores de InvoiceMonth e CohortMonth para isso.
Começaremos criando dois objetos com valores inteiros de ano e mês de cada uma das variáveis InvoiceMonth e CohortMonth. Em seguida, calcularemos as diferenças em anos e meses entre eles.
Finalmente, converteremos a diferença total em meses multiplicando a diferença de anos por 12 e somando-os.
Você pode ver que há um "+1" no final. Fazemos isso para que o primeiro mês seja marcado como 1 em vez de 0 para facilitar a interpretação.
Você pode ver que a nova coluna foi adicionada. Agora, vamos puxar algumas métricas!
Agora vamos calcular o número de clientes ativos mensais em cada coorte.
Primeiro, criaremos um objeto groupby com CohortMonth e CohortIndex.
Em seguida, contaremos o número de clientes em cada grupo aplicando a função pandas nunique().
Depois, redefinimos o índice e criamos um pivot pandas com CohortMonth nas linhas, CohortIndex nas colunas e contagens de CustomerID como valores.
Vamos dar uma olhada na nossa tabela.
Este é o resultado! Criamos uma tabela que servirá como base para o restante deste capítulo.
Na próxima lição, aprenderemos como calcular a taxa de retenção - é muito simples e está a apenas algumas linhas de código de distância! Agora - é sua vez de construir algumas coortes!