Este proyecto es un análisis end-to-end sobre el impacto de los tiempos de entrega en la satisfacción del cliente, utilizando datos reales de Olist (e-commerce brasileño). El flujo de trabajo abarca desde la ingesta y limpieza de datos con Python (Pandas) hasta la creación de un dashboard interactivo en Looker Studio para la toma de decisiones operativas.
El panel y el análisis buscan responder la siguiente interrogante crítica para la operación:
"¿Cómo impactan los retrasos en la entrega en la satisfacción del cliente (Net Prometer Score (NPS)/Review Score) y cuáles son las regiones geográficas que presentan mayores fricciones logísticas?"
El resultado final de este análisis se presenta en el siguiente tablero de control:
🔗 Ver Dashboard en Looker Studio
El análisis de 96,470 órdenes permitió responder la interrogante central del proyecto con los siguientes hallazgos:
-
Impacto en satisfacción: ¿Cómo impactan los retrasos? El retraso cuesta 2 estrellas de reputación. Los clientes no penalizan ligeramente; castigan severamente. El puntaje promedio cae de 4.29 (clientes puntuales) a 2.27 (clientes con retraso), una reducción de 2.02 puntos que destruye el Net Promoter Score (NPS) de la compañía.
-
Foco Geográfico: ¿Cuáles son las regiones con mayores problemas? El "Nordeste" es la región crítica a intervenir. Mientras el Sur opera con eficiencia (solo 5.9% de retrasos), el Nordeste presenta fallas estructurales graves con una tasa de retraso del 12.72% (el doble que el promedio nacional). La estrategia logística debe priorizar esta zona, ya que es donde se pierden más clientes por insatisfacción.
-
Comportamiento del cliente: Insight de negocio: Se descubrió una polarización extrema en las calificaciones. El 78.4% de las reviews son positivas (4-5 estrellas), pero ante un fallo, la calificación se desploma directamente a 1 estrella (9.7% de los casos), sin pasar por puntos medios. Esto indica que la operación no tiene margen de error: cumplir la promesa de entrega es el único driver real de fidelización.
-
Estacionalidad: Insight Operativo: El sistema colapsa en Marzo y Noviembre. Los problemas logísticos no son constantes sino estacionales. Se detectaron picos de retraso superiores al 13% en Marzo y Noviembre (posiblemente Black Friday), sugiriendo que la infraestructura actual no es escalable ante picos de demanda, por lo que se requieren refuerzos específicos en esas fechas.
Para asegurar que el dashboard fuera accionable, se tomaron las siguientes decisiones de diseño y UX:
- Narrativa visual: Se utilizó un layout en F, estructurando la lectura desde los KPIs macro (superior izquierda) hacia el detalle de impacto (centro) y finalmente la distribución geográfica (derecha/abajo), facilitando el escaneo rápido para la toma de decisiones.
- Semáforo de colores: Se implementó una paleta de colores consistente (
#2DCC98para "A Tiempo" y#FF6B6Bpara "Con retraso") en todos los gráficos. Esto permite al usuario identificar problemas visualmente de manera rápida sin leer etiquetas. - Selección de gráficos:
- Mapa de burbujas: Se eligió un mapa de burbujas en vez de un mapa geográfico para evitar sesgos referentes al tamaño de dichas áreas geográficas. Esto permite visualizar volumen de ventas (tamaño) y satisfacción (color) independientemente del tamaño físico del estado.
- Gráfico de barras: Se diseñó específicamente para contrastar el Review Score promedio en pedidos puntuales (4.29) vs. retrasados (2.27), cuantificando el costo del problema.
- Métricas de negocio (KPIs): Se priorizó la "Tasa de cumplimiento de entregas" (On-time delivery) como métrica principal de eficiencia logística.
Se utilizaron tres datasets relacionales del Brazilian E-Commerce Public Dataset by Olist:
olist_orders_dataset.csv: Base transaccional (Fechas estimadas vs. reales).olist_order_reviews_dataset.csv: Feedback del cliente (Scores 1-5).olist_customers_dataset.csv: Dimensiones geográficas.
El procesamiento de datos se ejecutó en Python, utilizando métodos vectorizados de Pandas para asegurar eficiencia y reproducibilidad. El proceso detallado se encuentra en el notebook 1.0-data-loading-and-cleaning.ipynb.
-
Extracción y limpieza:
- Ingesta de archivos CSV (
pd.read_csv) y conversión estricta de variables temporales (pd.to_datetimeconerrors='coerce'). - Filtrado de consistencia lógica para eliminar fechas de entrega anteriores a la compra y manejo de valores nulos críticos (
dropna).
- Ingesta de archivos CSV (
-
Integración de datos:
- Consolidación del modelo de datos mediante
pd.merge()(Left Joins), unificando las dimensiones de Órdenes, Reviews y Clientes. - Eliminación de duplicados de reseñas (
drop_duplicates) conservando la calificación más reciente por orden.
- Consolidación del modelo de datos mediante
-
Feature Engineering:
- Cálculo aritmético de fechas (
dt.days) para generar las métricasdias_retrasoydias_reales_entrega. - Segmentación de la severidad del retraso utilizando
pd.cut()para crear categorías (Muy temprano, A tiempo, Retraso leve, Retraso moderado, Retraso severo). - Enriquecimiento geográfico mapeando siglas de estados a macrorregiones (
mapcon diccionarios).
- Cálculo aritmético de fechas (
-
Carga (output):
- Exportación del dataset procesado (
to_csv) optimizado para la ingestión directa en Looker Studio.
- Exportación del dataset procesado (
ecommerce-shipping-delay-analysis/
├── data/
│ ├── raw/ # Datasets originales (CSV)
│ │ ├── olist_orders_dataset.csv # Información de órdenes y fechas de entrega
│ │ ├── olist_order_reviews_dataset.csv # Calificaciones de satisfacción del cliente
│ │ └── olist_customers_dataset.csv # Información geográfica de clientes
│ └── processed/ # Datos limpios y procesados
│ └── visualizations/ # Visualizaciones generadas durante el EDA
│ ├── analisis_geografico_regiones.png
│ ├── dashboard_preview.png
│ ├── distribucion_retrasos.png
│ ├── distribucion_satisfaccion.png
│ ├── matriz_correlacion.png
│ └── relacion_retraso_satisfaccion.png
├── docs/
│ └── eda_conclusions.md # Conclusiones del análisis exploratorio
├── notebooks/
│ ├── 1.0-data-loading-and-cleaning.ipynb # Preparación de datos
│ └── 2.0-eda.ipynb # Análisis exploratorio
├── requirements.txt # Dependencias de Python
└── README.md
git clone https://github.com/anibalrojosan/ecommerce-shipping-delay-analysis
cd ecommerce-shipping-delay-analysisDescarga el dataset completo desde Kaggle y descomprime el archivo ZIP. Luego copia los siguientes archivos CSV a data/raw/:
olist_orders_dataset.csvolist_order_reviews_dataset.csvolist_customers_dataset.csv
# Crear entorno virtual
python -m venv venv
# Activar entorno
# En Windows:
venv\Scripts\activate
# En Mac/Linux:
source venv/bin/activate
# Instalar dependencias
pip install -r requirements.txtjupyter lab notebooks/Ejecuta en orden:
1.0-data-loading-and-cleaning.ipynb: Genera el archivodf_delivery_analysis.csv2.0-eda.ipynb: Genera las visualizacione exploratorias
Aníbal Rojo Sandoval
