---
Ahora aprenderemos sobre el tipo de análisis de cohortes más popular: las cohortes de tiempo. Segmentaremos a los clientes en cohortes de adquisición basadas en el mes en que realizaron su primera compra. Luego asignaremos el índice de cohorte a cada compra del cliente. Esto representará el número de meses desde la primera transacción.
Las cohortes basadas en el tiempo agrupan a los clientes según el momento en que completaron su primera actividad.
En esta lección, agruparemos a los clientes en cohortes según el mes de su primera compra. Luego marcaremos cada transacción según su período de tiempo relativo desde la primera compra. En este ejemplo, calcularemos el número de meses desde la adquisición. En el siguiente paso, calcularemos métricas como la retención o el valor promedio de gasto, y construiremos este mapa de calor.
Por ejemplo, este número significa que el 24% de la cohorte que se inscribió en agosto de 2011, estuvo activa 4 meses después.
La primera columna aquí es el mes de la primera compra, por lo tanto, la tasa de retención es del 100%. Esto es por definición, ya que los clientes debían estar activos en este mes para ser asignados a esta cohorte.
Un poco sobre los datos. Usaremos una muestra aleatoria del 20% de un conjunto de datos de comercio minorista en línea con medio millón de transacciones.
Este es un conjunto de datos realista con transacciones de clientes que se utiliza comúnmente en segmentación.
Veamos las primeras 5 filas de él.
Los datos contienen 7 columnas con transacciones de clientes. Las principales que utilizaremos son fecha, precio y customerID.
Ahora que hemos cargado los datos, construyamos una tabla de cohortes simple para cohortes basadas en el tiempo.
Primero, creamos una función que trunca un objeto de fecha dado al primer día del mes.
Luego la aplicamos a InvoiceDate y creamos una columna InvoiceMonth.
A continuación, creamos un objeto groupby() con CustomerID y usamos la columna InvoiceMonth para manipulaciones posteriores.
Finalmente, usamos transform() junto con una función min() para asignar el valor más pequeño de InvoiceMonth a cada cliente. Con solo eso, hemos asignado el mes de adquisición a cada cliente.
Veamos los datos. Hemos agregado dos columnas: InvoiceMonth y CohortMonth. ¡Ahora, calculemos el desfase de tiempo!
Antes de poder calcular el desfase de tiempo, primero crearemos una función auxiliar que extraerá los valores enteros del año, mes y día de un objeto datetime().
Ahora, calcularemos el número de meses entre cualquier transacción y la primera transacción para cada cliente. Usaremos los valores de InvoiceMonth y CohortMonth para hacer esto.
Comenzaremos creando dos objetos con valores enteros de año y mes de cada una de las variables InvoiceMonth y CohortMonth. Luego calcularemos las diferencias en años y meses entre ellos.
Finalmente, convertiremos la diferencia total a meses multiplicando la diferencia de años por 12 y sumándolos.
Puedes ver que hay un "+1" al final. Hacemos esto para que el primer mes se marque como 1 en lugar de 0 para una interpretación más fácil.
Puedes ver que se ha agregado la nueva columna. ¡Ahora, obtengamos algunas métricas!
Ahora calcularemos el número de clientes activos mensuales en cada cohorte.
Primero, crearemos un objeto groupby con CohortMonth y CohortIndex.
Luego, contaremos el número de clientes en cada grupo aplicando la función nunique() de pandas.
Luego, restablecemos el índice y creamos un pivot de pandas con CohortMonth en las filas, CohortIndex en las columnas y los conteos de CustomerID como valores.
Veamos nuestra tabla.
¡Este es el resultado! Hemos creado una tabla que servirá como base para el resto de este capítulo.
En la próxima lección, aprenderemos a calcular la tasa de retención: es muy simple y está a solo unas pocas líneas de código de distancia. ¡Ahora es tu turno de construir algunas cohortes!