Fent web scraping amb R a la Agencia Tributaria

Els que sigueu seguidors del Perfil de la Ciutat, segur que estareu pensat: “Ostres!!! Una altra vegada el pesat que escriu coses sobre R!”. Doncs teniu raó, un cop més torno a utilitzar R. Per tant si no us interessa R aquest és el moment ideal per deixar de llegir aquest article.

Pels valents que continueu llegint, us informo que he utilitzat R per fer web scraping (suposo que amb el títol que li he posat a l’article ho haureu suposat). Pels que no sapigueu que és “web scraping”: és una tècnica que consisteix bàsicament en transformar dades no estructurades que hi ha als webs, en dades estructurades i preparades per ser tractades i analitzades. Els companys de l'Observatori Econòmic i Social i de la Sostenibilitat de Terrassa (OESS) tenen experiència fent web scraping tal i com ja van deixar constància en el seu magnífic article “Raspant dades útils a Internet: Web scraping i informació local”. Des de finals de 2014 l’OESS elabora l’informe ”Oferta de locals d’activitat econòmica – Índex de preus”, i des de finals de 2016 elabora també l’informe “Oferta d’habitatge – Índex de preus”. Aquests informes utilitzen dades que s’han extret de diferents portals immobiliaris utilitzant web scraping.

El motiu per voler fer web scraping té l’origen en una notícia que va aparèixer el passat 21 de juliol de 2016 a diferents mitjans de comunicació: “Madrid y Barcelona dominan la lista de municipios con mayor renta”, “Madrid y Barcelona tienen los vecinos más ricos según Hacienda, que excluye a País Vasco y Navarra”, “Renta por municipio”, “Los municipios con mayor renta media de España”, “Pozuelo, Matadepera y Boadilla, los municipios con mayor renta de España”. Tots els mitjans de comunicació és van fer ressò d’una nova estadística per part de la Agencia Tributaria on es publicaven dades a nivell municipal: Estadística dels declarants de l’IRPF per municipis (EDM). Aquests mitjans, però, només feien esment a dues dades: la “Renda bruta mitja” i la “Renda disponible mitja” dels municipis. Els motius pels qual únicament s’esmenten aquests dos indicadors són dos: primer, perquè eren indicadors nous (mai abans la Agencia Tributaria havia publicat aquests indicadors a nivell local); i segon, la Agencia Tributaria va situar en una única pàgina web tots els municipis amb aquests dos indicadors, per tant era molt senzill descarregar-se les dades de tots els municipis.

Però en aquesta estadística, la Agencia Tributaria ha publicat moltes més dades a nivell municipal, el problema rau en que cal accedir a una pàgina web diferent per a cada municipi. Dit d’altra manera, per a l’estadística del 2013 caldria accedir a 2.964 pàgines webs diferents (dins de la pàgina web de la Agencia Tributaria) per disposar de totes les dades de cadascun dels municipis de més de 1.000 habitants que hi ha al territori fiscal comú de l’Estat espanyol. Òbviament una persona es pot dedicar a anar municipi a municipi a descarregar-se les dades; o bé pot aconseguir les dades de tots els municipis d’una forma més “òptima”, mitjançant web scraping. 

La Agencia Tributaria, posa a disposició de tothom l’Estadística dels declarants de l’IRPF per municipis dels anys 2013 i 2014 (a l’octubre del 2017 estarà disponible l’estadística del 2015). Per cada any hi ha disponible “l’estadística de l’any” i les “dades estadístiques base”. De forma molt resumida podria dir-se que a “l’estadística de l’any” hi ha dades extretes el model 100 de declaració anual de l’IRPF, i del resum anual 190 de retencions i ingressos a compte per les rendes exemptes de les persones que han fet la declaració de renda. A l’estadística es desglossen els diferents components de la renda personal bruta (treball, capital mobiliari, capital immobiliari, rendes d’activitats econòmiques, altres rendes, guanys patrimonials nets i rendes exemptes), i també es presenten els imports de les principals partides de la declaració de renda agrupades, tant a nivell nacional, de Comunitat Autònoma, província i dels municipis de més de 1.000 habitants. Pel que fa a les “dades estadístiques base” hi ha la informació de l’import i del nombre de declarants de moltes de les partides que hi ha en el model 100 de la declaració anual de la renda, en aquest cas la informació que hi ha disponible és de la dels gairebé 7.600 municipis que hi ha al territori fiscal comú.

Totes aquestes dades dels municipis que hi ha a l’Agencia Tributaria us les podeu descarregar si utilitzeu els scripts que he fet amb R i que trobareu aquí. De ben segur que aquests scripts no són els més elegants ni els més eficients a l’hora de recavar les dades de l’Agencia Tributaria (degut en bona part pel meu desconeixement en el llenguatge HTML), però us puc assegurar que aquests scripts fan la seva feina i permeten descarregar-se les dades dels municipis que hi ha a la Agencia Tributaria.

I que es pot fer amb totes aquestes dades? Es poden elaborar mapes com els que apareixen a continuació.

Deducció mitjana per habitatge habitual

Aportació mitjana a plans de pensió

Ràtio de l'import de declaracions a tornar sobre l'import de declaracions a ingressar

Fixant la vista única i exclusivament als municipis del Perfil de la Ciutat es poden obtenir coses com per exemple el que apareix en els següents tres gràfics de teranyina, on s’han estandarditzat els valors dels indicadors. Així els dos primers gràfics posen en relació en nivell de renda amb el pes de l’origen de la renda; en concret el primer correspon a les rendes que tenen el seu origen en el treball i les activitats econòmiques; i el segon, correspon a les rendes procedents de capital mobiliari i de guanys patrimonials nets. El tercer gràfic posa en relació el nivell de renda amb la destinació de la renda obtinguda cap a plans de pensió.

 
 
 

Aquests són només uns exemples del que pot arribar a donar de si aquesta font d’informació de la Agencia Tributaria. Certament, és un gran avanç respecte a la mínima informació que facilitava anteriorment la Agencia Tributaria a nivell municipal. Val a dir, però, que aquesta informació seria molt més interessant si per cadascuna de les variables, a banda de posar el valor mitjana, es posés també quin tipus de distribució segueix la variable (amb els respectius paràmetres). Disposar del tipus de distribució de cada variable permetria poder simular els valors de cada variable, i això permetria obtenir, per exemple, estimacions d’indicadors de desigualtat (Gini, Thail,...) dels diferents tipus de renda.

Gerard Reverté Calvet

Servei d'Estratègia i Avaluació de l'Ajuntament de Mataró

La teva valoració d'aquest article: 
Mitjana de valoració: 4.7 (13 votes)
Fes clic al següent botó per enviar-ho per WhatsApp

Comentaris

Oportú el recordatori de l’”amabilitat” que té l’Agència Tributària de facilitar en "tancat" dades que correspondrien perfectament a un opendata..

Tens tota la raó Xavier. Em resulta incomprensible perquè tota aquesta informació publicada no està també en un, dos, tres... o els fitxers que facin falta.

L’exercici de web-scraping que fem a Terrassa que cites és diferent i té alguna complexitat més, atès que (com ja es definia en el nostre article) ataca no únicament una base de dades (per tant, ha d’entendre no només sobre una única forma de presentació de la informació), sinó la captació de dades de llocs web variats (amb formats diferents, que atenen a diferents bases de dades, estructurades de forma diferent), posar-los en relació i homogeneïtzar les entrades per obtenir una base de dades unificada, validant la vigència de la informació i descartant les repeticions. Es tracta, a més, en el nostre cas, de fonts privades que no es podrien extraure d’altra manera, que poden ser repetides i que són més susceptibles de canviar l’estructura de presentació, cosa que esdevé amb més freqüència del desitjat i que altera les fórmules de captació i, per tant, les dificulta.

Xavier, estic segur que el vostre és un treball més complex, no ho dubto. Però per mi era un exercici complicat, ja que per primer cop feia web scraping, i ho feia amb R (fet que ho complica més ja que és convenient tenir coneixement d'HTML, i jo no en tinc); i perquè he provat per primer cop el funcionament de Carto (per elaborar els mapes), i he fet gràfics interactius utilitzant Javascript (llenguatge del qual no sé ni un borrall). Sigui com sigui, estic d'acord que el treball de web scraping que feu a Terrassa amb els preus dels locals i habitatges, és molt més difícil que el treball que he fet jo amb les dades de la Agencia Tributaria.

Felicitats per aquest article Gerard! Nosaltres també tenim el repte d'intentar extreure determinades dades municipals disponibles en diferents portals d'Internet que, si no fos a través del web scraping, seria impossible (o molt difícil aconseguir). Felicitats també per les meravelloses visualitzacions que has aconseguit amb els nous widgets del Carto i amb la llibreria de JavaScript (jo tampoc hi entenc ni una coma). Que sàpigues que ja tinc aquest article guardat com a referència i com a exemple quan calgui defensar el web scraping per aconseguir dades estadístiques dins la meva institució.

Gràcies Albert. la veritat és quan busques informació per fer web scraping veus que hi ha molta gent que ha fet o que està fent coses, com per exemple https://thescreenshotguy.wordpress.com/ on fa scraping per saber preus de lloguer d'habitatges (com fan a Terrassa), o https://longhowlam.wordpress.com/2017/03/17/because-its-friday-the-ikea-billy-index/ on càlcula un index de vendes de la llibreria Billy de Ikea a Holanda, a partir del que apareix a la web de Ikea que queda d'estoc d'aquesta llibreria (si teniu temps llegiu-ho, em sembla una idea genial!!, un altre tema és que sigui útil). Pel que fa a la visualització, la veritat és que crec que vas dir-ho tu que Carto havia canviat, i que era una mica més complicat d'utilitzar-lo. Puc donar fer que costa fe que és més complicat que abans utilitzar Carto (i és reconable tenir coneixements de SQL). És veritat que tenen uns ginys molt interessants; en tenen un que és Observatorio, i el que fa és carregar dades de l'INE (aquest crec que és de pagament). Pel que fa a JavaScript, no en tinc ni idea, els gràfics de teranyina estan fets copiant i pegant codi, i canviant etiquetes i valors, però això ha implicat temps, bastant de temps. Si que tinc clar que si es volen fer gràfics interactius xulos cal aprendre una mica de Javascript. El següent repte és intentar utilitzar la llibreria d3.js

Moltes felicitats per l'article Gerard, gran treball!

Moltes gràcies Roger. Ja has provat els scripts?

Molt bon treball, Gerard !

Moltes gràcies Carlos! Ara només falta que es faci ús d'aquestes dades.

Volem saber que en penses...