Récupération des données

Links: notebook, html ., PDF, python, slides ., presentation ., GitHub

Ce notebook donne quelques exemples de codes qui permettent de récupérer les données utilisées par d’autres notebooks. Le module actuariat_python est implémenté avec Python 3. Pour les utilisateurs de Python 2.7, il suffira de recopier le code chaque fonction dans le notebook (suivre les liens insérés dans le notebook).

%pylab inline
import matplotlib.pyplot as plt
plt.style.use('ggplot')
# le code qui suit n'est pas indispensable, il génère automatiquement un menu
# dans le notebook
from jyquickhelper import add_notebook_menu
add_notebook_menu()
Populating the interactive namespace from numpy and matplotlib
run previous cell, wait for 2 seconds

Population française janvier 2015

Les données sont disponibles sur le site de l’INSEE Pyramide des âges au 1er janvier 2016. Elles sont disponibles au format Excel avec le lien suivant : https://www.insee.fr/fr/statistiques/fichier/1892086/pop-1janvier-fe.xls. Le format n’est pas le plus simple car la première feuille inclut deux tables.

url = "https://www.insee.fr/fr/statistiques/fichier/1892086/pop-1janvier-fe.xls"
import pandas
df=pandas.read_excel(url, sheetname=0)
df.head(n=3)
Population totale par sexe et âge au 1er janvier 2016, France Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4
0 NaN NaN NaN NaN NaN
1 NaN Hommes Femmes Ensemble NaN
2 Population totale 32291287 34336315 66627602 NaN
df.tail(n=3)
Population totale par sexe et âge au 1er janvier 2016, France Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4
109 NaN NaN NaN NaN NaN
110 Champ : France y compris Mayotte. NaN NaN NaN NaN
111 Source : Insee, estimations de population (rés... NaN NaN NaN NaN

La récupération de ces données est implémentée dans la fonction population_france_2015 :

from actuariat_python.data import population_france_2015
df = population_france_2015()
df.head(n=3)
naissance age hommes femmes ensemble
0 2015 0 391371 374179 765550
1 2014 1 403204 385442 788646
2 2013 2 405502 386831 792333
df.tail(n=3)
naissance age hommes femmes ensemble
98 1917 98 2013 9475 11488
99 1916 99 1324 6313 7637
100 1915 100 3505 17888 21393

D’après cette table, il y a plus de personnes âgées de 110 ans que de 109 ans. C’est dû au fait que la dernière ligne aggrège toutes les personnes âgées de plus de 110 ans.

Table de mortalité 2000-2002 (France)

On utilise quelques raccourcis afin d’éviter d’y passer trop de temps. Les données sont fournis au format Excel à l’adresse : http://www.institutdesactuaires.com/gene/main.php?base=314. La fonction table_mortalite_france_00_02 permet de les récupérer.

from actuariat_python.data import table_mortalite_france_00_02
df=table_mortalite_france_00_02()
df.head()
Age Homme Femme
0 0.0 100000.0 100000.0
1 1.0 99511.0 99616.0
2 2.0 99473.0 99583.0
3 3.0 99446.0 99562.0
4 4.0 99424.0 99545.0
df.plot(x="Age",y=["Homme", "Femme"],xlim=[0,100])
<matplotlib.axes._subplots.AxesSubplot at 0x2f0edd14208>

Taux de fécondité (France)

On procède de même pour cette table avec la fonction fecondite_france. Source : INSEE : Fécondité selon l’âge détaillé de la mère.

from actuariat_python.data import fecondite_france
df=fecondite_france()
df.head()
age 2005 2015
3 15.0 0.1 0.0
4 16.0 0.2 0.2
5 17.0 0.5 0.5
6 18.0 1.0 1.1
7 19.0 2.0 2.1
df.plot(x="age", y=["2005","2015"])
<matplotlib.axes._subplots.AxesSubplot at 0x2f0edd85e48>

Table de mortalité étendue 1960-2010

table de mortalité de 1960 à 2010 qu’on récupère à l’aide de la fonction table_mortalite_euro_stat.

from actuariat_python.data import table_mortalite_euro_stat
table_mortalite_euro_stat()
'mortalite.txt'
import os
os.stat("mortalite.txt")
os.stat_result(st_mode=33206, st_ino=9007199255282328, st_dev=311511962, st_nlink=1, st_uid=0, st_gid=0, st_size=105741052, st_atime=1480548419, st_mtime=1480548432, st_ctime=1480548419)
import pandas
df = pandas.read_csv("mortalite.txt", sep="\t", encoding="utf8", low_memory=False)
df.head()
annee valeur age age_num indicateur genre pays
0 2012 0.00000 Y01 1.0 DEATHRATE F AD
1 2014 0.00042 Y01 1.0 DEATHRATE F AL
2 2009 0.00080 Y01 1.0 DEATHRATE F AM
3 2008 0.00067 Y01 1.0 DEATHRATE F AM
4 2007 0.00052 Y01 1.0 DEATHRATE F AM
df [ ((df.age=="Y60") | (df.age=="Y61")) & (df.annee == 2000) & (df.pays=="FR") & (df.genre=="F")]
annee valeur age age_num indicateur genre pays
87406 2000 5.020000e-03 Y60 60.0 DEATHRATE F FR
88955 2000 4.860000e-03 Y61 61.0 DEATHRATE F FR
485730 2000 2.580000e+01 Y60 60.0 LIFEXP F FR
487268 2000 2.490000e+01 Y61 61.0 LIFEXP F FR
882568 2000 5.010000e-03 Y60 60.0 PROBDEATH F FR
884117 2000 4.850000e-03 Y61 61.0 PROBDEATH F FR
1281364 2000 9.949900e-01 Y60 60.0 PROBSURV F FR
1282913 2000 9.951500e-01 Y61 61.0 PROBSURV F FR
1679610 2000 9.307600e+04 Y60 60.0 PYLIVED F FR
1681148 2000 9.261800e+04 Y61 61.0 PYLIVED F FR
2075898 2000 9.331000e+04 Y60 60.0 SURVIVORS F FR
2077436 2000 9.284300e+04 Y61 61.0 SURVIVORS F FR
2472219 2000 2.405594e+06 Y60 60.0 TOTPYLIVED F FR
2473757 2000 2.312517e+06 Y61 61.0 TOTPYLIVED F FR