G6 - Tassi di Povertà


In [1]:
# Import librerie per analisi dati (Pandas) e dati Istat
import os
import pandas as pd
import numpy as np
from IPython.core.display import HTML
import istat
import jsonstat

# cache dir per velocizzare analisi in locale
cache_dir = os.path.abspath(os.path.join("..", "tmp/od_la_grande_fuga", "istat_cached"))
istat.cache_dir(cache_dir)
istat.lang(0)  # lingua italiano

dir_df = os.path.join(os.path.abspath(''),'stg')

In [2]:
istat_area_condizioni = istat.area(9)
#istat_area_condizioni.datasets()

In [3]:
# Povertà Assoluta
ds_poverta_assoluta = istat_area_condizioni.dataset('DCCV_POVERTA')

In [4]:
ds_poverta_assoluta


Out[4]:
DCCV_POVERTA(11):Povertà nuove serie
nrnamenr. valuesvalues (first 3 values)
0Territorio421:'Italia', 3:'Nord', 4:'Nord-ovest' ...
1Tipo dato1624:'soglia di povertà relativa (spesa mensile) - euro', 5:'famiglie in povertà assoluta (val. perc.)', 6:'famiglie in povertà relativa (val. perc.)' ...
2Linee di povertà91:'sicuramente non povere: sopra linea al 120% della ISPL', 2:'quasi povere: tra ISPL e linea al 120% della ISPL', 3:'quasi povere tra linea al 110% e linea al 120% della ISPL' ...
3Ampiezza familiare91:'1', 2:'2', 3:'3' ...
4Tipologia familiare331:'totale famiglie', 6:'persona sola 35-64 anni', 8:'persona sola 65 anni o più' ...
5Età della persona di riferimento766:'35-44 anni', 80:'45-54 anni', 95:'55-64 anni' ...
6Titolo di studio più elevato conseguito dalla persona di riferimento43:'licenza di scuola elementare, nessun titolo di studio', 4:'licenza di scuola media', 8:'diploma e oltre' ...
7Condizione professionale della persona di riferimento131:'occupato', 2:'indipendente', 3:'imprenditore e libero professionista' ...
8Sesso31:'maschi', 2:'femmine', 3:'totale' ...
9Età533:'fino a 17 anni', 107:'65 anni e più', 182:'totale' ...
10Tempo e frequenza201844:'1997', 1863:'1998', 1882:'1999' ...

In [6]:
# NORD
spec_n = {
"Territorio":3,
"Tipo dato":15
}

spec_s = {
"Territorio":89,
"Tipo dato":15
}

In [7]:
def df_pov(ds, spec, nome):
    c = ds.getvalues(spec)
    ds = c.dataset(0)
    df = ds.to_data_frame('Tempo e frequenza')
    df.reset_index(level=0, inplace=True)
    df = df[['Tempo e frequenza', 'Value']]
    df.columns = ['Anno',nome]
    return df

In [9]:
# incidenza di povertà assoluta individuale (per 100 individui con le stesse caratteristiche)
df_n = df_pov(ds_poverta_assoluta,spec_n, 'Nord')
df_s = df_pov(ds_poverta_assoluta,spec_s, 'Sud')
df_s


---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
<ipython-input-9-3c1a10ad153d> in <module>()
      1 # incidenza di povertà assoluta individuale (per 100 individui con le stesse caratteristiche)
----> 2 df_n = df_pov(ds_poverta_assoluta,spec_n, 'Nord')
      3 df_s = df_pov(ds_poverta_assoluta,spec_s, 'Sud')
      4 df_s

<ipython-input-7-12a873644ac7> in df_pov(ds, spec, nome)
      1 def df_pov(ds, spec, nome):
----> 2     c = ds.getvalues(spec)
      3     ds = c.dataset(0)
      4     df = ds.to_data_frame('Tempo e frequenza')
      5     df.reset_index(level=0, inplace=True)

/Users/cesar/anaconda/lib/python3.6/site-packages/istat/istat_dataset.py in getvalues(self, spec, rtype)
    159             spec = ",".join(map(str, dim_values_array))
    160 
--> 161         json_data = self.__istat_helper.datajson(self.__dataset['Cod'], spec, show=False)
    162 
    163         if rtype == jsonstat.JsonStatCollection:

/Users/cesar/anaconda/lib/python3.6/site-packages/istat/istat_helper.py in datajson(self, dataset, dim, show)
    249         filename = "istat-datajson-{}-{}-{}.json".format(dataset, dim, self.__lang2str())
    250         try:
--> 251             json_string = self.__dwl.download(uri, filename)
    252             json_data = json.loads(json_string)
    253             if show:

/Users/cesar/anaconda/lib/python3.6/site-packages/jsonstat/downloader.py in download(self, url, filename, time_to_live)
     55         if time_to_live == 0 or not self.__is_cached(pathname):
     56             response = self.__session.get(url)
---> 57             response.raise_for_status()
     58             html = response.text
     59             self.__write_page_to_cache(pathname, html)

/Users/cesar/anaconda/lib/python3.6/site-packages/requests/models.py in raise_for_status(self)
    842 
    843         if http_error_msg:
--> 844             raise HTTPError(http_error_msg, response=self)
    845 
    846     def close(self):

HTTPError: 500 Server Error: Internal Server Error for url: http://apistat.istat.it/?q=getdatajson&dataset=DCCV_POVERTA&dim=3,15,0,0,0,0,0,0,0,0,0&lang=0

In [ ]:
df = pd.merge(df_n,df_s, how='inner', on=['Anno', 'Anno'])
df

In [ ]:
df_filename = r'df_g6.pkl'
df_fullpath = os.path.join(dir_df, df_filename)
df.to_pickle(df_fullpath)