G2 - Grado di soddisfazione della vita


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
print("cache_dir is '{}'".format(istat.cache_dir()))


cache_dir is '/Users/cesar/Documents/opendata/tmp/od_la_grande_fuga/istat_cached'

In [2]:
# Directory
dir_df = os.path.join(os.path.abspath(''),'stg')

In [3]:
# AREA -> Opinioni dei cittadini e soddisfazione per la vita: 15
istat_area_sodd = istat.area(15)

In [4]:
istat_area_sodd.datasets()


Out[4]:
codnamedim
DCCV_AVQ_FAMIGLIEAspetti della vita quotidiana - Famiglie5
DCCV_AVQ_PERSONEAspetti della vita quotidiana8
DCCV_AVQ_PERSONE1Aspetti della vita quotidiana - Persone8

In [5]:
# DATASET -> Soddisfazione per la vita
istat_dataset_soddisfazione = istat_area_sodd.dataset('DCCV_AVQ_PERSONE')
istat_dataset_soddisfazione


Out[5]:
DCCV_AVQ_PERSONE(8):Aspetti della vita quotidiana
nrnamenr. valuesvalues (first 3 values)
0Territorio361:'Italia', 3:'Nord', 4:'Nord-ovest' ...
1Tipo dato7822:'persone di 18 anni e più che si sono recate all'anagrafe', 14:'persone di 18 anni e più che si sono recate alla ASL', 26:'persone di 18 anni e più che si sono recate all'ufficio postale' ...
2Misura51:'valori in migliaia', 2:'per 100 persone con le stesse caratteristiche', 3:'numero medio' ...
3Sesso31:'maschi', 2:'femmine', 3:'totale' ...
4Classe di età4411:'6 anni e più', 13:'6-14 anni', 26:'15 anni e più' ...
5Titolo di studio53:'licenza di scuola elementare, nessun titolo di studio', 4:'licenza di scuola media', 7:'diploma' ...
6Condizione e posizione nella professione131:'occupato', 2:'dirigenti, imprenditori, liberi professionisti', 3:'direttivo, quadro, impiegato' ...
7Tempo e frequenza161920:'2001', 1939:'2002', 1958:'2003' ...

In [6]:
# istat_dataset_soddisfazione.dimensions()

In [7]:
spec = {
    #"Territorio":1,                 
    "Tipo dato":1079,
    "Misura":3, 
    "Sesso":3,
    "Classe di età":259,
    "Titolo di studio":12,
    "Condizione e posizione nella professione":12,
    "Tempo e frequenza":2186
}

collection = istat_dataset_soddisfazione.getvalues(spec)

In [8]:
ds = collection.dataset(0)
ds


Out[8]:
name: 'IDITTER107'label: 'Aspetti della vita quotidiana per Territorio - media - numero medio - 14 anni e più - 2015'size: 36
posidlabelsizerole
0IDITTER107Territorio36

In [9]:
df = ds.to_data_frame('Territorio')
df.reset_index(level=0, inplace=True)

In [10]:
df=df[(df['Territorio']=='Italia') |
        (df['Territorio']=='Nord') |
        (df['Territorio']=='Sud')]

In [11]:
df.head()


Out[11]:
Territorio Value
0 Italia 6.8
1 Nord 6.9
20 Sud 6.5

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

Calcolo Dataset: Soddisfazione Vita | Reddito | Popolazione


In [13]:
df_g1_filename = r'df_g1.pkl'
df_g1_fullpath = os.path.join(dir_df, df_g1_filename)
df_g1 = pd.read_pickle(df_g1_fullpath)

In [14]:
result = pd.merge(df_g1, df, on='Territorio')

In [17]:
result.drop(['Speranza di vita alla nascita'], axis=1, inplace=True)
result.rename(columns={'Value': 'Gradio di soddisfazione per la vita'}, inplace=True)

In [18]:
result


Out[18]:
Territorio Popolazione residente Reddito pro capite Gradio di soddisfazione per la vita
0 Italia 60795612 27044.75 6.8
1 Nord 27799803 32964.21 6.9
2 Sud 14149806 17867.38 6.5

In [19]:
result_filename = r'df_g2.pkl'
result_fullpath = os.path.join(dir_df, result_filename)
result.to_pickle(result_fullpath)