Importiamo un database relativo a numerosi indicatori che riguardano tutti i Paesi del mondo e zone strategiche, relativamente al periodo tra il 1960 e il 2016.


Cerchiamo di ordinare il database e di organizzarlo in maniera tale che sia chiaro nella sua visualizzazione. Qui sotto ad es. vediamo le prime 10 righe del database, che riguardano il mondo arabo. La dimensione del database è rilevante, per cui andremo a ricercare solo ciò che ci interessa.

In [1]:
import numpy as np, pandas as pd
import matplotlib.pyplot as plt
In [267]:
pd.set_option('display.float_format', lambda x: '%.2f' % x)
df2 = pd.read_csv("D:\\Admin_1\\Download\\DataWorld\\Health\\HNP_StatsData.csv")

df2 = df2.drop('Indicator Code', axis = 1)
df2 = df2.reindex(columns = df2.columns[:-2])

df2 = df2.set_index('Country Name')
df2 = df2.drop('Country Code', axis=1)
df2 = df2.dropna()
df2.head(10)
Out[267]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
Arab World Adolescent fertility rate (births per 1,000 wo... 134.22 134.84 135.57 135.44 135.27 134.95 134.23 133.36 130.87 ... 50.54 50.32 50.10 49.90 49.72 49.54 49.11 48.65 48.11 47.44
Arab World Age dependency ratio (% of working-age populat... 88.21 89.64 90.94 92.06 92.89 93.36 94.24 94.63 94.69 ... 65.28 64.24 63.37 62.69 62.34 62.17 62.12 62.09 62.02 62.06
Arab World Age dependency ratio, old 6.60 6.71 6.81 6.88 6.94 6.97 7.03 7.07 7.09 ... 6.77 6.72 6.69 6.68 6.70 6.73 6.78 6.84 6.93 7.05
Arab World Age dependency ratio, young 81.47 82.78 83.95 84.93 85.64 86.04 86.83 87.20 87.28 ... 56.73 55.65 54.76 54.07 53.70 53.52 53.46 53.40 53.28 53.24
Arab World Birth rate, crude (per 1,000 people) 47.69 47.47 47.25 47.01 46.77 46.50 46.20 45.87 45.51 ... 27.47 27.49 27.54 27.56 27.53 27.41 27.19 26.86 26.43 25.93
Arab World Death rate, crude (per 1,000 people) 19.85 19.38 18.92 18.46 17.99 17.53 17.07 16.63 16.20 ... 5.97 5.90 5.85 5.81 5.77 5.73 5.69 5.64 5.60 5.55
Arab World Female population 00-04 8075488.00 8301776.00 8539098.00 8790936.00 9050881.00 9321613.00 9653417.00 9937527.00 10189392.00 ... 20188285.00 20593603.00 21041436.00 21553856.00 22153189.00 22797412.00 23440154.00 23992014.00 24396245.00 24838168.00
Arab World Female population 05-09 6433024.00 6705488.00 6949622.00 7155586.00 7332680.00 7498172.00 7742071.00 8005468.00 8274426.00 ... 18347718.00 18589503.00 18871106.00 19166579.00 19533076.00 19934561.00 20365061.00 20822332.00 21300406.00 21792616.00
Arab World Female population 10-14 5081009.00 5290554.00 5529461.00 5796963.00 6075198.00 6336142.00 6543357.00 6747068.00 6954845.00 ... 17753144.00 17793201.00 17851444.00 17939598.00 18062052.00 18236105.00 18460152.00 18732154.00 19049977.00 19353650.00
Arab World Female population 15-19 4110025.00 4223706.00 4360598.00 4520075.00 4703402.00 4913719.00 5134717.00 5389122.00 5661353.00 ... 17298520.00 17426859.00 17515558.00 17572221.00 17567890.00 17551725.00 17546553.00 17579345.00 17667922.00 17794278.00

10 rows × 58 columns

La prima cosa che possiamo fare è mirare l'attenzione sul nostro Paese.
Qui sotto vediamo i primi 5 indicatori presenti nel database, relativi all'Italia.

In [268]:
italia = df2.loc['Italy'] 
italia.head()
Out[268]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
Italy Adolescent fertility rate (births per 1,000 wo... 19.19 19.92 20.65 21.59 22.53 23.47 24.41 25.34 26.24 ... 6.91 6.80 6.70 6.59 6.49 6.38 6.32 6.27 6.21 6.16
Italy Age dependency ratio (% of working-age populat... 52.83 53.01 53.03 52.98 53.03 53.23 53.69 54.13 54.60 ... 51.55 51.85 52.21 52.69 53.37 54.13 54.93 55.73 56.47 57.03
Italy Age dependency ratio, old 14.51 14.73 14.93 15.13 15.33 15.56 15.87 16.18 16.52 ... 30.18 30.47 30.82 31.30 31.91 32.63 33.43 34.24 34.99 35.66
Italy Age dependency ratio, young 38.32 38.28 38.10 37.86 37.70 37.67 37.82 37.95 38.08 ... 21.36 21.38 21.39 21.39 21.46 21.49 21.50 21.49 21.48 21.37
Italy Age population, age 0, female, interpolated 430812.00 446586.00 458078.00 465062.00 467806.00 466769.00 461074.00 450973.00 438738.00 ... 279443.00 278375.00 274986.00 269267.00 261926.00 252225.00 241837.00 233059.00 227495.00 226314.00

5 rows × 58 columns

Studiamo l'indicatore relativo all'aspettativa di vita in Italia, e il suo andamento dal 1960 al 2016.
Come possiamo vedere qui sotto, si è passati da un'aspettativa di vita di 69 anni, ad una di 82 anni e 6 mesi.
Un incremento quindi di piu' di 13 anni.

In [269]:
italia[italia['Indicator Name'] == 'Life expectancy at birth, total (years)']
Out[269]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
Italy Life expectancy at birth, total (years) 69.12 69.76 69.15 69.25 70.31 70.17 70.93 70.96 70.78 ... 81.43 81.49 81.64 82.04 82.19 82.24 82.69 83.09 82.54 82.54

1 rows × 58 columns

Confrontiamo la nostra aspettativa di vita con quella nel mondo. Per fare questo prendiamo l'indicatore in questione per tutti i Paesi.
Sotto vediamo i primi 5 Paesi o Zone Strategiche presenti nel database.

In [270]:
world = df2[df2['Indicator Name']=='Life expectancy at birth, total (years)']
print('Sono presenti {} Paesi o Zone strategiche nel database relativamente a questo indicatore.'.format(len(world.index)))
print('Queste le prime 5 Zone strategiche:')
world.head()
Sono presenti 230 Paesi o Zone strategiche nel database relativamente a questo indicatore.
Queste le prime 5 Zone strategiche:
Out[270]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
Arab World Life expectancy at birth, total (years) 46.83 47.41 47.99 48.57 49.16 49.74 50.32 50.88 51.42 ... 69.42 69.65 69.85 70.04 70.22 70.41 70.60 70.79 70.99 71.20
Caribbean small states Life expectancy at birth, total (years) 62.37 62.87 63.33 63.74 64.11 64.44 64.73 65.00 65.25 ... 71.58 71.82 72.04 72.25 72.44 72.62 72.78 72.93 73.06 73.19
Central Europe and the Baltics Life expectancy at birth, total (years) 67.82 68.26 68.01 68.70 69.05 69.28 69.53 69.27 69.54 ... 74.25 74.58 74.93 75.30 75.89 75.99 76.36 76.69 76.59 76.60
Early-demographic dividend Life expectancy at birth, total (years) 45.21 45.88 46.49 47.04 47.64 48.23 48.87 49.44 49.98 ... 66.85 67.22 67.59 67.96 68.31 68.64 68.96 69.25 69.52 69.77
East Asia & Pacific Life expectancy at birth, total (years) 48.46 48.99 49.66 50.64 51.84 53.22 54.75 56.24 57.62 ... 73.76 73.98 74.21 74.38 74.55 74.74 74.92 75.09 75.25 75.40

5 rows × 58 columns

In [199]:
def f(df):
    return df['2016']-df['1960']

Sotto c'è la lista dei Paesi in cui piu' è aumentata l'aspettativa di vita dal 1960 al 2016.
Nelle Maldive è aumentata quasi di 40 anni, un incremento enorme.
Da notare che in questa lista non c'è nessun Paese del mondo Occidentale: la mia personale conclusione (bisogna essere cauti quando si traggono conclusioni relativi a un sistema complesso) è che se è vero che esiste la globalizzazione, allora l'economia globalizzata ha aiutato molto di piu' i Paesi poveri o che prima erano reputati del Terzo Mondo, rispetto ai Paesi occidentali.
Dal punto di vista del fattore "sopravvivenza" questo è certo. Dal punto di vista di altri fattori non è scontato, ma il fattore "sopravvivenza maggiore" non è un fattore qualunque a mio avviso.
Certamente aiuterebbe sapere esattamente la distribuzione spazio-temporale di conflitti bellici per capire se ad es. un incremento importante dell'aspettativa di vita è conseguenza diretta della fine di un conflitto degli anni 50-60' in quella zona geografica oppure il fattore "guerra" non è presente come determinante di un aumento di vita attesa in quella zona.

In [200]:
f(world).sort_values(ascending=False).to_frame(name='Incremento aspettativa di vita dal 1960 al 2016').head(20)
Out[200]:
Incremento aspettativa di vita dal 1960 al 2016
Country Name
Maldives 39.94
Bhutan 35.67
Timor-Leste 35.15
Nepal 35.06
Oman 34.36
Tunisia 33.71
China 32.53
Afghanistan 31.38
Iran, Islamic Rep. 31.01
Yemen, Rep. 30.59
Turkey 30.39
Algeria 29.94
Mali 29.77
Libya 29.33
Gambia, The 29.16
Korea, Rep. 29.02
Senegal 28.92
Saudi Arabia 28.92
East Asia & Pacific (IDA & IBRD countries) 28.88
East Asia & Pacific (excluding high income) 28.77

A conferma della tabella precedente, vediamo qui sotto il decorso dell'aspettativa di vita delle Maldive, Paese dove piu' è aumentata l'aspettativa di vita.

In [296]:
maldive = df2.loc['Maldives']
maldive[maldive['Indicator Name'] == 'Life expectancy at birth, total (years)']
Out[296]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
Maldives Life expectancy at birth, total (years) 37.40 37.99 38.63 39.28 39.96 40.64 41.34 42.05 42.76 ... 75.27 75.65 75.92 76.11 76.26 76.40 76.57 76.78 77.04 77.34

1 rows × 58 columns

I Paesi dove l'aspettativa di vita è aumentata di meno negli ultimi 56 anni invece sono elencati nella lista di sotto:
L'Europa dell'Est è presente in maniera evidente in questa lista.

In [272]:
f(world).sort_values().to_frame(name='Incremento aspettativa di vita dal 1960 al 2016').head(10)
Out[272]:
Incremento aspettativa di vita dal 1960 al 2016
Country Name
Ukraine 3.18
Lithuania 4.47
Latvia 4.74
Bulgaria 5.37
Russian Federation 5.54
Belarus 6.12
Guyana 6.39
Slovak Republic 6.64
Hungary 7.57
Lesotho 7.57

L'aspettativa di vita nel mondo è aumentata di quasi 20 anni dal 1960 al 2016, da 52 anni e 6 mesi a 72 anni.

.

In [174]:
overall = df2.loc['World']
expected_world = overall[overall['Indicator Name']== 'Life expectancy at birth, total (years)']
expected_world
Out[174]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
World Life expectancy at birth, total (years) 52.57 53.08 53.50 54.04 54.72 55.38 56.13 56.84 57.45 ... 69.79 70.08 70.41 70.68 70.97 71.22 71.46 71.69 71.86 72.04

1 rows × 58 columns

Un confronto grafico tra aspettativa del mondo in Italia e nel mondo

In [266]:
serie_world = expected_world.iloc[0,1:]
serie_world.index = pd.to_datetime(serie_world.index)
serie_italia = italia[italia['Indicator Name'] == 'Life expectancy at birth, total (years)'].iloc[0,1:]
serie_italia.index = pd.to_datetime(serie_italia.index)
both = pd.concat([serie_world, serie_italia], axis = 1)
ax = both.plot(figsize=(12,12), grid = True);
ax.set_title('Andamento aspettativa di vita nel mondo dal 1960 al 2016')
ax.set_xlabel('Year', fontsize=14)
ax.set_ylabel('Aspettativa di vita, anni', fontsize=14);

Ma qual è lo Stato del mondo che presenta, nel 2016, l'aspettativa di vita piu' alta? Scopriamolo...

In [284]:
world[world['2016'] == world['2016'].max()]
Out[284]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
Hong Kong SAR, China Life expectancy at birth, total (years) 66.96 67.55 68.11 68.63 69.10 69.54 69.95 70.33 70.69 ... 82.33 82.38 82.78 82.98 83.42 83.48 83.83 83.98 84.28 84.23

1 rows × 58 columns

E' quindi Hong Kong, che presenta un'aspettativa di vita di 84 anni, 8 in piu' rispetto al suo vicino gigante Stato.

In [295]:
China = df2.loc['China']
China[China['Indicator Name'] == 'Life expectancy at birth, total (years)']
Out[295]:
Indicator Name 1960 1961 1962 1963 1964 1965 1966 1967 1968 ... 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Country Name
China Life expectancy at birth, total (years) 43.73 44.05 44.78 45.97 47.59 49.55 51.70 53.85 55.84 ... 74.56 74.81 75.03 75.24 75.42 75.60 75.77 75.93 76.09 76.25

1 rows × 58 columns


In [ ]: