Proyecto:
Este proyecto descompone la complejidad de los retrasos en la cadena de suministro mediante un modelo de regresión lineal multivariante (OLS). Al analizar siete nodos estratégicos, desde el dinamismo industrial de Detroit y Houston hasta los puntos de entrada clave en Nueva York, Miami y Los Ángeles, sin olvidar la conectividad de Portland y Kansas City, la investigación logra aislar el peso real de las variables ambientales, operativas y estructurales. El resultado es una herramienta diagnóstica que transforma datos crudos en decisiones tácticas para optimizar la puntualidad.
Autora: Constanza Segovia Aspee
- Objetivo
- Instalación
- Contexto de negocio
- Dataset
- Carpeta: API_clima
- Carpeta: Notebook
- Carpeta: SQL
- Carpeta: Power BI
- Análisis de KPIs e hipótesis
- Resultados/Insights
- Limitaciones y próximos pasos
- Cómo replicar el proyecto
El objetivo del proyecto es determinar mediante evidencia estadística el impacto real que tienen las variables externas e internas como son el clima, el peso, la distancia, las detenciones, etc. en los minutos de retraso de la logística de la empresa. El fin es cuantificar el porcentaje de influencia de cada factor para priorizar inversiones operativas y reducir el tiempo de retraso.
Necesario para ejecutar el proyecto:
- Lenguaje:
Python 3.13.9 - Librerías principales:
pandas,statsmodels,matplotlib/seabornynumpy. - Almacenamiento:
MySQL - Visualización:
Power BI
Se centra en las operaciones de carga y descarga en 7 ciudades (New York, Miami, Portland, Los Angeles, Houston, Detroit y Kansas City).
El problema es que a pesar de tener rutas estandarizadas, los retrasos promedio superan los 70 minutos por evento y el 77% de los eventos presentan retrasos. Se planteá la hipótesis de que el clima y el peso de la carga son factores claves; este análisis busca confirmar o desmentir esta hipótesis mediante evidencia estadística. El objetivo es poder reducir de manera significativa los retrasos y mejorar la eficiencia operativa.
Fuentes de datos
Detallaremos de donde sacamos los datos relevantes de nuestro análisis.
-
Primero: Dataset de operaciones logísticas de la empresa es tomado de Kaggle. Este entrega 14 data set de los cuales se seleccionan 7 para el análisis sobre como influyen los diferentes factores en los retrasos de los eventos de carga y descarga. Cada data set tiene sus características propias:
eventos_entregas.csv: se tienen 170 820 datos de los cuales nos quedamos con los eventos de carga y descarga de las 7 ciudades que hemos elegido por su ubicación geográfica y por su cantidad de habitantes, quedando con 66 416 eventos.viajes.csv: se tiene un total de 85 410 viajes que contiene la fecha del despacho, la distancia, horas de ralentí, etc.cargas.csv: se tiene un total de 85 410 cargas que contienen su peso, ruta, tipo de carga, recargo de combustible, etc.clientes.csv:se tiene un data set con 107 clientes que se clasifican en 3 tipos, su potencial ingreso, etc.rutas.csv: se tiene un data set con 58 rutas diferentes que contienen información sobre la distancia, tarifa de combustible, tiempo de demora en días, etc.compras_combustible.csv: se tiene un data set con 196 442 compras de combustible que contienen la fecha de compra, la cantidad de galones comprados, el precio por galón, etc.incidentes_seguridad.csv: se tiene un data set con 170 incidentes de seguridad que contienen la fecha del incidente, la causa, el nivel de gravedad, el monto de reclamación, etc.
-
Segundo: Datos climáticos históricos integrados vía API de la página Visual Crossing donde descargamos los datos desde 01-01-2022 hasta 02-01-2025 de las 7 ciudades seleccionadas, obteniendo datos de temperatura, humedad, precipitación, viento, etc. Como las descargas gratuitas tienen un límite de 1000 requests por día, se tuvo que descargar los datos en partes, quedando un total de 7 672 registros de clima en el dataset
Clima.csv.
Diccionario de datos
Variables de las columnas del data set final de estudio, que se trabajo para las visualizaciones:
id_evento: ID único del eventociudad: Ciudad de origentipo_evento: Tipo de evento (carga, descarga)fecha_hora_programada: Fecha y hora programada del eventofecha_hora_real: Fecha y hora real del eventoretraso_minutos: Minutos de retraso del eventominutos_de_detencion: Minutos de detención del eventotem_max_C: Temperatura máxima del día en grados Celsiustem_min_C: Temperatura mínima del día en grados Celsiustem_C: Temperatura promedio del día en grados Celsiusrocio_C: Punto de rocío del día en grados Celsiushumedad_pct: Humedad relativa del día en porcentajeprecip_mm: Precipitación del día en milímetrostipo_precip: Tipo de precipitación del díanieve_mm: Nieve del día en milímetrosprof_nieve_mm: Profundidad de nieve del día en milímetrosdir_viento_gr: Dirección del viento del día en gradosnubosidad_pct: Nubosidad del día en porcentajevisibilidad_km: Visibilidad del día en kilómetrosriesgo_severo: Riesgo severo del díacondiciones: Condiciones del díaciudad_origen: Ciudad de origenciudad_destino: Ciudad de destinodistancia_tipica_millas: Distancia típica en millasdistancia_km: Distancia en kilómetrostarifa_base_milla_eur: Tarifa base por milla en eurostasa_de_recargo_combustible: Tasa de recargo por combustibledias_de_transito_tipicos: Días típicos de tránsitonombre_cliente: Nombre del clientetipo_cliente: Tipo de clientetipo_carga_principal: Tipo de carga principalingreso_eur: Ingreso en eurosfecha_despacho: Fecha de despachodistancia_viaje: Distancia del viajeduracion_real_horas: Duración real en horasgalones_combustible_usados: Galones de combustible usadosmpg_promedio: MPG promediohoras_de_ralenti_RPM: Horas de ralentí en RPMfecha_carga: Fecha de cargatipo_carga: Tipo de cargapeso_kg: Peso en kilogramoseur_carga: Carga en eurosrecargo_combustible: Recargo por combustiblecargos_accesorios: Cargos por accesorios en eurostipo_reserva: Tipo de reservaa_tiempo: Si el despacho fue a tiempo si o nocategoria_riesgo: Categoría de riesgohora_dia: Hora del día en el que ocurrió el eventoturno: Turno de noche (18:00 - 06:00) o de día (06:00 - 18:00)costo_logistico_total: Costo logístico totalcosto_por_km: Costo por kilómetro en euroshubo_incidente: Si hubo incidente si o notipo_incidente: Tipo de incidentemonto_reclamacion_eur: Monto de reclamación en euroscausa: Causa del incidenteclima_eficiencia: Eficiencia del climaralenti_norm: Ralentí normalizado
En esta carpeta te encontraras con:
APIclima.ipynb: Aqui se realiza la descarga de los datos climáticos históricos vía API de Visual Crossing, debes tener una cuenta en la página para obtener la key de la API.Clima.csv: Dataset final con todos los datos climáticos históricos descargados.delivery_events.csv: Dataset con los eventos de entrega y las ciudades seleccionadas para el análisis.Funciones.py: Funciones auxiliares para el análisis de datos, cambio de variables o limpieza de datos.houston.csv: Dataset con los datos climáticos de Houston.union_clima.csv: Dataset con la unión de los datos climáticos de algunas ciudades.union_final.csv: Dataset con la unión de los datos climáticos de ciudades faltantes.
En esta carpeta te encontraras con:
-
subcarpeta
ANALISIS: aqui encontraras los siguientes archivos:analisis.ipynb: Análisis de los datos en diversas dimensiones con los resultados obtenidos de SQL query.data_final.csv: Dataset con los datos de logística resultado de los analisis realizados y otras nuevas categorías creadas.Funciones.py: Funciones auxiliares para el análisis de datos climáticos, cambio de variables o limpieza de datos.incidentes.csv: Dataset con los resultados de SQL query.UNION.csv: Dataset con la unión de los datos de logística de SQL query.
-
subcarpeta
HIPOTESIS_KPI: aqui encontraras los siguientes archivos:data_final.csv: Dataset con los datos de logística resultado de los analisis realizados y otras nuevas categorías creadas en los análisis.Funciones.py: Funciones auxiliares para el análisis de datos, cambio de variables o limpieza de datos.df_final_analisis.csv: Dataset con los datos de análisis de KPIs y de las hipótesis.diagrama.png: Diagrama de flujo de los datos utilizados en SQL.Hipotesis_KPI.ipynb: Análisis de las hipótesis, KPIs y modelos (OLS).incidentes.csv: Dataset con los resultados de las SQL query.
-
subcarpeta
LIMPIEZA: aqui encontraras los siguientes archivos:-
Limpieza_union.ipynb: Limpieza de los datos de la unión de los datos climáticos con los eventos y de todos los datasets para llevarlos limpios y traducidos a SQL. -
df_carga_estudio.csv: Dataset con los datos limpios y listos para SQL. -
df_clientes_estudio.csv: Dataset con los datos limpios y listos para SQL. -
df_combustible_estudio.csv: Dataset con los datos limpios y listos para SQL. -
df_incidente_estudio.csv: Dataset con los datos limpios y listos para SQL. -
df_rutas_estudio.csv: Dataset con los datos limpios y listos para SQL. -
df_union_estudio.csv: Dataset con los datos limpios y listos para SQL. -
df_viajes_estudio.csv: Dataset con los datos limpios y listos para SQL. -
Funciones.py: Funciones auxiliares para el análisis de datos, cambio de variables o limpieza de datos. -
subcarpeta
data: aqui encontraras los siguientes archivos:cargas.csv: Dataset original en inglés sin limpiar.Clima.csv: Dataset original en inglés sin limpiar.clientes.csv: Dataset original en inglés sin limpiar.compras_combustible.csv: Dataset original en inglés sin limpiar.incidentes_seguridad.csv: Dataset original en inglés sin limpiar.rutas.csv: Dataset original en inglés sin limpiar.eventos_entregas.csv: Dataset original en inglés sin limpiar.viajes.csv: Dataset original en inglés sin limpiar.
-
En esta carpeta encontraras:
traspasosql.ipynb: Notebook con el código para el traspaso de los datos limpios a SQL para realizar el análisis.df_carga_estudio.csv: Dataset final con los datos limpios para SQL.df_clientes_estudio.csv: Dataset final con los datos limpios para SQL.df_combustible_estudio.csv: Dataset final con los datos limpios para SQL.df_incidente_estudio.csv: Dataset final con los datos limpios para SQL.df_rutas_estudio.csv: Dataset final con los datos limpios para SQL.df_union_estudio.csv: Dataset final con los datos limpios para SQL.df_viajes_estudio.csv: Dataset final con los datos limpios para SQL.estudio.sql: Queries SQL para crear las tablas en la base de datos.diagrama_log.mwb: Diagrama de la base de datos en MySQL Workbench.diagrama.png: Imagen del diagrama de la base de datos.incidentes.csv: Dataset con los datos de incidentes realizado en SQL para usar en el dashboard y en el reporte.UNION.csv: Dataset con los datos que se usaron en SQL para crear los KPIs en el reporte.
En esta carpeta encontraras:
Dashboard_Logistica.pbix: el dashboard interactivo que visualiza los incidentes, los costos por clima y el desempeño por ciudad. Es la presentación final del proyecto. Que se puede abrir directamente en Power BI en este link "Más alla del reloj"df_final_analisis.csv: el dataset final con los datos limpios y listos para el dashboard.
En la carpeta de HIPOTESIS_KPI en el archivo Hipotesis_KPI.ipynb se encuentra el análisis detallado del estudio, se adjunta el detalle del KPIs e hipótesis planteadas en el proyecto.
- KPI 1: Tiempo promedio de retraso: comparamos fecha programada vs fecha real
- KPI 2: Tiempo de retraso: Promedio de la diferencia entre el retraso y las condiciones climáticas
- KPI 3: Relación impacto clima vs costo: Comparamos el impacto del clima versus el costo logístico asociado.
- KPI 4: Frecuencia de incidentes según el tipo de precipitación: de los incidentes identificados, se analiza la frecuencia según el tipo de precipitación y se determina la causa.
- Hipótesis 1: "Las condiciones climáticas afectan el tiempo de detención en las ciudades del norte comparado con el Sur"
- Hipótesis 2: "El tipo de carga principal influye en el coste logístico y en el tiempo de retraso"
- Hipótesis 3: "Las temperaturas extremas incrementan significativamente las horas de ralentí"
- Hipótesis 4: "Las condiciones climaticas como lluvia, visibilidad,temperatura y humedad aumentan los retrasos"
- Hipótesis 5: "Las cargas pesadas generan más detenciones y retrasos"
- Hipótesis 6: "Distancias mayores estan asociadas a mayores retrasos"
- Hipótesis 7: "Más detenciones causan retrasos significativos"
- Hipótesis 8: "La temperartura tiene un impacto negativo en los retrasos"
Resultado del estudio
Los hallazgos más relevantes del proyecto son:
- El "Retraso Base" es Estructural: Se descubrió una constante estadística de ~72-79 minutos que ocurre independientemente de cualquier variable externa. El problema es el proceso inicial de despacho.
- El Peso no influye: Se descarta que el peso de la carga afecte los tiempos de entrega.
- Sensibilidad Térmica: El frío impacta más que el calor; las bajas temperaturas correlacionan con mayores demoras, pero no de manera significativa.
- Visibilidad: Es el factor meteorológico más crítico para la seguridad y el cumplimiento de horarios.
- Los datos señalan un retraso estructural de ~72 minutos por evento, lo que sugiere ineficiencias críticas en los procesos de despacho o recepción (carga/descarga/papeleo). Se recomienda centrar los esfuerzos en optimizar los tiempos en muelle en lugar de intentar mejorar las rutas de tránsito.
Insights derivados directamente del estudio
Resumen:
- Este proyecto demuestra que la ineficiencia logística en la red analizada no es una consecuencia inevitable del clima o de factores externos azarosos, sino un problema estructural de planificación. Con un 77% de retrasos constantes y un retraso base de ~75 minutos identificado mediante el modelo OLS, la oportunidad de mejora no reside en "esperar mejores días", sino en rediseñar los procesos de despacho y optimizar el uso de combustible (ralentí). La evidencia estadística recolectada proporciona la hoja de ruta clara para transformar estas pérdidas operativas en ventajas competitivas.
Limitaciones
- El dataset actual no desglosa el "tiempo de carga efectiva" del "tiempo de espera" o "trámites administrativos", lo que impide atacar con precisión el origen exacto del retraso base estructural identificado (~75 min).
- Falta información sobre datos de tráfico en tiempo real o accidentes de terceros en la ruta, lo que podría estar influyendo en las variables de ruido del modelo OLS.
Próximos pasos
- Teniendo en cuenta estos análisis del proyecto se espera que la empresa priorice las inversiones operativas que se realizan en la empresa, mejorando al 100% la puntualidad de los camiones. Creando un sistema de monitoreo continuo para mantener y mejorar los niveles de servicio.
Además se sugieren estas acciones:
- Logística: Aumentar los márgenes de tiempo en todas las rutas, especialmente en las Norte (durante el invierno) para evitar penalizaciones por retrasos validados.
- Seguridad: Reforzar la conducción defensiva en días despejados, que es cuando ocurren los siniestros financieramente más críticos. Tal vez implementar un programa de capacitación especializada.
- Eficiencia: Implementar un programa de reducción de ralentí, ya que las 7 horas actuales son constantes y representan un costo de combustible optimizable. Crear tal vez una alarma o notificación para los conductores que no excedan el tiempo de ralentí.
Orden recomendado:
- Clonar el repositorio en tu computadora.
- Abrir primero la carpeta API_clima y ejecutar el jupyter notebook
APIclima.ipynbpara descargar los datos climáticos de las 7 ciudades. - Si no deseas descargar los archivos, puedes usar los archivos ya descargados en la carpeta
API_clima. - Segundo, abrir la carpeta Notebooks y luego la subcarpeta LIMPIEZA el archivo
Limpieza_union.ipynby ejecutarlo desde el inicio ahí uniremos los datasets de clima y eventos para hacer la limpieza y dejar 7 datasets limpios para exportar en SQL. - Tercero, abrir la carpeta SQL entrar al archivo
traspasosql.ipynby ejecutarlo desde el inicio, ahí realizaremos la creación de las tablas y el traspaso de los datos a SQL. - Si ya ejecuto la creación de las tablas en la base de datos, abrir la carpeta SQL y ejecutar el archivo
estudio.sqlpara ver los query y crear las tablas en la base de datos deincidentes.csvyUNION.csvque usaremos para el análisis. - Con esos archivos SQL, abrir la carpeta Notebooks en la subcarpeta ANALISIS el archivo
analisis.ipynby ejecutarlo desde el inicio ahí realizaremos el análisis de los datos y generaremos los insights para poder hacer el estudio de Hipótesis. - Siguiente, abrir la carpeta Notebooks en la subcarpeta HIPOTESIS_KPI el archivo
Hipotesis_KPI.ipynby ejecutarlo desde el inicio ahí realizaremos el análisis de las hipótesis y llegamos a las conclusiones del proyecto. - Finalizamos el proyecto con la carpeta Notebooks abrimos el archivo
Dashboard_Logistica.pbixy ejecutamos el archivo o bien abrir la página web "Más alla del reloj".