6.2. Efecte Airbnb: anàlisi geoespacial
6.2.4. Preguntes a resoldre
Les preguntes de l’exercici s’han respost per a la ciutat de Madrid, però el procediment és vàlid per a qualsevol altra ciutat. T’animem a que apliquis aquest exercici a la teva ciutat.
6.2.4.1. Quin és l’impacte d’Airbnb a les diferents zones de la ciutat?
Considerarem com a zones els districtes de Madrid.
a. Quina anàlisi o visualització respon a la pregunta?
Dues anàlisis complementàries:
- Un mapa on es vegin els contorns dels barris i els pisos d’Airbnb representats per punts. Les àrees poden tenir un codi de color que indiqui la quantitat de pisos d’Airbnb en aquesta zona o la proporció d’allotjaments d’Airbnb anunciats respecte del total d’habitatges. Aquesta segona opció, la proporcionalitat, és més indicada per a un mapa de coropletes.
- Un diagrama de barres que representi la quantitat de pisos Airbnb per districte.
b. Quines dades necessito i on les puc trobar?
Per calcular el nombre d’allotjaments d’Airbnb per districte necessitaràs el llistat d’allotjaments d’Airbnb geolocalitzats (amb latitud i longitud) i els contorns dels districtes. Per calcular la proporció d’allotjaments d’Airbnb respecte del total d’habitatges també necessitaràs el nombre d’habitatges de cada barri. Vegem com podem aconseguir cadascuna d’aquestes dades:
Llistat d’allotjaments d’Airbnb
Airbnb no té una API i, per tant, no resulta senzill interactuar o descarregar-se les dades de la plataforma. La manera de fer-ho és programar un scraper que recorri la web d’Airbnb descarregant les dades que ens interessen. Tot i que seria molt interessant fer-ho, en aquest exercici no ho farem.
L’alternativa és posar-se en contacte amb algú que ja hagi programat un scraper per al lloc web d’Airbnb i que ens faciliti les dades. Aquí teniu diversos llocs web que proporcionen dades d’Airbnb, i també us animem a que busqueu les vostres pròpies fonts:
- Inside Airbnb. Inside Airbnb és una pàgina alimentada per Murray Coix, que ha programat el seu propi scraper per obtenir dades d’Airbnb. Disposa de dades de desenes de ciutats. Si la ciutat que busques no apareix a la llista o si les dades no estan actualitzades, pots contactar directament amb Murray.
- Data Hippo. Data Hippo és una plataforma per allotjar dades de plataformes de lloguer turístic de ciutats d’Espanya i Portugal. Disposa de dades d’Airbnb, Homeaway i Housetrip per regions, províncies i ciutats. A les principals ciutats turístiques, disposa de dades per barris o districtes. Pots posar-te en contacte amb la gent de Data Hippo per mitjà del seu compte de twitter.
L’elecció de la font de les dades és crucial: d’aquesta elecció dependrà l’estructura de dades, que és diferent per a cada font i depèn de com de recents i completes siguin les dades. Abans de descarregar un conjunt de dades, convé consultar-ne la data de recol·lecció i els camps que conté.
Nota
En aquest exercici utilitzarem les dades de Data Hippo, que són del mes d’octubre del 2017 i, per tant, més recents que les d’Inside Airbnb, i que contenen la informació necessària per fer l’estudi per districtes.
Les dades de Madrid es poden consultar aquí: http://datahippo.org/en/region/599232178a46554f807aec1b/.
I es poden descarregar en format CSV:
http://datahippo.org/media/regions/ea554b7f-0516-4d1c-91e6-883567800e08/599232178a46554f807aec1b_airbnb.csv
Contorns dels districtes
Els contorns dels districtes de Madrid també els podem obtenir de Data Hippo en format geoJSON.
L’arxiu de Data Hippo també conté el total d’allotjaments Airbnb que hi ha a cada districte. En la secció següent veurem que amb aquest fitxer en tenim prou per realitzar l’exercici i que no ens farà falta el fitxer anterior. Tanmateix, recollirem el procediment complet per si les dades les dades de Data Hippo no estan disponibles.
A Data Hippo hi ha dos fitxers geoJSON per a Madrid: geojson_region.json, que conté el contorn del municipi, i geojson_subregions.json, que conté els contorns dels districtes. Pots accedir a aquests arxius des de la secció del municipi de Madrid.
Sempre és recomanable obtenir les dades de la font institucional (la font primigènia), que en aquest cas és l’Ajuntament de Madrid. Els contorns dels districtes també estan disponibles al portal web de l’Ajuntament de Madrid. Vénen en un shapefile (conjunt de fitxers que es pot baixar en format comprimit .zip), així que hauràs de transformar el seu sistema de projecció ETRS89 al CRS EPSG:4326 – WGS 84. Abans, Carto.com no acceptava altres CRS diferents de l’estàndard EPSG:4326 – WGS 84; ara, però, sí que n’accepta. Des de QGIS pots obrir l’arxiu que has baixat com a capa vectorial i guardar-lo com un nou arxiu amb el CRS que triïs (en aquest manual trobaràs una descripció més detallada).
Habitatges per districte
El nombre total d’habitatges per districte i barri el podem obtenir del portal web de dades obertes de l’Ajuntament de Madrid.
c. Quines eines puc utilitzar per preparar les dades?
Nombre de pisos d’Airbnb per districte
Les dades d’Airbnb que es poden aconseguir a Data Hippo ja estan segmentades per districte, així que la dada que necessitem ja és al conjunt de dades.
Si no la tinguéssim, la podríem obtenir mitjançant el procediment següent: podem calcular el nombre d’allotjaments per districte explicant quants punts hi ha dins del contorn de cada districte. Aquesta és l’operació que Data Hippo ha fet amb les dades.
La ubicació dels allotjaments d’Airbnb és aproximada. Segons el mateix lloc web: «Location information for listings are anonymized by Airbnb. In practice, this means the location for a listing on the map, or in the data will be from 0-450 feet (150 metres) of the actual address. Listings in the same building are anonymized by Airbnb individually, and therefore may appear “scattered” in the area surrounding the actual address».
Per tant, si optem pel mètode d’explicar punts en contorns, hem de tenir en compte que alguns allotjaments estan situats fora del districte que els correspon i, per tant, els nombres inclouran una imprecisió.
Bola extra: Una manera de corregir aquest error és aconseguir dades d’Airbnb que incloguin el codi postal de cada allotjament (Data Hippo no el proporciona, però Inside Airbnb sí que ho fa). Llavors es podria fer una taula d’equivalència entre els districtes i els codis postals. Amb aquesta taula podríem recórrer el llistat d’allotjaments i afegir-hi una columna amb el districte. Aquesta unió de taules es pot realitzar amb QGIS o amb una consulta SQL.
Contorn de districtes
Els contorns que ens hem descarregat de Data Hippo estan preparats per ser utilitzats.
Habitatges per districte
L’arxiu que hem baixat del portal de dades de l’Ajuntament de Madrid és un full de càlcul amb una pestanya per a cada districte i moltes dades per a cada districte i cada barri. Cal anar a buscar la dada de quantitat d’habitatges a la cel·la 239I de cadascuna de les pestanyes. Es podria automatitzar l’obtenció d’aquesta dada per a cada pestanya, però com que hi ha tants pocs districtes no paga la pena fer-ho.
Enganxem aquí la taula amb el total d’habitatges a cada districte, i d’aquesta manera t’estalviem aquest pas tan avorrit:
Arganzuela | 76260 |
Barajas | 20370 |
Carabanchel | 115270 |
Centro | 86795 |
Chamartín | 72120 |
Chamberí | 79780 |
Ciudad Lineal | 101740 |
Fuencarral- El Pardo | 99260 |
Hortaleza | 74930 |
Latina | 115500 |
Moncloa-Aravaca | 55125 |
Moratalaz | 44405 |
Puente de Vallecas | 106585 |
Retiro | 56595 |
Salamanca | 83575 |
San Blas-Canillejas | 67450 |
Tetuán | 80160 |
Usera | 59285 |
Vicálvaro | 30305 |
Villa de Vallecas | 43520 |
Villaverde | 61920 |
A continuació tens les mateixes dades però sense tildes i en format CSV, ja preparada per a ser usada:
distrito,total
Arganzuela,76260
Barajas,20370
Carabanchel,115270
Centro,86795
Chamartin,72120
Chamberi,79780
Ciudad Lineal,101740
Fuencarral- El Pardo,99260
Hortaleza,74930
Latina,115500
Moncloa-Aravaca,55125
Moratalaz,44405
Puente de Vallecas,106585
Retiro,56595
Salamanca,83575
San Blas -Canillejas,67450
Tetuan,80160
Usera,59285
Vicalvaro,30305
Villa de Vallecas,43520
Villaverde,61920
d. Quines eines puc utilitzar per produir la visualització?
El mapa de coropletes dels districtes es pot realitzar amb diferents eines. Una possibilitat és utilitzar QGIS, que ens permet fer el càlcul de punts (allotjaments) dins d’un polígon (districte) i produir un paquet que inclogui tot allò necessari (fitxers amb les dades, llibreries Javascript i fitxer HTML) per publicar les dades en un lloc web. Una altra opció és utilitzar el servei Carto.com, que ens permet fer el mateix que QGIS i després generar un codi per incrustar el mapa en un altre lloc web.
Nota
Atès que estàs produint una visualització per incloure en el lloc web del mitjà digital on treballes, et recomanem que utilitzis Carto.com, ja que el codi que genera et permetrà incrustar fàcilment el mapa, com si fos un article normal.
Nombre de punts per districte
Com comentàvem a la secció anterior, el dataset de Data Hippo inclou el nombre d’allotjaments d’Airbnb per districte a la airbnb_aptms.
En cas que no el tinguem, cal seguir els passos que es mostren a continuació per obtenir-lo amb Carto.com.
Nota
Durant l’elaboració d’aquests exercicis, Carto.com s’ha convertit en un servei de pagament. Per utilitzar-lo pots sol·licitar un accés d’estudiant (Student and Educator Accounts). També hem desenvolupat el mateix exercici amb QGIS. Està disponible al manual ¿Cómo se concentra la oferta por barrios de Airbnb? de la wiki de Montera34.
1) Inicia sessió amb el teu compte de Carto.com. Si no tens compte, dóna’t d’alta.
2) Afegeix com a nous datasets l’arxiu dels allotjaments i l’arxiu amb els contorns dels districtes.
No fa falta que baixis els conjunts de dades de Data Hippo; si proporciones les URL als arxius, Carto.com crearà els datasets:
3) Crea un mapa i afegeix com a capes els arxius que acabes de pujar:
4) Situa’t a la capa dels contorns i fes clic a Analysis. Afegeix una nova anàlisi. Selecciona la manera Intersect second layer. Intersect with a second layer and calculate aggregations on the fly.
En el menú desplegat, selecciona la capa dels contorns com Aggregate intersection i la dels allotjaments com Intersect Layer.
A Operation, l’opció COUNT ha d’estar seleccionada.
Fes clic a Done. Això generarà una nova columna anomenada count_values a la base de dades.
5) Entra al mode taula amb el commutador de la cantonada inferior dreta del mapa i canvia el nom de la columna count_values per alojamientos_airbnb.
6) Ara ja podem produir un primer mapa de coropletes que acoloreixi els districtes en funció del nombre d’allotjaments d’Airbnb. Per fer-ho, anem a la capa de contorns i, a la pestanya Style, editem l’estil Color i assignem la columna que conté el conjunt d’allotjaments, alojamientos_airbnb, com a valor a l’opció By value.
Proporció d’allotjaments d’Airbnb per districte
Per fer aquest pas necessitem unir informació que es troba a fitxers diferents. En concret, necessitem fer la següent equació per a cada districte:
alojamientos de airbnb del distrito / viviendas totales del distrito
Per poder relacionar fàcilment aquests dos valors per a cada districte, hem d’incloure els totals d’habitatge en el dataset dels contorns. Una opció és fer-ho manualment, ja que són pocs valors. Tanmateix, també recollim l’opció semiautomàtica per a casos en què hi hagi una gran quantitat de dades. Ho farem amb una consulta SQL a Carto.com.
1) Creem un nou dataset amb el llistat d’habitatges totals per districte. Anotem el nom del dataset i canviem el nom de la columna que conté els districtes a districte, i de la columna que conté el nombre total d’habitatges a total.
2) Creem dues noves columnes en el dataset de contorns: total_viviendas i percent_turisticas. Per a ambdues columnes, seleccionem number com a tipus de dada.
3) Ens hem d’assegurar que el nom dels districtes està escrit exactament igual en ambdós datasets: els mateixos caràcters accentuats, els mateixos espais, les mateixes majúscules, etc.
4) Tornem al mapa i entrem a la capa de contorns. A la pestanya Data, a baix, canviem a la consola SQL amb el commutador situat a la part inferior de la barra lateral esquerra.
5) Escrivim la següent consulta SQL:
UPDATE nombre_dataset_contornos SET total_viviendas = nombre_dataset_viviendas_distrito.total FROM nombre_dataset_viviendas_distrito WHERE nombre_dataset_contornos.name = nombre_dataset_viviendas_distrito.distrito
que, traduït al llenguatge comú, significa: actualitza (UPDATE) el dataset de contorns i posa (SET) el nombre d’habitatges per districte de la taula d’habitatges per districte (el nom de la columna és total) (FROM) a les files on coincideixi la columna de districte del dataset de contorns amb la columna de districte del dataset de total d’habitatges (WHERE). Per això és important que siguem consistents a l’hora d’escriure els noms dels districtes.
D’aquesta manera tindrem les dades d’habitatges per districte a la taula de contorns de districtes.
Ara només ens queda calcular la ràtio d’allotjaments d’Airbnb per cada 100 habitatges. Podem fer-ho amb una altra consulta SQL:
UPDATE nombre_dataset_contornos SET percent_turisticas = airbnb_aptms * 100 / total_viviendas
Per arrodonir els decimals i evitar resultats com ara 8,21439204893, fem una altra consulta i la restringim a dos decimals:
UPDATE nombre_dataset_contornos SET percent_turisticas = round( CAST(percent_turisticas as numeric), 2 )
Visualitzacions
1) Mapa de coropletes. Ara només ens falta fer el mapa de coropletes utilitzant la variable percent_turisticas, tal com hem descrit a l’apartat anterior. És fàcil.
Per fer el mapa públic només falta prémer el botó Publish i, a continuació, copiar el codi per incrustar el mapa a qualsevol lloc web.
2) Gràfic de barres. Podem baixar les dades que hem calculat a Carto.com i utilitzar-les amb qualsevol programa de fulls de càlcul per generar un gràfic de barres.
Per baixar les dades, ves al mode Data view (taula) de la capa de contorns. En el menú Edit > Export Layer es pot baixar la capa en format CSV.
Exemple
Aquí tens un exemple d’un gràfic de barres doble amb la ràtio d’allotjaments d’Airbnb per cada 100 habitatges i la quantitat d’allotjaments per barris de diferents ciutats. Està desenvolupat amb la llibreria de JavaScript D3js en el projecte Efecto Airbnb de Montera34. El codi font està disponible.
e. Com presento la informació per fer un relat intel·ligible?
Quan tinguem les dades de les ràtios per districte ja podrem comparar uns valors amb d’altres. Amb la representació en el mapa de coropletes podem comparar la distribució espacial (és més difícil apreciar la diferència de valors associats a colors), mentre que en el gràfic de barres podem comparar la presència d’Airbnb a cada barri. També podem publicar una taula amb els districtes on hi ha més presència d’Airbnb.
Per completar el reportatge també pots analitzar el tipus d’allotjament que s’ofereix a cadascun dels districtes (private_room o entire_home, dins de la variable room_type) o el total de places (variable capacity).
El procés per calcular la ràtio d’allotjaments d’Airbnb per cada 100 habitatges és anàleg. Busca els contorns i les dades de cada districte i repeteix el procés.