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:

  1. 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 df el 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 df el 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)
  1. 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 enter n retorna una llista de n tuples 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 les n comarques 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 df el 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)]
    
  2. 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 df el 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.203

Nota

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