- Cargué y limpié dos datasets: TomTom Traffic Index y OECD Cities Economy.
- Estandaricé columnas a snake_case y corregí formatos numéricos con separadores de miles y comas decimales.
- Filtré registros de 2024 y agregué promedios de tráfico por ciudad con
groupby+agg. - Realicé un INNER JOIN entre tráfico y economía usando ciudad y año como clave.
- Construí 4 visualizaciones (boxplot, histograma, 2× barras dobles) para detectar patrones y outliers.
- Exporté el dataset limpio como CSV y redacté el resumen ejecutivo.
Movilidad Urbana y Productividad Económica en LATAM
Análisis de la relación entre congestión vehicular y PIB per cápita en 15 ciudades latinoamericanas durante 2024, usando datos reales de TomTom Traffic Index y OECD Cities. Proyecto aprobado con calificación excelente.
Resumen del proyecto
Este proyecto analizó el comportamiento de movilidad urbana y su relación con indicadores económicos en ciudades latinoamericanas durante 2024, combinando más de 886,000 registros de tráfico con datos socioeconómicos.
Mi valor en este caso fue traducir más de un millón de registros operativos en conclusiones accionables de política pública. No solo calculé promedios: identifiqué qué ciudades tienen desconexión entre riqueza y movilidad, y qué mercados deberían priorizarse para inversión en transporte.
Proceso analítico
El análisis siguió un pipeline de 7 pasos estructurado como un proyecto de datos end-to-end.
Importé los datasets con Pandas, exploré tipos de datos, renombré columnas a snake_case y corregí formatos numéricos y de fecha.
Extraje el año desde datetime, filtré solo 2024 y calculé el promedio anual de métricas de tráfico por ciudad.
Combiné tráfico y economía manteniendo solo las 15 ciudades con datos completos en ambos datasets.
Generé un boxplot de JamsDelay, un histograma de PIB per cápita y dos gráficos de barras dobles para comparar ambas variables por ciudad.
Exporté el dataset final como CSV y documenté los hallazgos en un resumen ejecutivo dentro del notebook.
Proyecto revisado por el Code Reviewer de TripleTen con comentarios positivos en limpieza, estructura del código y calidad de visualizaciones.
Hallazgos principales
El análisis reveló que la relación entre congestión y PIB per cápita no es lineal en LATAM, con anomalías significativas que abren preguntas de política pública.
| Ciudad | País | Nivel de congestión |
|---|---|---|
| México D.F. | México | 🔴 Outlier extremo |
| São Paulo | Brasil | 🟠 Muy alta |
| Bogotá | Colombia | 🟠 Alta |
| Lima | Perú | 🟡 Media-Alta |
| Santiago | Chile | 🟡 Media |
Proceso técnico detallado
El análisis siguió siete pasos reproducibles, desde la carga hasta la exportación del dataset final.
Cargar y explorar
Importé los datasets tomtom_traffic.csv y oecd_city_economy.csv con pandas. Revisé las primeras filas, dimensiones, nombres y tipos de datos para conocer la estructura antes de limpiar.
traffic = pd.read_csv('/datasets/tomtom_traffic.csv')
eco = pd.read_csv('/datasets/oecd_city_economy.csv')
traffic.info()
eco.info()Limpiar y estandarizar
Renombré las columnas para trabajar con nombres consistentes. Convertí las marcas temporales a datetime y limpié separadores de miles, comas decimales y símbolos de porcentaje de los indicadores económicos.
traffic = traffic.rename(columns={
'Country': 'country',
'City': 'city',
'UpdateTimeUTC': 'update_time_utc'
})
traffic['update_time_utc'] = pd.to_datetime(
traffic['update_time_utc']
)Filtrar 2024
Extraje el año de la fecha de actualización del tráfico y filtré ambas fuentes para trabajar exclusivamente con 2024, el periodo definido para la comparación.
traffic['year'] = traffic['update_time_utc'].dt.year
traffic_2024 = traffic[traffic['year'] == 2024].copy()
eco_2024 = eco[eco['year'] == 2024].copy()Agregar movilidad por ciudad
Como TomTom registra actualizaciones frecuentes, calculé promedios anuales por ciudad, país y año para obtener una vista comparable y reducir el nivel de detalle operativo.
traffic_city_year_2024 = (
traffic_2024
.groupby(['city', 'country', 'year'], dropna=False)
.agg({
'jams_delay': 'mean',
'traffic_index_live': 'mean',
'jams_length_kms': 'mean',
'jams_count': 'mean',
'mins_delay': 'mean',
'travel_time_live_per_10kms_mins': 'mean',
'travel_time_hist_per_10kms_mins': 'mean'
})
.reset_index()
)Unir movilidad y economía
Seleccioné las columnas económicas relevantes y uní ambas tablas mediante ciudad y año. Utilicé un INNER JOIN para conservar únicamente las coincidencias disponibles en las dos fuentes.
merged_inner = pd.merge(
traffic_city_year_2024,
eco_2024,
on=['city', 'year'],
how='inner'
)Visualizar relaciones
Construí un boxplot para JamsDelay, un histograma para PIB per cápita y gráficos de barras para comparar congestión y economía entre ciudades. Estas visualizaciones permitieron identificar diferencias y valores atípicos.
sns.boxplot(
data=merged_inner,
x='jams_delay',
showmeans=True
)
merged_inner['city_gdp_capita'].hist(bins=15)Exportar y documentar
Exporté la tabla unificada como CSV para futuros análisis y documenté las conclusiones sobre la relación entre movilidad urbana y desempeño económico.
merged_inner.to_csv(
'ladb_mobility_economy_2024_clean.csv',
index=False
)Visualizaciones del análisis
Estos son los gráficos generados directamente en el notebook durante el análisis exploratorio de datos.
Permite identificar a México D.F. como outlier extremo. La mediana y la caja muestran que la mayoría de ciudades LATAM tienen retrasos moderados, con unos pocos casos atípicos muy por encima.
La distribución es aproximadamente normal sin sesgos extremos, lo que indica que los datos del OECD son representativos. La mayoría de ciudades se concentra entre USD 8,000 y USD 18,000.
Ordenando por retraso de tráfico, se observa que ciudades con mayor congestión no necesariamente tienen menor PIB, lo que sugiere que la relación no es lineal.
Ordenando por PIB per cápita, queda claro que ciudades más ricas (como Montevideo) no son siempre las menos congestionadas, lo que abre preguntas sobre política de transporte.
Notebook del proyecto
El análisis completo está documentado en un Jupyter Notebook con código comentado, tablas de datos y las visualizaciones anteriores.
Si prefieres trabajar localmente o revisar el notebook en tu entorno de Jupyter, puedes descargarlo directamente desde Google Drive.