Para llevar a cabo un estudio de un sistema, ya sea de bicicletas o de cualquier otra índole, es necesario tener a nuestra disposición una gran cantidad de datos con los que trabajar. Para nuestro proyecto, necesitamos conocer la localización geográfica de las estaciones de bici de diferentes ciudades.
DATOS EN FORMATO .CSV
Si buscamos "bikesharing data" en Internet, encontraremos varios portales web de empresas de alquiler de bicicletas con una sección de Open Data donde podemos obtener estos datos de forma gratuita y podemos usarlos sin ningún tipo de restricción. Algunos de estos sitios web son:
Estos datos suelen aparecer en formato .csv y muchos de ellos siguen el formato especificado por la GBFS (General Bikeshare Feed Specification). Algunos de estos sitios no solo nos facilitan la localización de las estaciones de bici sino que además mantienen un registro abierto y accesible de la actividad de cada una de estas estaciones. Podemos saber cuándo y dónde un usuario alquiló una bici, cuánto tiempo la ha estado usando y dónde la ha depositado al terminar, entre otras cosas.
Además, existe una página web llamada bikeshare.com que nos redirige a diferentes repositorios donde podemos obtener también información de la actividad de las estaciones que puede ser útil para hacer un estudio dinámico de la red. El sitio en cuestión es este. En alguno de los enlaces que hemos mostrado antes, también es posible conseguir datos de los trayectos que han hecho los usuarios.
TRADUCCIÓN DE DIRECCIONES CON GEOPY
El primer problema que aparece con estos datos es que no todos nos indican las coordenadas de longitud y latitud de las estaciones sino que utilizan el nombre de la calle en la que se encuentran. Debemos mapear las direcciones a coordenadas de latitud y longitud para nuestro estudio.
Para ello, vamos a usar una librería de Python llamada Geopy que permite la traducción de nombres de calles a coordenadas y viceversa. Además, podemos solicitar a Geopy que nos calcule la distancia entre dos puntos. Esto puede ser interesante porque así podemos saber con mayor exactitud la distancia entre dos estaciones en lugar de basarnos en la distancia euclidiana.
La documentación oficial de Geopy la podemos encontrar en el siguiente enlace. En ella se nos enseña a utilizar las funciones de Geopy mediante ejemplos que podemos copiar en nuestro programa para hacer las traducciones de direcciones. Cabe destacar que, en nuestro caso, queremos traducir un dataset completo de direcciones, es decir, vamos a tener que hacer muchas peticiones al servidor de Geopy.
Como Geopy es abierto para toda la comunidad, no podemos bombardear sus servidores con peticiones muy seguidas, debemos dejar un intervalo de tiempo entre ellas o el servidor nos bloqueará. La documentación oficial contempla esta situación y explica la forma correcta de hacer muchas peticiones consecutivas en el apartado Usage with Pandas donde se explica el uso de la clase RateLimit.
Si tenemos alguna duda y preferimos el clásico tutorial de Youtube, aquí dejo el que usé yo (click aquí).
DATOS EN FORMATO .JSON
Hasta ahora, la mayoría de los sitios de los que habíamos conseguido información se encontraban en EEUU. Para obtener información de sistemas de bicicletas por todo el mundo, podemos visitar la página de bikeshare-research.org. Este sitio web recopila información de redes de alquiler de bicicletas y la ofrece a través de una API.
Enlace a bikeshare-research.org
Dentro de esta página, si seleccionamos un país y una ciudad, podemos ver un apartado llamado CityBikes feed donde puede aparecer un enlace a un fichero json con la información geoespacial de las estaciones de bici de la ciudad. En todas las ciudades no aparece este enlace pero en muchas de ellas sí.
Es posible que a través de la API se pueda obtener más información de la que aparece en el json. De hecho, algunos atributos indican el número de bicicletas disponibles en la estación y el número de huecos. Así que, esta API también puede ser interesante para hacer un estudio dinámico. Además, también cabe la posibilidad de que podamos obtener los datos de las ciudades que no tienen un json vinculado mediante la API.
Cabe mencionar que la información geoespacial de las estaciones aparece expresada en un formato con el que no estamos familiarizados y será necesario estudiar cómo traducir los valores de latitud y longitud para poder representarlos y estudiarlos.
RESULTADOS
Después de extraer toda la información, hemos realizado un conteo del número de estaciones por ciudad y hemos elaborado un ranking con todas las ciudades. El resultado se muestra a continuación:
En total hay 84 ciudades.
place | num_stations |
Paris_Francia | 1398 |
NewYork_EEUU | 936 |
Londres_ReinoUnido | 781 |
Boston_Canada | 619 |
Chicago_EEUU | 612 |
Washington_EEUU | 579 |
Toronto_Canada | 463 |
Helsinki_Finlandia | 450 |
Barcelona_Spain | 444 |
SanFrancisco_EEUU | 430 |
Lyon_Francia | 415 |
Bruselas_Belgica | 354 |
Warsaw_Polonia | 344 |
Boston_EEUU | 330 |
Milan_Italia | 302 |
Antwerp_Belgica | 301 |
Toulouse_Francia | 288 |
RioDeJaneiro_Brasil | 262 |
Sevilla_Spain | 260 |
Madrid_Spain | 214 |
Turin_Italia | 206 |
Vancouver_Canada | 200 |
Nice_Francia | 176 |
StPetesburg_EEUU | 174 |
SaoPaulo_Brasil | 154 |
Brisbane_Australia | 151 |
Miami_EEUU | 146 |
Budapest_Hungria | 144 |
Philadelphia_EEUU | 141 |
Zaragoza_Spain | 130 |
Marseille_Francia | 123 |
Nantes_Francia | 121 |
Viena_Austria | 120 |
Dublin_Irlanda | 110 |
Houston_EEUU | 108 |
Pittsburgh_EEUU | 101 |
Edimburgo_ReinoUnido | 97 |
Luxemburgo_Luxemburgo | 92 |
Columbus_EEUU | 83 |
Recife_Brasil | 77 |
Denver_EEUU | 76 |
Goteborg_Suecia | 74 |
AustinTexas_EEUU | 74 |
Omaha_EEUU | 70 |
Glasgow_ReinoUnido | 67 |
Ljubljana_Eslovenia | 61 |
SanAntonio_EEUU | 61 |
Calais_Francia | 56 |
ClermontFerrand_Francia | 52 |
Caen_Francia | 50 |
AbuDhabi_EmiratosArabes | 50 |
Indianapolis_EEUU | 50 |
Belfast_ReinoUnido | 47 |
Madison_EEUU | 46 |
FortWorth_EEUU | 46 |
Boulder_EEUU | 45 |
SaltLake_EEUU | 45 |
CergyPontoise_Francia | 43 |
Valence_Francia | 43 |
Chattanooga_EEUU | 42 |
Mulhouse_Francia | 41 |
Kansas_EEUU | 41 |
Vilnius_Lithuania | 36 |
Cork_Irlanda | 33 |
SaintEtienne_Francia | 31 |
Besacon_Francia | 30 |
Charlotte_EEUU | 29 |
Namur_Belgica | 28 |
Nancy_Francia | 28 |
Amiens_Francia | 27 |
Dayton_EEUU | 27 |
Rouen_Francia | 25 |
FortLauderdale_EEUU | 23 |
Limerick_Irlanda | 23 |
Toyama_Japon | 22 |
DesMoines_EEUU | 22 |
ElPaso_EEUU | 18 |
Lund_Suecia | 17 |
Santander_Spain | 16 |
Fargo_EEUU | 11 |
Creteil_Francia | 10 |
Kazan_Rusia | 7 |
Spartanburg_EEUU | 6 |
Lillestrom_Noruega | 6 |
No hay comentarios:
Publicar un comentario