Pobresa i risc d’exclusió¶
Dins del catàleg de dades obertes del portal Transparència de
Catalunya, es poden trobar indicadors comarcals de risc de pobresa i
risc d’exclusió entre l’any 2012 i l’any 2018 (vegeu Indicadors de
risc de pobresa i exclusió).
En el fitxer riscpobresa.csv trobareu
dades extretes d’aquest portal. Descarregueu el fitxer i creeu un
DataFrame de pandas amb les
dades. Examineu el nom de les seves columnes. En el portal, trobareu
una explicació del seu significat. Analitzeu els valors d’algunes de
les seves files.
En el mòdul pobresa (fitxer pobresa.py), deseu les
funcions següents:
Dissenyeu la funció
pensions_comarca_any()que, donat DataFrame creat a partir de dades com les de l’exemple, donat un nom de comarca (str) i un any (int) retorna l’import mitjà de les pensions contributives de la població de 65 anys (i més) en aquella comarca i any. Si no hi ha dades per la comarca i any donats, la funció ha de retornar -1. Observem que el nom de la comarca és a la columna de nom'Literal'.Per exemple, essent
dfel dataframe que conté les dades del fitxer d’exemple:>>> from pobresa import pensions_comarca_any >>> pensions_comarca_any(df, 'Anoia', 2012) 949.1 >>> pensions_comarca_any(df, 'Anoia', 2020) -1
2. Dissenyeu la funció mes_atur_molt_llarg() que, donat un
DataFrame com el de l’exemple i un any
(int), retorna una tupla formada pel nom de la comarca que
ha tingut el percentatge més alt d’aturats de molt llarga durada i
aquest percentatge, en l’any donat En cas d’empat, el nom de la
comarca ha de ser la primera en l’ordre del DataFrame. Si no hi ha dades per l’any donat, la funció ha
de retornar ('', 0). Aneu en compte de no confondre les columnes:
"Població en situació d'atur de llarga durada" i "Població en
situació d'atur de molt llarga durada". Ens interessa aquesta
segona: molt llarga durada.
Per exemple, essent
dfel dataframe que conté les dades anteriors:>>> from pobresa import mes_atur_molt_llarg >>> mes_atur_molt_llarg(df, 2012) ('Baix Penedès', 3.4) >>> mes_atur_molt_llarg(df, 2020) ('', 0)
Per saber-ne més sobre la distribució de l’atur per comarques, dissenyeu la funció
ranquing_atur_llarg()que, donat un DataFrame com el de l’exemple i un enternretorna una llista dentuples formades per un nom de comarca i la mitjana aritmètica del percentatge de persones en atur de llarga durada en aquella comarca pels anys dels quals es disposa de dades. La llista ha d’estar ordenada de més atur a menys i ha de correspondre a lesncomarques amb més atur de llarga durada de tot el dataframe. Compte que per aquesta pregunta no ens interessa molt llarga durada sinó simplement llarga durada.Per exemple, essent
dfel dataframe que conté les dades anteriors:>>> from pobresa import ranquing_atur_llarg >>> ranquing_atur_llarg(df, 4) [('Baix Penedès', 6.542857142857144), ('Anoia', 6.028571428571429), ('Bages', 5.385714285714286), ('Berguedà', 5.271428571428572)] >>> ranquing_atur_llarg(df.loc[143:], 5) [('Vallès Occidental', 5.242857142857143), ('Vallès Oriental', 4.971428571428571), ('Osona', 4.957142857142856), ('Maresme', 4.92), ('Montsià', 4.8)]
El coeficient de correlació de Pearson mesura la relació lineal entre dues variables. Dissenyeu la funció
pearson()que donat un DataFrame com el de l’exemple i donats dos noms de variables (noms de columnes) del DataFrame, retorna el coeficient de correlació de Pearson entre les dues variables. Cal excloure del càlcul els valors que manquen (NaN).
Per exemple, essent
dfel dataframe que conté les dades anteriors:>>> round(pearson(df, 'Percentatge de rendes inferiors al 60% de la mediana', 'Desigualtat de renda segons fonts tributàries'), 3) 0.548 >>> round(pearson(df, "Taxa d'escolarització als 17 anys", 'Desigualtat de renda segons fonts tributàries'), 3) 0.203Nota
Per una possible solució podeu investigar el mètode
corr()
Disposeu de més tests al fitxer test-riscpobresa.txt i d’una solució al fitxer pobresa.py