Análisis de cohortes

Segmentación de clientes en Python

Karolis Urbonas

Head of Data Science, Amazon

Mapa de calor de cohortes

Filas:

  • Primera actividad
  • Aquí: mes de adquisición

Columnas:

  • Tiempo desde la primera actividad
  • Aquí: meses desde la adquisición

Mapa de calor de cohortes

Segmentación de clientes en Python

Mapa de calor de cohortes

Filas:

  • Primera actividad
  • Aquí: mes de adquisición

Columnas:

  • Tiempo desde la primera actividad
  • Aquí: meses desde la adquisición

Segmentación de clientes en Python

Datos de venta online

Más de 0,5 millones de transacciones de una tienda online del Reino Unido.

Usaremos una muestra aleatoria del 20% de este dataset durante el curso.

OnlineRetail

Segmentación de clientes en Python

Primeras 5 filas de datos

online.head()

Primeras 5 filas

Segmentación de clientes en Python

Asignar cohorte por mes de adquisición

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

Segmentación de clientes en Python

Extraer enteros de fechas

Define una función para extraer los enteros de year, month y day.

La usaremos en todo el 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
Segmentación de clientes en Python

Asignar desplazamiento temporal

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

Segmentación de clientes en Python

Contar clientes activos mensuales por cohorte

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)
Segmentación de clientes en Python

tabla-pivot-online-cuentas

Segmentación de clientes en Python

¡Tu turno para crear cohortes!

Segmentación de clientes en Python

Preparing Video For Download...