G8 - Lavoro e Disoccupazione


In [5]:
# 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 [6]:
area_lavoro = istat.area('LAB')
area_lavoro.datasets()


Out[6]:
codnamedim
DCCV_COMPL1Indicatori complementari 12
DCCV_DISOCCUPT1 Disoccupati9
DCCV_DISOCCUPTDE1Disoccupati - dati destagionalizzati6
DCCV_DISOCCUPTMENS1Disoccupati - dati mensili7
DCCV_FORZLV1Forze di lavoro7
DCCV_FORZLVDE1Forze di lavoro - dati destagionalizzati6
DCCV_FORZLVMENS1Forze lavoro - dati mensili7
DCCV_INATTIV1 Inattivi10
DCCV_INATTIVDE1Inattivi - dati destagionalizzati6
DCCV_INATTIVMENS1Inattivi - dati mensili7
DCCV_NEET1NEET (giovani non occupati e non in istruzione e formazione)10
DCCV_OCCUPATIMENS1Occupati - dati mensili9
DCCV_OCCUPATIT1Occupati (migliaia)14
DCCV_OCCUPATITDE1Occupati - dati destagionalizzati9
DCCV_ORELAVMEDOccupati per ore settimanali lavorate e numero di ore settimanali lavorate procapite12
DCCV_POPCOND1Popolazione per condizione professionale10
DCCV_TAXATVT1Tasso di attività7
DCCV_TAXATVTDE1Tasso di attività - dati destagionalizzati6
DCCV_TAXATVTMENS1Tasso di attività - dati mensili7
DCCV_TAXDISOCCU1Tasso di disoccupazione8
DCCV_TAXDISOCCUDE1Tasso di disoccupazione - dati destagionalizzati6
DCCV_TAXDISOCCUMENS1Tasso di disoccupazione - dati mensili7
DCCV_TAXINATT1Tasso di inattività7
DCCV_TAXINATTDE1Tasso di inattività - dati destagionalizzati6
DCCV_TAXINATTMENS1Tasso di inattività - dati mensili7
DCCV_TAXOCCU1Tasso di occupazione7
DCCV_TAXOCCUDE1Tasso di occupazione - dati destagionalizzati6
DCCV_TAXOCCUMENS1Tasso di occupazione - dati mensili7
DCIS_RICSTATRicostruzione statistica delle serie regionali di popolazione del periodo 1/1/2002-1/1/20146
DCSC_COSTLAVSTRUT_1Imprese ed enti pubblici con almeno 10 dipendenti6
DCSC_COSTLAVULAOROS_1Indicatori - Imprese con dipendenti5
DCSC_GI_COSImprese con almeno 500 dipendenti6
DCSC_GI_OCCPosizioni lavorative - Imprese con almeno 500 dipendenti6
DCSC_GI_OREOre lavorate - Imprese con almeno 500 dipendenti6
DCSC_GI_RERetribuzioni lorde - Imprese con almeno 500 dipendenti6
DCSC_ORE10_1Ore lavorate - Imprese con almeno 10 dipendenti5
DCSC_OROS_1Posizioni lavorative alle dipendenze5
DCSC_POSTIVAC_1Posti vacanti - Imprese con almeno 10 dipendenti5
DCSC_RETRATECO1Retribuzioni contrattuali per settore economico (Ateco)6
DCSC_RETRCASSCOMPPARetribuzioni contrattuali nella Pubblica amministrazione7
DCSC_RETRCONTR1CRetribuzioni contrattuali per tipo di contratto6
DCSC_RETRCONTR1OOrario contrattuale, ferie e altre riduzioni orarie - dipendenti a tempo pieno6
DCSC_RETRCONTR1TTensione contrattuale6
DCSC_RETRULAOROS_1Retribuzioni lorde - Imprese con dipendenti5

In [7]:
# Indicatori di lavoro - Tasso Disoccupazione
ds_lavoro = area_lavoro.dataset('DCCV_TAXDISOCCU1')
ds_lavoro.dimension('Territorio')


Out[7]:
'Classe di età' (26:'15 anni e più', 29:'15-24 anni', 39:'20-24 anni', 48:'25-34 anni', 66:'35-44 anni', 80:'45-54 anni', 95:'55-64 anni', 190:'15-64 anni', 193:'35 anni e più', 194:'35-54 anni', 196:'55 anni e più', 210:'15-29 anni', 309:'18-29 anni', 314:'15-74 anni')

In [8]:
# NORD
spec_n = {
    "Territorio":3,
    "Sesso":3,
    "Cittadinanza":3,
    "Durata disoccupazione":3,
    "Titolo di studio":12,
    "Classe di età":28
}

#SUD
spec_s = {
    "Territorio":88,
    "Sesso":3,
    "Cittadinanza":3,
    "Durata disoccupazione":3,
    "Titolo di studio":12,
    "Classe di età":28
}

In [9]:
def disoccupati(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.columns = ['Anno',nome]
    df = df[(df['Anno'].str.contains("T")==False)]
    return df

In [10]:
df_s = disoccupati(ds_lavoro, spec_s, 'Sud')
df_n = disoccupati(ds_lavoro, spec_n, 'Nord')


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-154f2c3af5e0> in <module>()
----> 1 df_s = disoccupati(ds_lavoro, spec_s, 'Sud')
      2 df_n = disoccupati(ds_lavoro, spec_n, 'Nord')

<ipython-input-9-61e8934bce2e> in disoccupati(ds, spec, nome)
      1 def disoccupati(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)
    152                 if value != 0 and dim.cod2desc(value) is None:
    153                     if dim.desc2cod(value) is None:
--> 154                         msg = "unknown value '{}' for dimension '{}'".format(value, dim.name())
    155                         raise IstatException(msg)
    156                     value = dim.desc2cod(value)

TypeError: 'str' object is not callable

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

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