From 863f28d95ee2f314a9f5bb81ed564f83cbe0d585 Mon Sep 17 00:00:00 2001 From: fppenna <41331853+fppenna@users.noreply.github.com> Date: Thu, 16 Apr 2020 15:40:45 -0300 Subject: [PATCH 1/2] Clase 6 V2 Clase 6 con correcciones --- clase-6/Clase-6 .html | 15873 +++++++++++++++++++++++++++++++++++++++ clase-6/Clase-6 .ipynb | 592 ++ 2 files changed, 16465 insertions(+) create mode 100644 clase-6/Clase-6 .html create mode 100644 clase-6/Clase-6 .ipynb diff --git a/clase-6/Clase-6 .html b/clase-6/Clase-6 .html new file mode 100644 index 0000000..2daa1e9 --- /dev/null +++ b/clase-6/Clase-6 .html @@ -0,0 +1,15873 @@ + + + + +Clase-6 + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+

API de Transporte Público Ciudad de Buenos Aires

+
+
+
+
+
+
+

Objetivos

El objetivo general de esta clase es el de integrar alguno de los conocimientos adquiridos en el transcurso del curso: la obtención de datos desde diversas fuentes, la limpieza y preprocesamiento del dataset(data wrangling) y el posterior análisis y visualización de los datos.

+

Particularmente vamos a estar trabajando con datos de la API de transporte público del Gobierno de la Ciudad de Buenos Aires. A través de esta herramienta lograremos monitorear el estado del transporte público (especificamente colectivos, específicamente la Linea 12) en tiempo real, identificar y visualizar los colectivos que se encuentran circulando dentro del territorio de la Ciudad de Buenos Aires.

+
¿Por qué es útil esto?

A través de la API de transporte público de Buenos Aires se pueden desarrollar innumerables aplicaciones y entrenar modelos. Por ejemplo: podemos predecir la llegada de internos a una parada en particular, podemos pensar cómo optimizar el sistema de transporte de modo de disminuir la frecuencia del servicio, podemos estimar el estado de la congestión del tránsito en determinados puntos de la Ciudad, conocer paradas de colectivos "no oficiales", entre otras muchas cosas.

+ +
+
+
+
+
+
+

¿Qué es una API (application programming interface)?

Una API es un conjunto de funciones predefinidas que se utilizan para el desarrollo de aplicaciones, ofrecidas por una biblioteca para ser utilizadas por otro software. Uno de sus principales propósitos consiste en proporcionar funciones de uso general de forma que los desarrolladores hagan uso de las mismas para evitar escribir código desde cero.

+

La API de Transporte Público de Buenos Aires

Tiene por objetivo proveer los datos abiertos del transporte público de la Ciudad en formato estandarizado y en tiempo real.

+

Algunos de los conjuntos de datos centrales multimodales incluidos y disponibles para los desarrolladores son:

+
    +
  • Planificación del viaje (actual y futuro)
  • +
  • Estado (actual y futuro)
  • +
  • Interrupciones (actuales) y trabajos planificados (futuro)
  • +
  • Predicciones de llegada / salida (instantánea y websockets)
  • +
  • Horarios
  • +
  • Puntos de embarque e instalaciones
  • +
  • Rutas y líneas (topología y geográfica)
  • +
+
+

Cómo conseguir permiso para utilizar la API de Transporte Público de Buenos Aires

Es muy sencillo. En primer lugar, cabe aclarar que la API es un servicio NO arancelado. No hay que pagar nada para utilizarla. Podríamos decir que se trata de un conjunto de datos abiertos, pero no es del todo así, ya que su utilización requiere de crear un usuario, hacer un registro y obtener una autorización para su uso (el argumento por detrás de esto es el de garantizar el funcionamiento del servicio ante picos de demanda).

+

Para obtener nuestro USER y PASS para acceder al servicio hace falta ingresar en https://www.buenosaires.gob.ar/form/formulario-de-registro-api-transporte y completar los campos con nuestros datos, para luego recibir vía correo nuestras credenciales (client_id y client_secret).

+ +
+
+
+
+
+
+

COMIENZO DEL SCRIPT

+
+
+
+
+
+
+

Paso 1: Importar las Bibliotecas necesarias

+
+
+
+
+
+
In [1]:
+
+
+
import pandas as pd
+import numpy as np
+
+# This module provides regular expression matching operations
+import re
+# To make HTTP requests
+import requests
+
+# To transform json objects into DataFrame
+from pandas.io.json import json_normalize
+
+# To transform STR objects into json
+import json
+
+# To parse str objects into date and time objects
+import datetime
+
+# import urllib.request   ----> Otra libreria para consultar http nativa de python
+
+# To get current time
+import time
+
+# To pause the loops
+from time import sleep
+
+# Make graphs
+# !pip install plotly
+import plotly.express as px
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
+---------------------------------------------------------------------------
+ModuleNotFoundError                       Traceback (most recent call last)
+<ipython-input-1-e3b75dac001b> in <module>
+     26 # Make graphs
+     27 # !pip install plotly
+---> 28 import plotly.express as px
+
+ModuleNotFoundError: No module named 'plotly'
+
+
+ +
+
+ +
+
+
+
+

Construcción de la URL a consultar

+
+
+
+
+
+
+

1- Ingreso a https://www.buenosaires.gob.ar/desarrollourbano/transporte/apitransporte/api-doc

+

2- Selecciono la opción /colectivos/vehiclePositions: Devuelve la posición de los vehículos monitoreados actualizada cada 30 segundos

+

3- Ingreso las credenciales "client_id" y "client_secret" y el parámetro "agency_id" (para seleccionar la línea de colectivos que me interesa)

+

4- Selecciono "GET" y copio la URL que se construye.

+
+ +
+
+
+
+
+
+

Creo un objeto llamado url de tipo STR con la url que copié en la documentación de la API.

+

Notar que se construye concatenando la consulta que nos interesa "vehiclePositionsSimple" con el parámetro "agency_id" y las credenciales "client_id" y "client_secret"

+ +
+
+
+
+
+
In [4]:
+
+
+
url='https://apitransporte.buenosaires.gob.ar/colectivos/vehiclePositionsSimple?agency_id=6&client_id=a0119e3e5ebf4fb4a0cbdea04de12037&client_secret=19967Bb82e7e4C7bab2CA49e3d631C3E' 
+
+ +
+
+
+ +
+
+
+
+

Alternativa para construir la url

Seteo el parametro que me interesa y las credenciales de la API en objetos del tipo STR para luego completar las URL que se encuentra en otro objeto del tipo STR

+ +
+
+
+
+
+
In [5]:
+
+
+
# Option 2: Create a function
+def url_bus(id_agency, user, psw):
+    
+    url= 'https://apitransporte.buenosaires.gob.ar/colectivos/vehiclePositionsSimple?agency_id='+str(id_agency)+'&client_id='+str(user)+'&client_secret='+str(psw) 
+    
+    return url    
+
+ +
+
+
+ +
+
+
+
In [6]:
+
+
+
# Option 3: Set parameters & credentials in objects
+
+agency_id= '6'
+
+client_id= 'a0119e3e5ebf4fb4a0cbdea04de12037'
+
+client_secret= '19967Bb82e7e4C7bab2CA49e3d631C3E'
+
+url_incompleta= 'https://apitransporte.buenosaires.gob.ar/colectivos/vehiclePositionsSimple?agency_id={}&client_id={}&client_secret={}' 
+
+# Con '.format' agrego otros strings al string principal 'url' 
+# agregando como parametros lo que quiero que aparezca entre los corchetes
+
+url_buses= url.format(agency_id,
+                      client_id,
+                      client_secret)
+
+ +
+
+
+ +
+
+
+
+

Loop para recolectar los datos de la API en un período de tiempo

+
+
+
+
+
+
In [7]:
+
+
+
# Create an empty Data Frame
+agency_6=pd.DataFrame()
+
+# this pattern captures all text in {}
+pattern='({.*?})'
+
+# 60 sec * 10 min
+timeout = time.time() + 60*10
+ 
+while True:
+    
+    # API requests
+    response= requests.get(url)
+    
+    # Get text from API response
+    text_api= response.text
+    
+    # Capture text in {} from the API response
+    data_buses=re.findall(pattern, text_api.replace('\n',''))
+   
+    # For loop to append data from all bus units to empty Data Frame
+    for i in range(len(data_buses)):
+        
+        # Convert to JSON (or dict) each row of the API response text 
+        json_buses=json.loads(data_buses[i])
+        
+        # Convert to DataFrame and append to linea_12 DF 
+        agency_6=agency_6.append(json_normalize(json_buses), ignore_index=True)
+       
+    print(agency_6)
+    
+    if time.time() > timeout:
+        
+        print('Fin del tiempo de ejecución')
+        
+        break
+        
+    ## Wait 30 seconds to get new data from the API               
+    sleep(30)
+    
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
   route_id  latitude  longitude      speed   timestamp     id  direction  \
+0        63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1        63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2        63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3        63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4        63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+5        63 -34.59763 -58.393110   3.055555  1587058932   3811          0   
+6        63 -34.64827 -58.373140   7.500000  1587058900   3839          1   
+7        63 -34.64826 -58.373455   0.000000  1587058932   3851          1   
+8        63 -34.60633 -58.393460   1.111111  1587058932   3852          1   
+9        63 -34.57678 -58.429350   0.000000  1587058932   3853          1   
+10       63 -34.58898 -58.410180   0.000000  1587058900   3863          1   
+11       63 -34.59096 -58.407894   0.000000  1587058932   3867          0   
+12       63 -34.62730 -58.392180   5.277777  1587058900   3878          1   
+13       63 -34.58362 -58.418120   0.000000  1587058932   3882          0   
+14       63 -34.60965 -58.391735   0.000000  1587058932   3894          0   
+15       63 -34.62734 -58.381140   0.000000  1587058932   3900          0   
+16       63 -34.62477 -58.392640   0.000000  1587058932   3910          1   
+17       63 -34.63548 -58.375320   0.000000  1587058900   3918          0   
+18       63 -34.59085 -58.407906   1.666666  1587058932   3928          0   
+19       63 -34.62482 -58.392654   6.944444  1587058932   3929          1   
+20       63 -34.59260 -58.405994   0.000000  1587058932   3931          0   
+21       63 -34.62881 -58.377920   0.000000  1587058932   3942          0   
+22       63 -34.61323 -58.391674   0.000000  1587058932   3946          0   
+23       63 -34.65063 -58.377660  10.000000  1587058902   3949          1   
+24       63 -34.62511 -58.389830   9.166666  1587058932   3972          0   
+25       63 -34.57663 -58.429350   1.111111  1587058932   3983          1   
+26       63 -34.65576 -58.374170   0.000000  1587058928   3985          0   
+27       63 -34.65576 -58.374200   0.000000  1587058930   3988          0   
+28       63 -34.58396 -58.417614   0.555555  1587058932   4033          0   
+29       63 -34.61073 -58.393406   9.444444  1587058928   4034          1   
+30       63 -34.61789 -58.393180   3.888888  1587058928   4037          1   
+31       63 -34.59579 -58.394886   0.000000  1587058928   4038          1   
+32      452 -34.62761 -58.380700   0.000000  1587058928   4076          1   
+33       63 -34.57772 -58.427765   0.000000  1587058872  16404          1   
+34       63 -34.58579 -58.414980   0.000000  1587058930  19988          1   
+35       63 -34.57669 -58.429474   0.000000  1587058932  25503          1   
+36     2472 -34.61212 -58.544060   3.888888  1587058300  26089          0   
+37     2472 -34.60327 -58.405766   5.000000  1587058932  26110          0   
+38     2472 -34.59429 -58.392166   9.722222  1587058930  26114          0   
+39     2472 -34.61175 -58.543810   2.500000  1587058360  26118          0   
+40     2472 -34.61192 -58.544080   0.555555  1587058452  26132          0   
+41     2472 -34.60869 -58.440100   5.277777  1587058930  26242          1   
+42     2472 -34.58419 -58.390100   0.000000  1587058930  26251          0   
+43     2472 -34.60190 -58.432890   0.000000  1587058930  26255          1   
+44     2472 -34.60653 -58.493380   5.277777  1587058930  26257          1   
+45     2472 -34.60336 -58.419240   7.500000  1587058930  26258          1   
+46     2472 -34.60397 -58.431300  10.000000  1587058930  26259          0   
+47     2472 -34.60834 -58.442760   0.000000  1587058930  26260          1   
+48     2472 -34.60043 -58.391514   4.722222  1587058932  26264          0   
+49     2472 -34.61203 -58.544106   1.666666  1587058930  26265          0   
+50     2472 -34.60681 -58.496334   8.888888  1587058902  26272          0   
+51     2472 -34.61829 -58.465515   7.500000  1587058930  26290          1   
+52     2472 -34.61498 -58.530280   4.444444  1587058930  26291          1   
+53     2472 -34.61942 -58.475210   0.000000  1587058902  26301          1   
+54     2472 -34.60696 -58.496560   2.500000  1587058902  26305          0   
+55     2472 -34.60410 -58.408905   5.000000  1587058932  26348          0   
+56     2472 -34.61055 -58.452194   2.500000  1587058930  26349          0   
+57     2472 -34.61779 -58.514480   6.388888  1587058930  26423          1   
+58     2472 -34.60886 -58.448986   6.388888  1587058902  26641          0   
+59       63 -34.62743 -58.381065   0.000000  1587058930  44560          0   
+
+                            agency_name  agency_id route_short_name  \
+0   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+5   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+6   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+7   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+8   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+9   TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+10  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+11  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+12  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+13  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+14  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+15  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+16  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+17  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+18  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+19  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+20  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+21  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+22  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+23  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+24  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+25  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+26  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+27  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+28  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+29  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+30  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+31  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+32  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12B   
+33  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+34  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+35  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+36  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+37  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+38  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+39  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+40  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+41  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+42  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+43  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+44  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+45  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+46  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+47  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+48  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+49  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+50  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+51  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+52  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+53  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+54  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+55  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+56  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+57  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+58  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+59  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                 trip_headsign  
+0                   a Barracas  
+1                    a Palermo  
+2                   a Barracas  
+3                   a Barracas  
+4                    a Palermo  
+5                    a Palermo  
+6                   a Barracas  
+7                   a Barracas  
+8                   a Barracas  
+9                   a Barracas  
+10                  a Barracas  
+11                   a Palermo  
+12                  a Barracas  
+13                   a Palermo  
+14                   a Palermo  
+15                   a Palermo  
+16                  a Barracas  
+17                   a Palermo  
+18                   a Palermo  
+19                  a Barracas  
+20                   a Palermo  
+21                   a Palermo  
+22                   a Palermo  
+23                  a Barracas  
+24                   a Palermo  
+25                  a Barracas  
+26                   a Palermo  
+27                   a Palermo  
+28                   a Palermo  
+29                  a Barracas  
+30                  a Barracas  
+31                  a Barracas  
+32              a Constitución  
+33                  a Barracas  
+34                  a Barracas  
+35                  a Barracas  
+36  9 de Julio y C. Pellegrini  
+37  9 de Julio y C. Pellegrini  
+38  9 de Julio y C. Pellegrini  
+39  9 de Julio y C. Pellegrini  
+40  9 de Julio y C. Pellegrini  
+41             Fac. de Derecho  
+42  9 de Julio y C. Pellegrini  
+43             Fac. de Derecho  
+44             Fac. de Derecho  
+45             Fac. de Derecho  
+46  9 de Julio y C. Pellegrini  
+47             Fac. de Derecho  
+48  9 de Julio y C. Pellegrini  
+49  9 de Julio y C. Pellegrini  
+50  9 de Julio y C. Pellegrini  
+51             Fac. de Derecho  
+52             Fac. de Derecho  
+53             Fac. de Derecho  
+54  9 de Julio y C. Pellegrini  
+55  9 de Julio y C. Pellegrini  
+56  9 de Julio y C. Pellegrini  
+57             Fac. de Derecho  
+58  9 de Julio y C. Pellegrini  
+59                   a Palermo  
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+115     2472 -34.60514 -58.409340   0.000000  1587058962  26348          0   
+116     2472 -34.61152 -58.453846  12.222222  1587058962  26349          0   
+117     2472 -34.61853 -58.513460   5.277777  1587058962  26423          1   
+118     2472 -34.61207 -58.455074  10.277777  1587058962  26641          0   
+119       63 -34.62734 -58.381065   0.277777  1587058960  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+115  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+116  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+117  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+118  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+119  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+115  9 de Julio y C. Pellegrini  
+116  9 de Julio y C. Pellegrini  
+117             Fac. de Derecho  
+118  9 de Julio y C. Pellegrini  
+119                   a Palermo  
+
+[120 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+175     2472 -34.60517 -58.409355   1.111111  1587058992  26348          0   
+176     2472 -34.61353 -58.458670  11.666666  1587058990  26349          0   
+177     2472 -34.61719 -58.511200  11.944444  1587058990  26423          1   
+178     2472 -34.61355 -58.458775  11.944444  1587058990  26641          0   
+179       63 -34.62727 -58.381060   0.000000  1587058992  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+175  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+176  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+177  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+178  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+179  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+175  9 de Julio y C. Pellegrini  
+176  9 de Julio y C. Pellegrini  
+177             Fac. de Derecho  
+178  9 de Julio y C. Pellegrini  
+179                   a Palermo  
+
+[180 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+235     2472 -34.60517 -58.409355   1.111111  1587058992  26348          0   
+236     2472 -34.61456 -58.461266  10.555555  1587059022  26349          0   
+237     2472 -34.61534 -58.508125  10.833333  1587059022  26423          1   
+238     2472 -34.61465 -58.461400  13.333333  1587059022  26641          0   
+239       63 -34.62741 -58.381054   0.277777  1587059020  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+235  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+236  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+237  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+238  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+239  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+235  9 de Julio y C. Pellegrini  
+236  9 de Julio y C. Pellegrini  
+237             Fac. de Derecho  
+238  9 de Julio y C. Pellegrini  
+239                   a Palermo  
+
+[240 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+297     2472 -34.60664 -58.409980   0.000000  1587059052  26348          0   
+298     2472 -34.61456 -58.461266  10.555555  1587059022  26349          0   
+299     2472 -34.61534 -58.508125  10.833333  1587059022  26423          1   
+300     2472 -34.61606 -58.465260  13.888888  1587059050  26641          0   
+301       63 -34.62744 -58.381090   0.000000  1587059052  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+297  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+298  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+299  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+300  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+301  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+297  9 de Julio y C. Pellegrini  
+298  9 de Julio y C. Pellegrini  
+299             Fac. de Derecho  
+300  9 de Julio y C. Pellegrini  
+301                   a Palermo  
+
+[302 rows x 11 columns]
+    route_id  latitude  longitude     speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740  8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440  0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646  4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215  0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315  0.000000  1587058932   3810          0   
+..       ...       ...        ...       ...         ...    ...        ...   
+358     2472 -34.60664 -58.409980  0.000000  1587059082  26348          0   
+359     2472 -34.61518 -58.462940  0.000000  1587059082  26349          0   
+360     2472 -34.61329 -58.504715  2.222222  1587059082  26423          1   
+361     2472 -34.61763 -58.468860  6.388888  1587059082  26641          0   
+362       63 -34.62738 -58.381080  0.000000  1587059080  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+358  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+359  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+360  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+361  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+362  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+358  9 de Julio y C. Pellegrini  
+359  9 de Julio y C. Pellegrini  
+360             Fac. de Derecho  
+361  9 de Julio y C. Pellegrini  
+362                   a Palermo  
+
+[363 rows x 11 columns]
+    route_id  latitude  longitude     speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740  8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440  0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646  4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215  0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315  0.000000  1587058932   3810          0   
+..       ...       ...        ...       ...         ...    ...        ...   
+419     2472 -34.60660 -58.411175  0.000000  1587059112  26348          0   
+420     2472 -34.61524 -58.463140  6.111111  1587059112  26349          0   
+421     2472 -34.61105 -58.500990  7.222222  1587059112  26423          1   
+422     2472 -34.61771 -58.469040  0.000000  1587059110  26641          0   
+423       63 -34.62737 -58.381054  1.111111  1587059110  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+419  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+420  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+421  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+422  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+423  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+419  9 de Julio y C. Pellegrini  
+420  9 de Julio y C. Pellegrini  
+421             Fac. de Derecho  
+422  9 de Julio y C. Pellegrini  
+423                   a Palermo  
+
+[424 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+480     2472 -34.60643 -58.412020  10.555555  1587059140  26348          0   
+481     2472 -34.61754 -58.468720  10.000000  1587059170  26349          0   
+482     2472 -34.60990 -58.499080   7.500000  1587059142  26423          1   
+483     2472 -34.61885 -58.471134  13.055555  1587059170  26641          0   
+484       63 -34.62755 -58.381100   0.000000  1587059172  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+480  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+481  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+482  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+483  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+484  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+480  9 de Julio y C. Pellegrini  
+481  9 de Julio y C. Pellegrini  
+482             Fac. de Derecho  
+483  9 de Julio y C. Pellegrini  
+484                   a Palermo  
+
+[485 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+540     2472 -34.60610 -58.413414   0.000000  1587059202  26348          0   
+541     2472 -34.61890 -58.471160  15.000000  1587059202  26349          0   
+542     2472 -34.60793 -58.495880  10.555555  1587059202  26423          1   
+543     2472 -34.61885 -58.471134  13.055555  1587059170  26641          0   
+544       63 -34.62763 -58.381160   0.000000  1587059200  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+540  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+541  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+542  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+543  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+544  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+540  9 de Julio y C. Pellegrini  
+541  9 de Julio y C. Pellegrini  
+542             Fac. de Derecho  
+543  9 de Julio y C. Pellegrini  
+544                   a Palermo  
+
+[545 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+599     2472 -34.60583 -58.414850  10.000000  1587059230  26348          0   
+600     2472 -34.62042 -58.474230   3.611111  1587059232  26349          0   
+601     2472 -34.60693 -58.494045   9.722222  1587059232  26423          1   
+602     2472 -34.62033 -58.473940   1.388888  1587059232  26641          0   
+603       63 -34.62747 -58.381160   0.000000  1587059232  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+599  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+600  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+601  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+602  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+603  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+599  9 de Julio y C. Pellegrini  
+600  9 de Julio y C. Pellegrini  
+601             Fac. de Derecho  
+602  9 de Julio y C. Pellegrini  
+603                   a Palermo  
+
+[604 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+657     2472 -34.60548 -58.417180  13.055555  1587059262  26348          0   
+658     2472 -34.61779 -58.476265   3.611111  1587059262  26349          0   
+659     2472 -34.60652 -58.493380   0.000000  1587059262  26423          1   
+660     2472 -34.61924 -58.475160   9.166666  1587059260  26641          0   
+661       63 -34.62736 -58.381090   0.000000  1587059258  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+657  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+658  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+659  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+660  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+661  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+657  9 de Julio y C. Pellegrini  
+658  9 de Julio y C. Pellegrini  
+659             Fac. de Derecho  
+660  9 de Julio y C. Pellegrini  
+661                   a Palermo  
+
+[662 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+715     2472 -34.60548 -58.417180  13.055555  1587059262  26348          0   
+716     2472 -34.61779 -58.476265   3.611111  1587059262  26349          0   
+717     2472 -34.60652 -58.493380   0.000000  1587059262  26423          1   
+718     2472 -34.61924 -58.475160   9.166666  1587059260  26641          0   
+719       63 -34.62736 -58.381090   0.000000  1587059258  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+715  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+716  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+717  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+718  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+719  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+715  9 de Julio y C. Pellegrini  
+716  9 de Julio y C. Pellegrini  
+717             Fac. de Derecho  
+718  9 de Julio y C. Pellegrini  
+719                   a Palermo  
+
+[720 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+773     2472 -34.60536 -58.418150   0.000000  1587059292  26348          0   
+774     2472 -34.61655 -58.477260   0.000000  1587059322  26349          0   
+775     2472 -34.60459 -58.490030  10.555555  1587059322  26423          1   
+776     2472 -34.61551 -58.478115   0.000000  1587059322  26641          0   
+777       63 -34.62741 -58.381060   0.277777  1587059322  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+773  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+774  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+775  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+776  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+777  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+773  9 de Julio y C. Pellegrini  
+774  9 de Julio y C. Pellegrini  
+775             Fac. de Derecho  
+776  9 de Julio y C. Pellegrini  
+777                   a Palermo  
+
+[778 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+831     2472 -34.60536 -58.418150   0.000000  1587059292  26348          0   
+832     2472 -34.61655 -58.477260   0.000000  1587059322  26349          0   
+833     2472 -34.60459 -58.490030  10.555555  1587059322  26423          1   
+834     2472 -34.61551 -58.478115   0.000000  1587059322  26641          0   
+835       63 -34.62741 -58.381060   0.277777  1587059322  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+831  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+832  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+833  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+834  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+835  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+831  9 de Julio y C. Pellegrini  
+832  9 de Julio y C. Pellegrini  
+833             Fac. de Derecho  
+834  9 de Julio y C. Pellegrini  
+835                   a Palermo  
+
+[836 rows x 11 columns]
+    route_id  latitude  longitude     speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740  8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440  0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646  4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215  0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315  0.000000  1587058932   3810          0   
+..       ...       ...        ...       ...         ...    ...        ...   
+890     2472 -34.60502 -58.420140  7.777777  1587059352  26348          0   
+891     2472 -34.61632 -58.477440  7.500000  1587059352  26349          0   
+892     2472 -34.60370 -58.488514  0.000000  1587059352  26423          1   
+893     2472 -34.61466 -58.478820  5.277777  1587059352  26641          0   
+894       63 -34.62748 -58.381035  0.000000  1587059350  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+890  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+891  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+892  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+893  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+894  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+890  9 de Julio y C. Pellegrini  
+891  9 de Julio y C. Pellegrini  
+892             Fac. de Derecho  
+893  9 de Julio y C. Pellegrini  
+894                   a Palermo  
+
+[895 rows x 11 columns]
+    route_id  latitude  longitude      speed   timestamp     id  direction  \
+0         63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1         63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2         63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3         63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4         63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+..       ...       ...        ...        ...         ...    ...        ...   
+947     2472 -34.60441 -58.425186  13.055555  1587059412  26348          0   
+948     2472 -34.61337 -58.479780   7.500000  1587059412  26349          0   
+949     2472 -34.60389 -58.487865   9.444444  1587059412  26423          1   
+950     2472 -34.61207 -58.480854  12.222222  1587059412  26641          0   
+951       63 -34.62745 -58.381120   0.000000  1587059408  44560          0   
+
+                             agency_name  agency_id route_short_name  \
+0    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4    TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+..                                   ...        ...              ...   
+947  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+948  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+949  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+950  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+951  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                  trip_headsign  
+0                    a Barracas  
+1                     a Palermo  
+2                    a Barracas  
+3                    a Barracas  
+4                     a Palermo  
+..                          ...  
+947  9 de Julio y C. Pellegrini  
+948  9 de Julio y C. Pellegrini  
+949             Fac. de Derecho  
+950  9 de Julio y C. Pellegrini  
+951                   a Palermo  
+
+[952 rows x 11 columns]
+     route_id  latitude  longitude      speed   timestamp     id  direction  \
+0          63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1          63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2          63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3          63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4          63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+...       ...       ...        ...        ...         ...    ...        ...   
+1004     2472 -34.60406 -58.429554  11.666666  1587059442  26348          0   
+1005     2472 -34.61061 -58.482020   0.000000  1587059442  26349          0   
+1006     2472 -34.60566 -58.486360   0.000000  1587059442  26423          1   
+1007     2472 -34.60909 -58.483160   7.500000  1587059440  26641          0   
+1008       63 -34.62740 -58.381080   0.000000  1587059440  44560          0   
+
+                              agency_name  agency_id route_short_name  \
+0     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+...                                   ...        ...              ...   
+1004  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1005  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1006  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1007  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1008  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                   trip_headsign  
+0                     a Barracas  
+1                      a Palermo  
+2                     a Barracas  
+3                     a Barracas  
+4                      a Palermo  
+...                          ...  
+1004  9 de Julio y C. Pellegrini  
+1005  9 de Julio y C. Pellegrini  
+1006             Fac. de Derecho  
+1007  9 de Julio y C. Pellegrini  
+1008                   a Palermo  
+
+[1009 rows x 11 columns]
+     route_id  latitude  longitude      speed   timestamp     id  direction  \
+0          63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1          63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2          63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3          63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4          63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+...       ...       ...        ...        ...         ...    ...        ...   
+1063     2472 -34.60415 -58.432900   0.000000  1587059472  26348          0   
+1064     2472 -34.60919 -58.483080   3.611111  1587059470  26349          0   
+1065     2472 -34.60853 -58.483740  16.388887  1587059470  26423          1   
+1066     2472 -34.60782 -58.484300   1.388888  1587059470  26641          0   
+1067       63 -34.62746 -58.381065   0.000000  1587059468  44560          0   
+
+                              agency_name  agency_id route_short_name  \
+0     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+...                                   ...        ...              ...   
+1063  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1064  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1065  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1066  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1067  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                   trip_headsign  
+0                     a Barracas  
+1                      a Palermo  
+2                     a Barracas  
+3                     a Barracas  
+4                      a Palermo  
+...                          ...  
+1063  9 de Julio y C. Pellegrini  
+1064  9 de Julio y C. Pellegrini  
+1065             Fac. de Derecho  
+1066  9 de Julio y C. Pellegrini  
+1067                   a Palermo  
+
+[1068 rows x 11 columns]
+     route_id  latitude  longitude     speed   timestamp     id  direction  \
+0          63 -34.59359 -58.404740  8.888888  1587058898   3766          1   
+1          63 -34.64727 -58.375440  0.000000  1587058932   3798          0   
+2          63 -34.59824 -58.394646  4.722222  1587058932   3803          1   
+3          63 -34.61448 -58.393215  0.000000  1587058932   3807          1   
+4          63 -34.60374 -58.392315  0.000000  1587058932   3810          0   
+...       ...       ...        ...       ...         ...    ...        ...   
+1123     2472 -34.60420 -58.433075  0.000000  1587059502  26348          0   
+1124     2472 -34.60895 -58.483370  0.000000  1587059502  26349          0   
+1125     2472 -34.61025 -58.482420  0.555555  1587059502  26423          1   
+1126     2472 -34.60782 -58.484300  1.388888  1587059470  26641          0   
+1127       63 -34.62740 -58.381065  0.000000  1587059500  44560          0   
+
+                              agency_name  agency_id route_short_name  \
+0     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+...                                   ...        ...              ...   
+1123  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1124  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1125  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1126  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1127  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                   trip_headsign  
+0                     a Barracas  
+1                      a Palermo  
+2                     a Barracas  
+3                     a Barracas  
+4                      a Palermo  
+...                          ...  
+1123  9 de Julio y C. Pellegrini  
+1124  9 de Julio y C. Pellegrini  
+1125             Fac. de Derecho  
+1126  9 de Julio y C. Pellegrini  
+1127                   a Palermo  
+
+[1128 rows x 11 columns]
+     route_id  latitude  longitude      speed   timestamp     id  direction  \
+0          63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1          63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2          63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3          63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4          63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+...       ...       ...        ...        ...         ...    ...        ...   
+1183     2472 -34.60420 -58.433075   0.000000  1587059502  26348          0   
+1184     2472 -34.60771 -58.484430  13.055555  1587059532  26349          0   
+1185     2472 -34.61261 -58.480490  16.388887  1587059532  26423          1   
+1186     2472 -34.60779 -58.484270   0.000000  1587059532  26641          0   
+1187       63 -34.62745 -58.381065   0.000000  1587059530  44560          0   
+
+                              agency_name  agency_id route_short_name  \
+0     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+...                                   ...        ...              ...   
+1183  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1184  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1185  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1186  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1187  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                   trip_headsign  
+0                     a Barracas  
+1                      a Palermo  
+2                     a Barracas  
+3                     a Barracas  
+4                      a Palermo  
+...                          ...  
+1183  9 de Julio y C. Pellegrini  
+1184  9 de Julio y C. Pellegrini  
+1185             Fac. de Derecho  
+1186  9 de Julio y C. Pellegrini  
+1187                   a Palermo  
+
+[1188 rows x 11 columns]
+     route_id  latitude  longitude      speed   timestamp     id  direction  \
+0          63 -34.59359 -58.404740   8.888888  1587058898   3766          1   
+1          63 -34.64727 -58.375440   0.000000  1587058932   3798          0   
+2          63 -34.59824 -58.394646   4.722222  1587058932   3803          1   
+3          63 -34.61448 -58.393215   0.000000  1587058932   3807          1   
+4          63 -34.60374 -58.392315   0.000000  1587058932   3810          0   
+...       ...       ...        ...        ...         ...    ...        ...   
+1243     2472 -34.60358 -58.433580   9.722222  1587059562  26348          0   
+1244     2472 -34.60582 -58.486435   5.277777  1587059560  26349          0   
+1245     2472 -34.61457 -58.479010  11.944444  1587059560  26423          1   
+1246     2472 -34.60603 -58.485910   5.000000  1587059560  26641          0   
+1247       63 -34.62745 -58.381035   0.555555  1587059562  44560          0   
+
+                              agency_name  agency_id route_short_name  \
+0     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+1     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+2     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+3     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+4     TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+...                                   ...        ...              ...   
+1243  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1244  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1245  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1246  TRANSPORTES AUTOMOTORES CALLAO S.A.          6             124A   
+1247  TRANSPORTES AUTOMOTORES CALLAO S.A.          6              12A   
+
+                   trip_headsign  
+0                     a Barracas  
+1                      a Palermo  
+2                     a Barracas  
+3                     a Barracas  
+4                      a Palermo  
+...                          ...  
+1243  9 de Julio y C. Pellegrini  
+1244  9 de Julio y C. Pellegrini  
+1245             Fac. de Derecho  
+1246  9 de Julio y C. Pellegrini  
+1247                   a Palermo  
+
+[1248 rows x 11 columns]
+Fin del tiempo de ejecución
+
+
+
+ +
+
+ +
+
+
+
In [10]:
+
+
+
# Si se tiene guardado el CSV, no hace falta ejecutar la descarga sino directamente cargar el archivo con esta línea
+agency_6=pd.read_csv('agency_6.csv')
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
+---------------------------------------------------------------------------
+FileNotFoundError                         Traceback (most recent call last)
+<ipython-input-10-5b9fc5c4a19a> in <module>
+      1 # Si se tiene guardado el CSV, no hace falta ejecutar la descarga sino directamente cargar el archivo con esta línea
+----> 2 agency_6=pd.read_csv('agency_6.csv')
+
+C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)
+    683         )
+    684 
+--> 685         return _read(filepath_or_buffer, kwds)
+    686 
+    687     parser_f.__name__ = name
+
+C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _read(filepath_or_buffer, kwds)
+    455 
+    456     # Create the parser.
+--> 457     parser = TextFileReader(fp_or_buf, **kwds)
+    458 
+    459     if chunksize or iterator:
+
+C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, f, engine, **kwds)
+    893             self.options["has_index_names"] = kwds["has_index_names"]
+    894 
+--> 895         self._make_engine(self.engine)
+    896 
+    897     def close(self):
+
+C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in _make_engine(self, engine)
+   1133     def _make_engine(self, engine="c"):
+   1134         if engine == "c":
+-> 1135             self._engine = CParserWrapper(self.f, **self.options)
+   1136         else:
+   1137             if engine == "python":
+
+C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py in __init__(self, src, **kwds)
+   1915         kwds["usecols"] = self.usecols
+   1916 
+-> 1917         self._reader = parsers.TextReader(src, **kwds)
+   1918         self.unnamed_cols = self._reader.unnamed_cols
+   1919 
+
+pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()
+
+pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._setup_parser_source()
+
+FileNotFoundError: [Errno 2] File b'agency_6.csv' does not exist: b'agency_6.csv'
+
+
+ +
+
+ +
+
+
+
+

Los datos recolectados de la API estan en agency_6

+
+
+
+
+
+
In [9]:
+
+
+
agency_6.info()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
<class 'pandas.core.frame.DataFrame'>
+RangeIndex: 1248 entries, 0 to 1247
+Data columns (total 11 columns):
+route_id            1248 non-null object
+latitude            1248 non-null float64
+longitude           1248 non-null float64
+speed               1248 non-null float64
+timestamp           1248 non-null int64
+id                  1248 non-null object
+direction           1248 non-null int64
+agency_name         1248 non-null object
+agency_id           1248 non-null int64
+route_short_name    1248 non-null object
+trip_headsign       1248 non-null object
+dtypes: float64(3), int64(3), object(5)
+memory usage: 107.4+ KB
+
+
+
+ +
+
+ +
+
+
+
In [17]:
+
+
+
agency_6['route_id']
+
+ +
+
+
+ +
+
+ + +
+ +
Out[17]:
+ + + + +
+
0         63
+1         63
+2         63
+3         63
+4         63
+        ... 
+1243    2472
+1244    2472
+1245    2472
+1246    2472
+1247      63
+Name: route_id, Length: 1248, dtype: object
+
+ +
+ +
+
+ +
+
+
+
+

Análisis del Dataframe construido obteniendo datos de la API

+
+
+
+
+
+
+

Metadatos

+
+
+
+
+
+
+
    +
  • 'agency_id': Número de referencia de la empresa que gestiona las líneas de colectivos

    +
  • +
  • 'agency_name': Nombre de la empresa que gestiona la línea

    +
  • +
  • 'direction' : Dirección a la que se dirige (Dummy)

    +
  • +
  • 'id': Id del interno de la línea

    +
  • +
  • 'latitude': Latitud de la ubicación del colectivo

    +
  • +
  • 'longitude': Longitud de la ubicación del colectivo en coordenadas

    +
  • +
  • 'route_id': Identificación de la línea perteneciente a la empresa

    +
  • +
  • 'route_short_name': Nombre de la línea perteneciente a la empresa

    +
  • +
  • 'speed': Velocidad

    +
  • +
  • 'timestamp': Hora de la consulta (en S)

    +
  • +
  • 'trip_headsign': Destino anunciado del viaje

    +
  • +
+
+ +
+
+
+
+
+
In [12]:
+
+
+
# Parseo la columna timestamp
+agency_6['timestamp']=pd.Series([pd.Timestamp(t, unit='s') for t in agency_6['timestamp']])
+
+ +
+
+
+ +
+
+
+
In [18]:
+
+
+
# Filtro los datos de la linea 12
+linea_12=agency_6[agency_6['route_id']=='63']
+
+ +
+
+
+ +
+
+
+
In [20]:
+
+
+
linea_12=linea_12.reset_index(drop=True)
+# cuento la cantidad de registros de cada uno de los internos de los cuales obtuve información mediante la API.
+# Algunos internos van a mostrar pocos registros. Son aquellos que inician su recorrido poco antes de que nuestro código termine de hacer consultas.
+linea_12['id'].value_counts()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[20]:
+ + + + +
+
3918     21
+3803     21
+3929     21
+19988    21
+4034     21
+3863     21
+3811     21
+3972     21
+3798     21
+25503    21
+3810     21
+4038     21
+3807     21
+16404    21
+3910     21
+3988     21
+3946     21
+3894     21
+3853     21
+3983     21
+3900     21
+3985     21
+3878     21
+3942     21
+3852     21
+44560    21
+3766     21
+25686    20
+3931     20
+4076     17
+3867     16
+3928     15
+4033     15
+4037     12
+3851     10
+3839      9
+3882      5
+3984      4
+3997      4
+3949      3
+3767      3
+Name: id, dtype: int64
+
+ +
+ +
+
+ +
+
+
+
+

Cantidad de internos circulando

+
+
+
+
+
+
In [22]:
+
+
+
print('La cantidad de internos circulano en un período de 30 min es ', str(len(linea_12['id'].unique())))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
La cantidad de internos circulano en un período de 30 min es  41
+
+
+
+ +
+
+ +
+
+
+
+

Cantidad de registros de cada interno

+
+
+
+
+
+
In [23]:
+
+
+
internos_registro=pd.DataFrame(linea_12['id'].value_counts()).reset_index()
+
+ +
+
+
+ +
+
+
+
In [24]:
+
+
+
internos_registro.columns=['interno','cantidad_registros']
+internos_registro
+
+ +
+
+
+ +
+
+ + +
+ +
Out[24]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
internocantidad_registros
0391821
1380321
2392921
31998821
4403421
5386321
6381121
7397221
8379821
92550321
10381021
11403821
12380721
131640421
14391021
15398821
16394621
17389421
18385321
19398321
20390021
21398521
22387821
23394221
24385221
254456021
26376621
272568620
28393120
29407617
30386716
31392815
32403315
33403712
34385110
3538399
3638825
3739844
3839974
3939493
4037673
+
+
+ +
+ +
+
+ +
+
+
+
In [21]:
+
+
+
# Alternativa
+# linea_12.groupby('id').count().loc[:,'agency_id']
+
+ +
+
+
+ +
+
+
+
+

Reviso si en 30 minutos hay registros de internos que hacen viajes de ida y de vuelta

+
+
+
+
+
+
+

Calculo el promedio de la columna "Direction" que contiene valores 1 y 0, agrupando por el ID del interno. El resultado asociado a cada uno de los internos será la proporcion de marcas GPS, registros o respuestas de la API en dirección "1".

+

Si un interno tiene asociado un promedio "0", todas las respuestas de la API de ese interno tienen dirección "0" +Si un interno tiene asociado un promedio "1", todas las respuestas de la API de ese interno tienen dirección "1" +Si un interno tiene asociado un promedio entre 0 y 1, los registros de la posicion de ese interno corresponden a ambas direcciónes, "0" y "1".

+ +
+
+
+
+
+
In [25]:
+
+
+
pd.DataFrame(linea_12.groupby('id').mean()['direction'].sort_values())
+
+ +
+
+
+ +
+
+ + +
+ +
Out[25]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
direction
id
39000.000000
39970.000000
39880.000000
39850.000000
39840.000000
39720.000000
39460.000000
39420.000000
39310.000000
39280.000000
39180.000000
38940.000000
38820.000000
445600.000000
37980.000000
38110.000000
38100.000000
256860.000000
37670.000000
38670.062500
39490.333333
40330.466667
40381.000000
40371.000000
40341.000000
199881.000000
255031.000000
37661.000000
39831.000000
38531.000000
38031.000000
38071.000000
39291.000000
39101.000000
40761.000000
38391.000000
38511.000000
38781.000000
38631.000000
38521.000000
164041.000000
+
+
+ +
+ +
+
+ +
+
+
+
+

Calculo la velocidad promedio de los internos cuando no estan detenidos y las velocidades máximas.

+
+
+
+
+
+
In [26]:
+
+
+
print('La velocidad promedio de los internos cuando no estan detenidos es ',str(round(linea_12['speed'][linea_12['speed']!=0].mean(), 2)))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
La velocidad promedio de los internos cuando no estan detenidos es  6.52
+
+
+
+ +
+
+ +
+
+
+
In [27]:
+
+
+
print('La velocidad máxima alcanzada por un interno es,',str(round(linea_12['speed'].max(),2)))
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
La velocidad máxima alcanzada por un interno es, 15.28
+
+
+
+ +
+
+ +
+
+
+
In [28]:
+
+
+
## bonus encontrar clusters en los que se encuentren mas puntos para identificar paradas/semaforos. 
+
+ +
+
+
+ +
+
+
+
+

Visualizacion de de la Línea 12

+
+
+
+
+
+
In [29]:
+
+
+
linea_12
+
+ +
+
+
+ +
+
+ + +
+ +
Out[29]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
route_idlatitudelongitudespeedtimestampiddirectionagency_nameagency_idroute_short_nametrip_headsign
063-34.59359-58.4047408.8888882020-04-16 17:41:3837661TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Barracas
163-34.64727-58.3754400.0000002020-04-16 17:42:1237980TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Palermo
263-34.59824-58.3946464.7222222020-04-16 17:42:1238031TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Barracas
363-34.61448-58.3932150.0000002020-04-16 17:42:1238071TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Barracas
463-34.60374-58.3923150.0000002020-04-16 17:42:1238100TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Palermo
....................................
71563-34.59566-58.3971006.9444442020-04-16 17:52:12164041TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Barracas
71663-34.59959-58.3944300.0000002020-04-16 17:52:40199881TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Barracas
71763-34.58571-58.4152450.5555552020-04-16 17:52:42255031TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Barracas
71863-34.62809-58.3782657.5000002020-04-16 17:52:40256860TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Palermo
71963-34.62745-58.3810350.5555552020-04-16 17:52:42445600TRANSPORTES AUTOMOTORES CALLAO S.A.612Aa Palermo
+

720 rows × 11 columns

+
+
+ +
+ +
+
+ +
+
+
+
+

Todos los puntos de posición conectado por líneas

+
+
+
+
+
+
In [32]:
+
+
+
fig = px.line_mapbox(linea_12, lat="latitude", lon="longitude", color="id", zoom=3, height=300)
+
+fig.update_layout(mapbox_style="carto-positron", mapbox_zoom=11, mapbox_center_lat = -34.6,
+    margin={"r":1,"t":0,"l":0,"b":0})
+
+fig.show()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + +
+ + +
+ +
+ +
+ +
+ + + +
+
+ + +
+ +
+
+ +
+ +
+
+ +
+
+
+
+

Todos los puntos de posición de los colectivos pintados según la velocidad a la que transitaban

+
+
+
+
+
+
In [33]:
+
+
+
fig = px.scatter_mapbox(linea_12, lat="latitude", lon="longitude", color="speed", zoom=3, height=300)
+
+fig.update_layout(mapbox_style="carto-positron", mapbox_zoom=11, mapbox_center_lat = -34.6,
+    margin={"r":1,"t":0,"l":0,"b":0})
+
+fig.show()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + +
+
+ + +
+ +
+
+ +
+ +
+
+ +
+
+
+
+

Selecciono las velocidades = 0 para detectar paradas

+
+
+
+
+
+
In [34]:
+
+
+
linea_12_0=linea_12[linea_12['speed']==0]
+
+ +
+
+
+ +
+
+
+
In [35]:
+
+
+
fig = px.scatter_mapbox(linea_12_0, lat="latitude", lon="longitude", color="speed", zoom=3, height=300)
+
+fig.update_layout(mapbox_style="carto-positron", mapbox_zoom=11, mapbox_center_lat = -34.6,
+    margin={"r":1,"t":0,"l":0,"b":0})
+
+fig.show()
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + +
+
+ + +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + + diff --git a/clase-6/Clase-6 .ipynb b/clase-6/Clase-6 .ipynb new file mode 100644 index 0000000..6d50558 --- /dev/null +++ b/clase-6/Clase-6 .ipynb @@ -0,0 +1,592 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# API de Transporte Público Ciudad de Buenos Aires" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Objetivos\n", + "El objetivo general de esta clase es el de integrar alguno de los conocimientos adquiridos en el transcurso del curso: la obtención de datos desde diversas fuentes, la limpieza y preprocesamiento del dataset(data wrangling) y el posterior análisis y visualización de los datos. \n", + "\n", + "Particularmente vamos a estar trabajando con datos de la API de transporte público del Gobierno de la Ciudad de Buenos Aires. A través de esta herramienta lograremos monitorear el estado del transporte público (especificamente colectivos, específicamente la Linea 12) en tiempo real, identificar y visualizar los colectivos que se encuentran circulando dentro del territorio de la Ciudad de Buenos Aires. \n", + "\n", + "##### ¿Por qué es útil esto? \n", + "A través de la API de transporte público de Buenos Aires se pueden desarrollar innumerables aplicaciones y entrenar modelos. Por ejemplo: podemos predecir la llegada de internos a una parada en particular, podemos pensar cómo optimizar el sistema de transporte de modo de disminuir la frecuencia del servicio, podemos estimar el estado de la congestión del tránsito en determinados puntos de la Ciudad, conocer paradas de colectivos \"no oficiales\", entre otras muchas cosas." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### ¿Qué es una API (*application programming interface*)?\n", + "Una API es un conjunto de funciones predefinidas que se utilizan para el desarrollo de aplicaciones, ofrecidas por una biblioteca para ser utilizadas por otro software. Uno de sus principales propósitos consiste en proporcionar funciones de uso general de forma que los desarrolladores hagan uso de las mismas para evitar escribir código desde cero.\n", + "\n", + "#### La API de Transporte Público de Buenos Aires\n", + "Tiene por objetivo proveer los datos abiertos del transporte público de la Ciudad en formato estandarizado y en **tiempo real**.\n", + "\n", + "Algunos de los conjuntos de datos centrales multimodales incluidos y disponibles para los desarrolladores son:\n", + "\n", + "> - Planificación del viaje (actual y futuro)\n", + "> - Estado (actual y futuro)\n", + "> - Interrupciones (actuales) y trabajos planificados (futuro)\n", + "> - Predicciones de llegada / salida (instantánea y websockets)\n", + "> - Horarios\n", + "> - Puntos de embarque e instalaciones\n", + "> - Rutas y líneas (topología y geográfica)\n", + "\n", + "#### Cómo conseguir permiso para utilizar la API de Transporte Público de Buenos Aires\n", + "\n", + "Es muy sencillo. En primer lugar, cabe aclarar que la API es un servicio NO arancelado. No hay que pagar nada para utilizarla. Podríamos decir que se trata de un conjunto de datos abiertos, pero no es del todo así, ya que su utilización requiere de crear un usuario, hacer un registro y obtener una autorización para su uso (el argumento por detrás de esto es el de garantizar el funcionamiento del servicio ante picos de demanda). \n", + "\n", + "Para obtener nuestro USER y PASS para acceder al servicio hace falta ingresar en https://www.buenosaires.gob.ar/form/formulario-de-registro-api-transporte y completar los campos con nuestros datos, para luego recibir vía correo nuestras credenciales (client_id y client_secret). \n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## COMIENZO DEL SCRIPT" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Paso 1: Importar las Bibliotecas necesarias\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "# This module provides regular expression matching operations\n", + "import re\n", + "# To make HTTP requests\n", + "import requests\n", + "\n", + "# To transform json objects into DataFrame\n", + "from pandas.io.json import json_normalize\n", + "\n", + "# To transform STR objects into json\n", + "import json\n", + "\n", + "# To parse str objects into date and time objects\n", + "import datetime\n", + "\n", + "# import urllib.request ----> Otra libreria para consultar http nativa de python\n", + "\n", + "# To get current time\n", + "import time\n", + "\n", + "# To pause the loops\n", + "from time import sleep\n", + "\n", + "# Make graphs\n", + "# !pip install plotly\n", + "import plotly.express as px\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Construcción de la URL a consultar" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **1-** Ingreso a *https://www.buenosaires.gob.ar/desarrollourbano/transporte/apitransporte/api-doc*\n", + "\n", + "> **2-** Selecciono la opción */colectivos/vehiclePositions*: Devuelve la posición de los vehículos monitoreados actualizada cada 30 segundos \n", + "\n", + "> **3-** Ingreso las credenciales \"client_id\" y \"client_secret\" y el parámetro \"agency_id\" (para seleccionar la línea de colectivos que me interesa)\n", + "\n", + "> **4-** Selecciono \"GET\" y copio la URL que se construye." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Creo un objeto llamado url de tipo STR con la url que copié en la documentación de la API.\n", + "\n", + "Notar que se construye concatenando la consulta que nos interesa **\"vehiclePositionsSimple\"** con el parámetro **\"agency_id\"** y las credenciales **\"client_id\"** y **\"client_secret\"**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "url='https://apitransporte.buenosaires.gob.ar/colectivos/vehiclePositionsSimple?agency_id=6&client_id=a0119e3e5ebf4fb4a0cbdea04de12037&client_secret=19967Bb82e7e4C7bab2CA49e3d631C3E' " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Alternativa para construir la url\n", + "\n", + "Seteo el parametro que me interesa y las credenciales de la API en objetos del tipo STR para luego completar las URL que se encuentra en otro objeto del tipo STR\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Option 2: Create a function\n", + "def url_bus(id_agency, user, psw):\n", + " \n", + " url= 'https://apitransporte.buenosaires.gob.ar/colectivos/vehiclePositionsSimple?agency_id='+str(id_agency)+'&client_id='+str(user)+'&client_secret='+str(psw) \n", + " \n", + " return url " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Option 3: Set parameters & credentials in objects\n", + "\n", + "agency_id= '6'\n", + "\n", + "client_id= 'a0119e3e5ebf4fb4a0cbdea04de12037'\n", + "\n", + "client_secret= '19967Bb82e7e4C7bab2CA49e3d631C3E'\n", + "\n", + "url_incompleta= 'https://apitransporte.buenosaires.gob.ar/colectivos/vehiclePositionsSimple?agency_id={}&client_id={}&client_secret={}' \n", + "\n", + "# Con '.format' agrego otros strings al string principal 'url' \n", + "# agregando como parametros lo que quiero que aparezca entre los corchetes\n", + "\n", + "url_buses= url.format(agency_id,\n", + " client_id,\n", + " client_secret)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loop para recolectar los datos de la API en un período de tiempo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Create an empty Data Frame\n", + "agency_6=pd.DataFrame()\n", + "\n", + "# this pattern captures all text in {}\n", + "pattern='({.*?})'\n", + "\n", + "# 60 sec * 10 min\n", + "timeout = time.time() + 60*10\n", + " \n", + "while True:\n", + " \n", + " # API requests\n", + " response= requests.get(url)\n", + " \n", + " # Get text from API response\n", + " text_api= response.text\n", + " \n", + " # Capture text in {} from the API response\n", + " data_buses=re.findall(pattern, text_api.replace('\\n',''))\n", + " \n", + " # For loop to append data from all bus units to empty Data Frame\n", + " for i in range(len(data_buses)):\n", + " \n", + " # Convert to JSON (or dict) each row of the API response text \n", + " json_buses=json.loads(data_buses[i])\n", + " \n", + " # Convert to DataFrame and append to linea_12 DF \n", + " agency_6=agency_6.append(json_normalize(json_buses), ignore_index=True)\n", + " \n", + " print(agency_6)\n", + " \n", + " if time.time() > timeout:\n", + " \n", + " print('Fin del tiempo de ejecución')\n", + " \n", + " break\n", + " \n", + " ## Wait 30 seconds to get new data from the API \n", + " sleep(30)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Si se tiene guardado el CSV, no hace falta ejecutar la descarga sino directamente cargar el archivo con esta línea\n", + "agency_6=pd.read_csv('agency_6.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Los datos recolectados de la API estan en agency_6" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "agency_6.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "agency_6['route_id']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Análisis del Dataframe construido obteniendo datos de la API" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Metadatos" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + ">- **'agency_id'**: Número de referencia de la empresa que gestiona las líneas de colectivos\n", + "\n", + ">- **'agency_name'**: Nombre de la empresa que gestiona la línea\n", + "\n", + ">- **'direction'** : Dirección a la que se dirige (Dummy)\n", + "\n", + ">- **'id'**: Id del interno de la línea\n", + "\n", + ">- **'latitude'**: Latitud de la ubicación del colectivo\n", + "\n", + ">- **'longitude'**: Longitud de la ubicación del colectivo en coordenadas \n", + "\n", + ">- **'route_id'**: Identificación de la línea perteneciente a la empresa\n", + "\n", + ">- **'route_short_name'**: Nombre de la línea perteneciente a la empresa\n", + "\n", + ">- **'speed'**: Velocidad\n", + "\n", + ">- **'timestamp'**: Hora de la consulta (en S)\n", + "\n", + ">- **'trip_headsign'**: Destino anunciado del viaje" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Parseo la columna timestamp\n", + "agency_6['timestamp']=pd.Series([pd.Timestamp(t, unit='s') for t in agency_6['timestamp']])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Filtro los datos de la linea 12\n", + "linea_12=agency_6[agency_6['route_id']=='63']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "linea_12=linea_12.reset_index(drop=True)\n", + "# cuento la cantidad de registros de cada uno de los internos de los cuales obtuve información mediante la API.\n", + "# Algunos internos van a mostrar pocos registros. Son aquellos que inician su recorrido poco antes de que nuestro código termine de hacer consultas.\n", + "linea_12['id'].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Cantidad de internos circulando" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('La cantidad de internos circulano en un período de 30 min es ', str(len(linea_12['id'].unique())))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Cantidad de registros de cada interno" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "internos_registro=pd.DataFrame(linea_12['id'].value_counts()).reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "internos_registro.columns=['interno','cantidad_registros']\n", + "internos_registro" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Alternativa\n", + "# linea_12.groupby('id').count().loc[:,'agency_id']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Reviso si en 30 minutos hay registros de internos que hacen viajes de ida y de vuelta" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculo el promedio de la columna \"Direction\" que contiene valores 1 y 0, agrupando por el ID del interno. El resultado asociado a cada uno de los internos será la proporcion de marcas GPS, registros o respuestas de la API en dirección \"1\". \n", + "\n", + "Si un interno tiene asociado un promedio \"0\", todas las respuestas de la API de ese interno tienen dirección \"0\"\n", + "Si un interno tiene asociado un promedio \"1\", todas las respuestas de la API de ese interno tienen dirección \"1\"\n", + "Si un interno tiene asociado un promedio entre 0 y 1, los registros de la posicion de ese interno corresponden a ambas direcciónes, \"0\" y \"1\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "pd.DataFrame(linea_12.groupby('id').mean()['direction'].sort_values())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Calculo la velocidad promedio de los internos cuando no estan detenidos y las velocidades máximas. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('La velocidad promedio de los internos cuando no estan detenidos es ',str(round(linea_12['speed'][linea_12['speed']!=0].mean(), 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('La velocidad máxima alcanzada por un interno es,',str(round(linea_12['speed'].max(),2)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "## bonus encontrar clusters en los que se encuentren mas puntos para identificar paradas/semaforos. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizacion de de la Línea 12" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "linea_12" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Todos los puntos de posición conectado por líneas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = px.line_mapbox(linea_12, lat=\"latitude\", lon=\"longitude\", color=\"id\", zoom=3, height=300)\n", + "\n", + "fig.update_layout(mapbox_style=\"carto-positron\", mapbox_zoom=11, mapbox_center_lat = -34.6,\n", + " margin={\"r\":1,\"t\":0,\"l\":0,\"b\":0})\n", + "\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Todos los puntos de posición de los colectivos pintados según la velocidad a la que transitaban\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "fig = px.scatter_mapbox(linea_12, lat=\"latitude\", lon=\"longitude\", color=\"speed\", zoom=3, height=300)\n", + "\n", + "fig.update_layout(mapbox_style=\"carto-positron\", mapbox_zoom=11, mapbox_center_lat = -34.6,\n", + " margin={\"r\":1,\"t\":0,\"l\":0,\"b\":0})\n", + "\n", + "fig.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Selecciono las velocidades = 0 para detectar paradas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "linea_12_0=linea_12[linea_12['speed']==0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "fig = px.scatter_mapbox(linea_12_0, lat=\"latitude\", lon=\"longitude\", color=\"speed\", zoom=3, height=300)\n", + "\n", + "fig.update_layout(mapbox_style=\"carto-positron\", mapbox_zoom=11, mapbox_center_lat = -34.6,\n", + " margin={\"r\":1,\"t\":0,\"l\":0,\"b\":0})\n", + "\n", + "fig.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From c063aabe0a3a63117d71e698ffbe790b4c7ddb56 Mon Sep 17 00:00:00 2001 From: fppenna <41331853+fppenna@users.noreply.github.com> Date: Thu, 16 Apr 2020 16:28:22 -0300 Subject: [PATCH 2/2] Clase 6 practica MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clase 6 con 4 ejercicios prácticos sobre la API de TP. (Ntb sin respuestas) --- "clase-6/Clase 6 pr\303\241ctica.ipynb" | 122 ++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 "clase-6/Clase 6 pr\303\241ctica.ipynb" diff --git "a/clase-6/Clase 6 pr\303\241ctica.ipynb" "b/clase-6/Clase 6 pr\303\241ctica.ipynb" new file mode 100644 index 0000000..53e2ded --- /dev/null +++ "b/clase-6/Clase 6 pr\303\241ctica.ipynb" @@ -0,0 +1,122 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# API de Transporte Público Ciudad de Buenos Aires\n", + "## Práctica" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Objetivos\n", + "\n", + "El objetivo de este ejercicio es poner en práctica los recursos con los que se trabajó en la clase de la API de trasporte público. El mismo consiste en descargar información de distintos recursos de la API (Monopatines, Bicicletas, Colectivos), limpiar los datos, extraer algunas estadísticas y visualizar la información. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ejercicio 1: Monopatines\n", + "Los monopatines son vehiculos de propiedad de tres empresas que operan en la Ciudad de Buenos Aires. Se encuentran ubicados en distintos puntos de la Ciudad y respetan una zona de uso asignada a cada una de las empresas. \n", + "La API de transporte recopila información de monopatines en tiempo real: su ubicación y su disponibilidad." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Actividad 1: \n", + "Construir la URL de consulta del servicio de monopatines (https://www.buenosaires.gob.ar/desarrollourbano/transporte/apitransporte/api-doc), consultar y almacenar información en un lapso de 1 minuto." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Actividad 2:\n", + "Limpiar el dataset de forma adecuada para: \n", + "\n", + "**A-** Responder a la siguiente pregunta ¿Cuál es la proporción de monopatines disponibles para su uso en cada una de las empresas?\n", + "\n", + "**B**- Visualizar en un mapa la ubicación de los monopatines para los cuales obtuvimos información, diferenciando a los puntos con colores de acuerdo a la empresa propietaria del vehículo. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ejercicio 2: ECOBICI\n", + "Ecobici es el servicio de bicicletas públicas de la Ciudad de Buenos Aires. Se encuentran ubicadas en estaciones distribuidas en gran parte del territorio de la Ciudad, su uso es gratuito y permite un máximo de uso de 30 minutos. \n", + "Cada estación cuenta con un promedio de 10 estacionamientos para bicicletas, algunos ocupados con bicicletas disponibles para su uso y otros libres, que permiten anclar bicicletas a los usuarios que finalizaron su recorrido. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Actividad 1: \n", + "\n", + "Construir la URL de consulta del servicio de monopatines (https://www.buenosaires.gob.ar/desarrollourbano/transporte/apitransporte/api-doc), consultar y almacenar información en un lapso de 1 minuto." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Actividad 2:\n", + "Limpiar el dataset de forma adecuada para obtener: \n", + "\n", + "**A-** El promedio de bicicletas disponibles en el momento de la consulta.\n", + "\n", + "**B-** La estación de bicicletas con mas vehículos disponibles en el momento de la consulta. \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}