domingo, 1 de marzo de 2020

Estudio estático. Recopilación de datasets


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.


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

Teoría de Redes Complejas (Parte 1). Conceptos básicos

Para continuar con nuestro proyecto vamos a hacer un estudio aplicando teoría de grafos y de redes complejas con el objetivo de demostrar...