Proyecto de portafolio · SQL, pandas · Intermediate · 12 a 16 horas

Análisis de retención de clientes por cohortes

¿Vuelven a comprar los clientes primerizos y está mejorando o empeorando? Agrupas a los clientes por el mes de su primer pedido y sigues a cada grupo en el tiempo. Hacerlo en SQL y otra vez en pandas, con números que coinciden, demuestra dos habilidades y el hábito de verificar tu propio trabajo.

La pregunta de negocio

¿Qué proporción de los clientes primerizos vuelve a pedir en un plazo de 90 días, según el mes de su primer pedido, y está mejorando?

Convertida en un objetivo SMART, para que sepas cuándo terminaste y un evaluador vea que la acotaste como analista:

Specific
Tasa de recompra a 90 días de cada cohorte mensual de clientes primerizos, más una cuadrícula de retención mes a mes.
Measurable
Una tasa por cohorte con el tamaño de la cohorte al lado, y los mismos números en SQL y en pandas.
Achievable
Un conjunto de datos, un motor SQL que puedas ejecutar en local (DuckDB, SQLite o PostgreSQL) y un cuaderno.
Relevant
Le dice a marketing si conviene invertir en clientes nuevos o en lograr que los clientes primerizos vuelvan.
Time-bound
Cohortes del primer año completo del conjunto de datos; se excluyen las cohortes a las que les quedan menos de 90 días de datos. Listo en tres semanas.

Conjuntos de datos

Datos públicos, gratis para descargar. Elige uno, lee su licencia en la página de origen y enlaza esa página en tu README en vez de subir los archivos.

UCI Machine Learning Repository

Online Retail II

Dos años de facturas con un ID de cliente y una marca de tiempo en cada línea, para poder seguir a los clientes mes a mes. Una elección habitual para el análisis de cohortes.

Descarta las líneas sin ID de cliente y trata las facturas C como cancelaciones antes de buscar los primeros pedidos.

Kaggle

Brazilian E-Commerce Public Dataset by Olist

Una versión más difícil: la mayoría de los clientes pide una sola vez, así que la historia es lo pequeña que es la base de clientes recurrentes y qué distingue a los que vuelven.

Usa customer_unique_id. customer_id se crea por pedido, así que con él todos los clientes parecen compradores de una sola vez.

Google BigQuery public datasets

theLook eCommerce

Una tienda de ropa sintética con usuarios, pedidos y líneas de pedido, en bigquery-public-data.thelook_ecommerce. Consúltala con SQL en el entorno de pruebas gratuito de BigQuery.

Los datos son generados, así que dilo en el informe y centra los hallazgos en el método, no en un negocio real.

Paso a paso

Cada paso enlaza a niveles de AnalystQuest que enseñan la habilidad con los datos de la tienda Harbor & Pine, para que la practiques antes de aplicarla al conjunto de datos real.

  1. Define cliente, cohorte y "volvió"

    Escribe las reglas antes de cualquier consulta. Un cliente es una persona, no una cuenta ni un pedido. Su cohorte es el mes de su primer pedido completado. Volvió si un segundo pedido completado llega dentro de los 90 días.

    Decide qué hacer con las cohortes jóvenes: los clientes que compraron por primera vez en los últimos 90 días de los datos todavía no han tenido la ventana completa. Deja fuera esas cohortes o márcalas como incompletas. Esto es la censura por la derecha, y los entrevistadores preguntan por ella.

  2. Limpia hasta tener una fila por cliente

    Elimina las cancelaciones y las filas sin cliente, fusiona los clientes duplicados y revisa el rango de fechas. Cuenta clientes y pedidos antes y después, y guarda esos conteos para el README.

  3. Construye las cohortes en SQL

    Encuentra el primer pedido de cada cliente con MIN o ROW_NUMBER, asigna a cada pedido posterior un desfase en meses respecto a él, y luego cuenta clientes distintos por cohorte y desfase y divide entre el tamaño de la cohorte. Guarda las consultas como archivos .sql en el repositorio, no solo en un cuaderno.

  4. Rehazlo en pandas y dibuja la cuadrícula

    Repite el cálculo con groupby y pivot_table y confirma que coincide con SQL cohorte por cohorte. Después dibuja la cuadrícula de retención como un mapa de calor: las cohortes en el lateral, los meses desde el primer pedido arriba, la tasa en cada celda y el tamaño de la cohorte en la etiqueta.

    Añade un gráfico de líneas de la tasa de recompra a 90 días por cohorte. Ese es el gráfico que responde a la pregunta; la cuadrícula es la evidencia.

  5. Escribe el informe

    Empieza con la tasa y la tendencia, después las cohortes que destacan y una razón que puedas comprobar (temporada, categoría del primer producto, canal). Di con claridad qué no pueden decirte los datos, como si un descuento causó una recompra.

Qué mostrar

El mismo proyecto, presentado de tres maneras. Los números entre corchetes son marcadores: reemplázalos por tus propios resultados.

GitHub

README, en este orden

  1. Pregunta y objetivo SMART
  2. Imagen de la cuadrícula de retención
  3. Definiciones: cliente, cohorte, volvió, ventana
  4. Datos: enlace a la fuente, licencia, filas antes y después de limpiar
  5. Hallazgos y recomendación
  6. Cómo ejecutar el SQL y el cuaderno

Archivos

  • sql/01_clean.sql: limpieza y la tabla de una fila por cliente
  • sql/02_cohorts.sql: primeros pedidos, desfases en meses, la cuadrícula
  • notebooks/retention.ipynb: la reconstrucción en pandas, la comprobación de coincidencia y los gráficos
  • images/retention_grid.png: el mapa de calor para el README

LinkedIn

Esquema de la publicación

  1. Empieza con la tasa: "El [X]% de los compradores primerizos volvió en 90 días."
  2. Una línea sobre por qué importa: los clientes recurrentes cuestan menos que los nuevos.
  3. Una línea sobre el método: cohortes mensuales en SQL, verificadas con pandas.
  4. La cohorte que te sorprendió y tu mejor explicación.
  5. La imagen de la cuadrícula y el enlace al repositorio; pregunta cómo tratan otros las cohortes incompletas.

CV

Dos viñetas

  • Construí cohortes mensuales de retención para [5,900] clientes en SQL y pandas, con resultados idénticos fila por fila, que muestran que el [X]% de los compradores primerizos vuelve a pedir en 90 días.
  • Descubrí que los clientes captados en [nov–dic] vuelven a pedir a [la mitad] de la tasa de las cohortes de [primavera]; recomendé un correo de recuperación a los [60 días] a [marketing].

Empieza con un verbo, incluye un número y nombra la herramienta. Cada número debe ser uno que puedas explicar en una entrevista.

Plantilla de informe

Cópiala en tu README o en un documento y reemplaza cada corchete. Limita el resumen ejecutivo a lo que leería un gerente ocupado.

# [Título del proyecto]: retención de clientes por cohortes

## Resumen ejecutivo
[La tasa de recompra a 90 días, su tendencia y la acción que recomiendas.]

## Objetivo
¿Qué proporción de los clientes primerizos vuelve a pedir en 90 días, según el mes de su primer pedido, y está mejorando? Audiencia: [responsable de marketing].

## Datos y límites
Fuente: [conjunto de datos, enlace, licencia]. Periodo: [fechas].
Clientes después de limpiar: [n]. Eliminado: [n] cancelaciones, [n] filas sin cliente.
Cohortes posteriores a [mes] excluidas: menos de 90 días de datos (censura por la derecha).
Límites: [no hay datos de marketing, así que las recompras no se pueden atribuir a campañas].

## Método
Cliente = [..]. Cohorte = mes del primer pedido completado. Volvió = segundo pedido completado dentro de 90 días. Construido en SQL ([motor]); rehecho en pandas y comprobado cohorte por cohorte.

## Hallazgos
1. [Tasa general y tendencia, con números.]
2. [Cohortes más fuertes y más débiles, con sus tamaños.]
3. [Qué tienen en común las cohortes fuertes.]

## Recomendaciones
[Una o dos acciones y cómo las medirías.]

## Próximos pasos
[p. ej. retención de ingresos, no solo de clientes; una prueba de la oferta de recuperación.]

Errores comunes

  • Contar el primer pedido como una vuelta, de modo que todos los clientes parecen retenidos.
  • Usar un ID a nivel de pedido como ID de cliente.
  • Incluir cohortes que no han tenido la ventana completa, lo que hace que los meses recientes se vean peor.
  • Contar los pedidos cancelados como actividad.
  • Mostrar tasas sin el tamaño de las cohortes. Un 40% sobre 12 clientes es ruido.
  • Un promedio general en lugar de la tendencia por cohorte que pedía la pregunta.

Cuánto tiempo lleva

Unas 12 a 16 horas para una primera versión, repartidas en una a tres semanas de tardes.

Definir
1 hora
Limpiar
3 horas
Cohortes en SQL
3 a 4 horas
Reconstrucción en pandas y gráficos
3 a 5 horas
Escribir el informe
2 a 3 horas

Otros proyectos de portafolio

Excel, Power BI · 10 a 13 horas

Panel de ventas de un e-commerce

Una página que un director de ventas puede leer en un minuto: ingresos, pedidos, valor promedio del pedido y dónde se movieron.

Python, Statistics · 8 a 12 horas

Análisis e informe de una prueba A/B

Comprueba la asignación, estima el efecto con un intervalo de confianza y escribe una decisión sobre la que un gerente de producto pueda actuar.

SQL, Power BI, Excel · 14 a 20 horas

Informe mensual de KPI con SQL y Power BI

El informe que casi todo analista tiene a su cargo: SQL para los números, Power BI o Excel para la página, actualizado cada mes.

Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.