IPython, matplotlib y transporte público en Bahía Blanca
26 Oct 2014Hace un tiempo, la ciudad de Bahía Blanca introdujo tarjetas de proximidad para el pago de la tarifa del servicio de transporte público. Junto con el sistema AVL con el que cuentan las unidades, los registros de uso de las tarjetas de proximidad son una fuente de información valiosa.
Como excusa para aprender un poco más sobre IPython Notebook, matplotlib y Basemap, estuve jugando con aproximadamente 4.3 millones de registros del sistema de transporte público bahiense, puestos a disposición por la Agencia de Innovación y Gobierno Abierto de la ciudad.
El notebook completo se puede ver acá: Datos de Automated Fare Collection del sistema de transporte público de Bahía Blanca
La información
Los campos más importantes de los registros sobre los que trabajamos son:
- Fecha y Hora — momento en que se registró la transacción
- ID tarjeta — identificador numérico, único y no vinculable con los datos personales del usuario
- Línea Ómnibus — Línea (servicio) de ómnibus
- Locación — Lectura del GPS de la unidad al momento de realizarse la transacción
- Tipo Pasaje — Normal, frecuente, escolar, etc.
Una vez procesados y guardados en una tabla de una base de datos PostgreSQL/PostGIS, podemos empezar a hacer algunos análisis simples.
Promedio de viajes por hora
Podemos ver, por ejemplo, la cantidad promedio de viajes efectuados en cada hora del día para los días hábiles de la semana. El pico de actividad en el mediodía, quizás se deba al horario comercial “cortado” que se acostumbra en Bahía Blanca y otras ciudades del interior.
“Perfil” de usuario.
Es razonable considerar análisis que requieran tipificar usuarios en base a sus patrones de uso. Una posible forma de construir estos perfiles es la siguiente:
Los gráficos muestran la cantidad de viajes por hora y día de la semana para un período determinado. En el primero vemos uso consistente alrededor de las 7 de la mañana y de las 6 de la tarde.
Viajes encadenados
Nos interesa ver las combinaciones más frecuentes de dos líneas de ómnibus. Esta estadística puede indicarnos qué áreas de la ciudad no están bien conectadas por una única línea.
Decimos que los viajes v1 y v2 del pasajero p están encadenados si:
- La diferencia de tiempo entre v2 y v1 es menor a 45 minutos
- v1 y v2 fueron realizados en diferentes líneas (o sea, no consideramos viajes de retorno hacia el punto de partida)
Graficamos la matriz de combinaciones de líneas de omnibus:
También es interesante ver dónde comienzan sus viajes los usuarios que realizan la combinación 514-517, una de las más frecuentes: