{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Dans ce billet, je calcule la moyenne d'âge des députés français (c'est-à-dire les élus qui représentent les français à l'assemblée nationale, à ne pas confondre avec les sénateurs). Je me sers pour cela d'un document disponible sur le site de l'assemblée nationale, en PDF. J'en extrais les textes puis les traite afin de tracer un histogramme à l'aide du package d'analyse de données pour Python `pandas`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pourquoi calculer l'âge moyen des députés ? Bonne question : l'idée m'est venue suite à la lecture de ce tweet." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

La moyennz d'âge des députés et sénateurs français est de 65 ans ! STOP ! Place à la jeunesse !

— Geof'☭ (@DebailleuxG) January 2, 2016
\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comment savoir si ce qui est affirmé ici est vrai ou pas ? Je me concentre ici sur une réponse partielle : calculer l'âge moyen des députés et plus exactement leur distribution.\n", "\n", "Ca tombe bien, car l'assemblée nationale met à disposition une liste alphabétique en PDF [ici](http://www2.assemblee-nationale.fr/static/tribun/trombinoscope/trombinoscope_alpha.pdf). Nous allons nous en servir pour calculer la distribution des âges. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Conversion du PDF en texte " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il s'agit tout d'abord de convertir le fichier PDF en fichier texte brut. Je me sers ici de `pdftotext`, un utilitaire que l'on peut utiliser en ligne de commande." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "pdftotext version 3.04\n", "Copyright 1996-2014 Glyph & Cog, LLC\n", "Usage: pdftotext [options] []\n", " -f : first page to convert\n", " -l : last page to convert\n", " -layout : maintain original physical layout\n", " -table : similar to -layout, but optimized for tables\n", " -lineprinter : use strict fixed-pitch/height layout\n", " -raw : keep strings in content stream order\n", " -fixed : assume fixed-pitch (or tabular) text\n", " -linespacing : fixed line spacing for LinePrinter mode\n", " -clip : separate clipped text\n", " -enc : output text encoding name\n", " -eol : output end-of-line convention (unix, dos, or mac)\n", " -nopgbrk : don't insert page breaks between pages\n", " -opw : owner password (for encrypted files)\n", " -upw : user password (for encrypted files)\n", " -q : don't print any messages or errors\n", " -cfg : configuration file to use in place of .xpdfrc\n", " -v : print copyright and version info\n", " -h : print usage information\n", " -help : print usage information\n", " --help : print usage information\n", " -? : print usage information\n" ] } ], "source": [ "!pdftotext.exe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Après avoir lu l'aide, on peut convertir le fichier PDF en texte à l'aide de la commande suivante." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "!pdftotext.exe trombinoscope_alpha.pdf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lisons maintenant le fichier texte créé pour en extraire les noms des députés et les dates de naissance.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Extraction du texte " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Travail sur fragment " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Après avoir regardé le contenu du fichier texte au bloc note, je me suis rendu compte que les noms et dates de naissance sont dans le désordre. Pas de problème, on va lire ça avec des expressions régulières et on va voir si on arrive à trouver ce qu'on cherche ! On va travailler sur la première page dans un premier temps (on commence petit avant d'étendre la méthode au document entier) :" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "first_page = \"\"\"Ain - Circonscription n° 5\n", "M. Damien Abad\n", "\n", "Val-de-Marne - Circonscription n° 6\n", "Mme Laurence Abeille\n", "\n", "Les Républicains Né le 5 avril 1980 à Nîmes (Gard) Secrétaire d'âge de l'Assemblée nationale\n", "Président du conseil départemental (Ain) Élu à l'Assemblée nationale le 20 juin 2012\n", "Mayotte - Circonscription n° 2\n", "M. Ibrahim Aboubacar\n", "\n", "Écologiste Née le 17 juin 1960 à Neuilly-sur-Seine (Hauts-de-Seine)\n", "Cadre du secteur privé Élue à l'Assemblée nationale le 20 juin 2012\n", "Hérault - Circonscription n° 6\n", "M. Élie Aboud\n", "\n", "Socialiste, républicain et citoyen Né le 1erfévrier 1965 à Fomboni (Comores)\n", "Ingénieur des travaux publics Élu à l'Assemblée nationale le 20 juin 2012\n", "Haute-Savoie - Circonscription n° 1\n", "M. Bernard Accoyer\n", "\n", "Les Républicains Né le 12 octobre 1959 à Beyrouth (Liban)\n", "Médecin cardiologue (Chef de service) Adjoint au Maire de Béziers Élu à l'Assemblée nationale le 20 juin 2007 Réélu le 16 décembre 2012\n", "Finistère - Circonscription n° 2\n", "Mme Patricia Adam\n", "\n", "Les Républicains Né le 12 août 1945 à Lyon (Rhône)\n", "\n", "Socialiste, républicain et citoyen Née le 15 avril 1953 à Saint-Cloud (Hauts-de-Seine)\n", "\n", "Médecin ORL\n", "Maire d'Annecy-le-Vieux\n", "Élu à l'Assemblée nationale le 28 mars 1993 Réélu les 1erjuin 1997, 16 juin 2002, 20 juin 2007 et 20 juin 2012\n", "\n", "Cadre d'action sociale Élue à l'Assemblée nationale le 16 juin 2002 Réélue les 20 juin 2007 et 20 juin 2012\n", "\n", "15\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Construisons d'abord une expression régulière pour les prénoms :" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import re" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "p = re.compile(\"^(?:M\\.|Mme) ((?:[\\w\\-]+.?)+)\", re.MULTILINE)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['Damien Abad',\n", " 'Laurence Abeille',\n", " 'Ibrahim Aboubacar',\n", " 'Élie Aboud',\n", " 'Bernard Accoyer',\n", " 'Patricia Adam']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.findall(first_page)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut maintenant passer aux dates de naissance :" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "p2 = re.compile('Née? le (\\d+(?: |er)\\w+ \\d+)', re.MULTILINE)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['5 avril 1980',\n", " '17 juin 1960',\n", " '1erfévrier 1965',\n", " '12 octobre 1959',\n", " '12 août 1945',\n", " '15 avril 1953']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p2.findall(first_page)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "L'expression régulière trouvée est un peu compliquée à cause de la présence de dates écrites sous la forme `1erfévrier`. On pourra aussi noter l'utilisation de groupes [non-capturants](http://stackoverflow.com/questions/3512471/what-is-a-non-capturing-group), qui permettent de matcher des parties d'expression mais de ne pas les conserver dans la sortie finale. Ceux-ci s'écrivent `(?:...)` au lieu de `(...)` pour les groupes normaux." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Extraction du texte complet " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Maintenant que la première page donne des résultats valides, passons au texte complet." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "text = open('trombinoscope_alpha.txt').read()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['Damien Abad',\n", " 'Laurence Abeille',\n", " 'Ibrahim Aboubacar',\n", " 'Élie Aboud',\n", " 'Bernard Accoyer',\n", " 'Patricia Adam',\n", " 'Sylviane Alaux',\n", " 'Éric Alauzet',\n", " 'Yves Albarello',\n", " 'Brigitte Allain',\n", " 'Jean-Pierre Allossery',\n", " 'Nicole Ameline',\n", " 'Pouria Amirshahi',\n", " 'François André',\n", " 'Sylvie Andrieux',\n", " 'Benoist Apparu',\n", " 'Nathalie Appéré',\n", " 'Kader Arif',\n", " 'Laurence Arribagé',\n", " 'François Asensi',\n", " 'Christian Assaf',\n", " 'Isabelle Attard',\n", " 'Julien Aubert',\n", " 'Olivier Audibert Troin',\n", " 'Danielle Auroi',\n", " 'Pierre Aylagas',\n", " 'Jean-Marc Ayrault',\n", " 'Bruno Nestor Azerot',\n", " 'Alexis Bachelay',\n", " 'Guillaume Bachelay',\n", " 'Jean-Paul Bacquet',\n", " 'Dominique Baert',\n", " 'Guy Bailliart',\n", " 'Patrick Balkany',\n", " 'Gérard Bapt',\n", " 'Frédéric Barbier',\n", " 'Jean-Pierre Barbier',\n", " 'Serge Bardy',\n", " 'Ericka Bareigts',\n", " 'Claude Bartolone',\n", " 'Christian Bataille',\n", " 'Delphine Batho',\n", " 'Marie-Noëlle Battistel',\n", " 'Laurent Baumel',\n", " 'Philippe Baumel',\n", " 'Denis Baupin',\n", " 'Nicolas Bays',\n", " 'Catherine Beaubatie',\n", " 'Marie-Françoise Bechtel',\n", " 'Jean-Marie Beffara']" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "names = p.findall(text)\n", "names[:50]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On voit que l'expression régulière fonctionne plutôt bien. Comptons le nombre de députés identifiés." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "577" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On a le compte pour les noms ! Passons aux dates de naissance." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['5 avril 1980',\n", " '17 juin 1960',\n", " '1erfévrier 1965',\n", " '12 octobre 1959',\n", " '12 août 1945',\n", " '15 avril 1953',\n", " '1erjuillet 1945',\n", " '7 juin 1958',\n", " '17 mars 1952',\n", " '23 avril 1956',\n", " '31 juillet 1945',\n", " '4 juillet 1952',\n", " '27 mars 1972',\n", " '19 juillet 1967',\n", " '15 décembre 1961',\n", " '24 novembre 1969',\n", " '8 juillet 1975',\n", " '3 juillet 1959',\n", " '25 mai 1970',\n", " '1erjuin 1945',\n", " '1erseptembre 1972',\n", " '14 novembre 1969',\n", " '11 juin 1978',\n", " '16 août 1960',\n", " '29 février 1944',\n", " '24 juillet 1942',\n", " '25 janvier 1950',\n", " '22 juillet 1961',\n", " '19 août 1973',\n", " '13 juillet 1974',\n", " '11 mars 1949',\n", " '24 octobre 1959',\n", " '24 septembre 1946',\n", " '16 août 1948',\n", " '4 février 1946',\n", " '30 août 1960',\n", " '11 novembre 1960',\n", " '6 novembre 1947',\n", " '16 avril 1967',\n", " '29 juillet 1951',\n", " '13 mai 1946',\n", " '23 mars 1973',\n", " '20 août 1956',\n", " '13 août 1965',\n", " '14 novembre 1961',\n", " '2 juin 1962',\n", " '1ermai 1977',\n", " '10 février 1964',\n", " '19 mars 1946',\n", " '13 octobre 1962']" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "birthdates = p2.findall(text)\n", "birthdates[:50]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "577" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(birthdates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On a aussi le compte pour les dates de naissance ! On peut mettre tout ça dans une dataframe Pandas." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Analyse des données à l'aide de Pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Avant de pouvoir utiliser pandas pour faire des calculs de type Excel, il nous faut encore convertir les dates de naissance, qui sont du texte, vers des objets de type date. \n", "\n", "On va utiliser [`pd.Timestamp`](http://pandas.pydata.org/pandas-docs/stable/10min.html?highlight=timestamp) pour stocker les dates au bon format. On peut donner à l'objet Timestamp des chaînes de caractère en entrée, chose que nous allons faire." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "plt.style.use('ggplot')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Timestamp('2012-05-01 00:00:00')" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Timestamp('2012/5/1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous pouvons écire la fonction ci-dessous :" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def convert2date(date_str):\n", " d = {'janvier': 1, 'février': 2, 'mars': 3, 'avril': 4,\n", " 'mai': 5, 'juin': 6, 'juillet': 7, 'août': 8, \n", " 'septembre': 9, 'octobre': 10, 'novembre': 11, 'décembre':12}\n", " splits = date_str.split(' ')\n", " if len(splits) != 3:\n", " start = splits.pop(0)\n", " if start.startswith('1er'):\n", " splits.insert(0, start[3:])\n", " splits.insert(0, '1')\n", " \n", " \n", " return pd.Timestamp(splits[2] + '/' + str(d[splits[1]]) + '/' + splits[0])\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Testons notre fonction sur notre collection de dates de naissance. Nous sélectionnons ici seulement les dates qui commencent par le 3 du mois." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['3 juillet 1959',\n", " '3 septembre 1963',\n", " '3 janvier 1966',\n", " '3 janvier 1973',\n", " '3 février 1948',\n", " '3 janvier 1940',\n", " '3 mars 1951',\n", " '3 août 1941',\n", " '3 janvier 1958',\n", " '3 février 1967',\n", " '3 août 1956',\n", " '3 décembre 1950',\n", " '3 août 1953',\n", " '3 mars 1940',\n", " '3 mai 1955',\n", " '3 mars 1949',\n", " '3 mai 1951',\n", " '3 août 1945',\n", " '3 août 1951',\n", " '3 janvier 1974',\n", " '3 janvier 1948',\n", " '3 janvier 1947',\n", " '3 février 1958']" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[b for b in birthdates if b.startswith('3 ')]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous vérifions ci-dessous que les résultats sont pertinents :" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[Timestamp('1959-07-03 00:00:00'),\n", " Timestamp('1963-09-03 00:00:00'),\n", " Timestamp('1966-01-03 00:00:00'),\n", " Timestamp('1973-01-03 00:00:00'),\n", " Timestamp('1948-02-03 00:00:00'),\n", " Timestamp('1940-01-03 00:00:00'),\n", " Timestamp('1951-03-03 00:00:00'),\n", " Timestamp('1941-08-03 00:00:00'),\n", " Timestamp('1958-01-03 00:00:00'),\n", " Timestamp('1967-02-03 00:00:00'),\n", " Timestamp('1956-08-03 00:00:00'),\n", " Timestamp('1950-12-03 00:00:00'),\n", " Timestamp('1953-08-03 00:00:00'),\n", " Timestamp('1940-03-03 00:00:00'),\n", " Timestamp('1955-05-03 00:00:00'),\n", " Timestamp('1949-03-03 00:00:00'),\n", " Timestamp('1951-05-03 00:00:00'),\n", " Timestamp('1945-08-03 00:00:00'),\n", " Timestamp('1951-08-03 00:00:00'),\n", " Timestamp('1974-01-03 00:00:00'),\n", " Timestamp('1948-01-03 00:00:00'),\n", " Timestamp('1947-01-03 00:00:00'),\n", " Timestamp('1958-02-03 00:00:00')]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[convert2date(b) for b in birthdates if b.startswith('3 ')]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nous pouvons maintenant fabriquer notre DataFrame avec l'ensemble des données :" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NomsDates de naissance
0Damien Abad1980-04-05
1Laurence Abeille1960-06-17
2Ibrahim Aboubacar1965-02-01
3Élie Aboud1959-10-12
4Bernard Accoyer1945-08-12
5Patricia Adam1953-04-15
6Sylviane Alaux1945-07-01
7Éric Alauzet1958-06-07
8Yves Albarello1952-03-17
9Brigitte Allain1956-04-23
10Jean-Pierre Allossery1945-07-31
11Nicole Ameline1952-07-04
12Pouria Amirshahi1972-03-27
13François André1967-07-19
14Sylvie Andrieux1961-12-15
15Benoist Apparu1969-11-24
16Nathalie Appéré1975-07-08
17Kader Arif1959-07-03
18Laurence Arribagé1970-05-25
19François Asensi1945-06-01
20Christian Assaf1972-09-01
21Isabelle Attard1969-11-14
22Julien Aubert1978-06-11
23Olivier Audibert Troin1960-08-16
24Danielle Auroi1944-02-29
25Pierre Aylagas1942-07-24
26Jean-Marc Ayrault1950-01-25
27Bruno Nestor Azerot1961-07-22
28Alexis Bachelay1973-08-19
29Guillaume Bachelay1974-07-13
.........
547Stéphane Travert1969-10-12
548Catherine Troallic1974-05-10
549Jean-Paul Tuaiva1972-10-30
550Cécile Untermaier1951-12-28
551Jean-Jacques Urvoas1959-09-19
552Daniel Vaillant1949-07-19
553Jacques Valax1951-08-23
554François Vannson1962-10-20
555Catherine Vautrin1960-07-26
556Michel Vauzelle1944-08-15
557Francis Vercamer1958-05-10
558Patrice Verchère1973-12-29
559Fabrice Verdier1968-12-16
560Michel Vergnier1946-11-25
561Arnaud Viala1974-12-04
562Jean-Sébastien Vialatte1951-01-30
563Jean-Pierre Vigier1969-10-22
564Philippe Vigier1958-02-03
565Patrick Vignal1958-01-22
566François-Xavier Villain1950-05-31
567Jean-Michel Villaumé1946-03-27
568Philippe Vitel1955-02-22
569Jean Jacques Vlody1967-08-19
570Michel Voisin1944-10-06
571Jean-Luc Warsmann1965-10-22
572Laurent Wauquiez1975-04-12
573Éric Woerth1956-01-29
574Paola Zanetti1976-09-01
575Marie-Jo Zimmermann1951-04-29
576Michel Zumkeller1966-01-21
\n", "

577 rows × 2 columns

\n", "
" ], "text/plain": [ " Noms Dates de naissance\n", "0 Damien Abad 1980-04-05\n", "1 Laurence Abeille 1960-06-17\n", "2 Ibrahim Aboubacar 1965-02-01\n", "3 Élie Aboud 1959-10-12\n", "4 Bernard Accoyer 1945-08-12\n", "5 Patricia Adam 1953-04-15\n", "6 Sylviane Alaux 1945-07-01\n", "7 Éric Alauzet 1958-06-07\n", "8 Yves Albarello 1952-03-17\n", "9 Brigitte Allain 1956-04-23\n", "10 Jean-Pierre Allossery 1945-07-31\n", "11 Nicole Ameline 1952-07-04\n", "12 Pouria Amirshahi 1972-03-27\n", "13 François André 1967-07-19\n", "14 Sylvie Andrieux 1961-12-15\n", "15 Benoist Apparu 1969-11-24\n", "16 Nathalie Appéré 1975-07-08\n", "17 Kader Arif 1959-07-03\n", "18 Laurence Arribagé 1970-05-25\n", "19 François Asensi 1945-06-01\n", "20 Christian Assaf 1972-09-01\n", "21 Isabelle Attard 1969-11-14\n", "22 Julien Aubert 1978-06-11\n", "23 Olivier Audibert Troin 1960-08-16\n", "24 Danielle Auroi 1944-02-29\n", "25 Pierre Aylagas 1942-07-24\n", "26 Jean-Marc Ayrault 1950-01-25\n", "27 Bruno Nestor Azerot 1961-07-22\n", "28 Alexis Bachelay 1973-08-19\n", "29 Guillaume Bachelay 1974-07-13\n", ".. ... ...\n", "547 Stéphane Travert 1969-10-12\n", "548 Catherine Troallic 1974-05-10\n", "549 Jean-Paul Tuaiva 1972-10-30\n", "550 Cécile Untermaier 1951-12-28\n", "551 Jean-Jacques Urvoas 1959-09-19\n", "552 Daniel Vaillant 1949-07-19\n", "553 Jacques Valax 1951-08-23\n", "554 François Vannson 1962-10-20\n", "555 Catherine Vautrin 1960-07-26\n", "556 Michel Vauzelle 1944-08-15\n", "557 Francis Vercamer 1958-05-10\n", "558 Patrice Verchère 1973-12-29\n", "559 Fabrice Verdier 1968-12-16\n", "560 Michel Vergnier 1946-11-25\n", "561 Arnaud Viala 1974-12-04\n", "562 Jean-Sébastien Vialatte 1951-01-30\n", "563 Jean-Pierre Vigier 1969-10-22\n", "564 Philippe Vigier 1958-02-03\n", "565 Patrick Vignal 1958-01-22\n", "566 François-Xavier Villain 1950-05-31\n", "567 Jean-Michel Villaumé 1946-03-27\n", "568 Philippe Vitel 1955-02-22\n", "569 Jean Jacques Vlody 1967-08-19\n", "570 Michel Voisin 1944-10-06\n", "571 Jean-Luc Warsmann 1965-10-22\n", "572 Laurent Wauquiez 1975-04-12\n", "573 Éric Woerth 1956-01-29\n", "574 Paola Zanetti 1976-09-01\n", "575 Marie-Jo Zimmermann 1951-04-29\n", "576 Michel Zumkeller 1966-01-21\n", "\n", "[577 rows x 2 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(data=list(zip([n for n in names], \n", " [convert2date(b) for b in birthdates])), \n", " columns=('Noms', 'Dates de naissance'))\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Armé de cette dataframe, nous pouvons calculer l'âge des différents députés assez facilement :" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import datetime" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "datetime.date(2016, 1, 8)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "datetime.date.today()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df['Âge'] = pd.Timestamp(datetime.date.today()) - df['Dates de naissance'] " ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NomsDates de naissanceÂge
0Damien Abad1980-04-0513061 days
1Laurence Abeille1960-06-1720293 days
2Ibrahim Aboubacar1965-02-0118603 days
3Élie Aboud1959-10-1220542 days
4Bernard Accoyer1945-08-1225716 days
5Patricia Adam1953-04-1522913 days
6Sylviane Alaux1945-07-0125758 days
7Éric Alauzet1958-06-0721034 days
8Yves Albarello1952-03-1723307 days
9Brigitte Allain1956-04-2321809 days
10Jean-Pierre Allossery1945-07-3125728 days
11Nicole Ameline1952-07-0423198 days
12Pouria Amirshahi1972-03-2715992 days
13François André1967-07-1917705 days
14Sylvie Andrieux1961-12-1519747 days
15Benoist Apparu1969-11-2416846 days
16Nathalie Appéré1975-07-0814794 days
17Kader Arif1959-07-0320643 days
18Laurence Arribagé1970-05-2516664 days
19François Asensi1945-06-0125788 days
20Christian Assaf1972-09-0115834 days
21Isabelle Attard1969-11-1416856 days
22Julien Aubert1978-06-1113725 days
23Olivier Audibert Troin1960-08-1620233 days
24Danielle Auroi1944-02-2926246 days
25Pierre Aylagas1942-07-2426831 days
26Jean-Marc Ayrault1950-01-2524089 days
27Bruno Nestor Azerot1961-07-2219893 days
28Alexis Bachelay1973-08-1915482 days
29Guillaume Bachelay1974-07-1315154 days
............
547Stéphane Travert1969-10-1216889 days
548Catherine Troallic1974-05-1015218 days
549Jean-Paul Tuaiva1972-10-3015775 days
550Cécile Untermaier1951-12-2823387 days
551Jean-Jacques Urvoas1959-09-1920565 days
552Daniel Vaillant1949-07-1924279 days
553Jacques Valax1951-08-2323514 days
554François Vannson1962-10-2019438 days
555Catherine Vautrin1960-07-2620254 days
556Michel Vauzelle1944-08-1526078 days
557Francis Vercamer1958-05-1021062 days
558Patrice Verchère1973-12-2915350 days
559Fabrice Verdier1968-12-1617189 days
560Michel Vergnier1946-11-2525246 days
561Arnaud Viala1974-12-0415010 days
562Jean-Sébastien Vialatte1951-01-3023719 days
563Jean-Pierre Vigier1969-10-2216879 days
564Philippe Vigier1958-02-0321158 days
565Patrick Vignal1958-01-2221170 days
566François-Xavier Villain1950-05-3123963 days
567Jean-Michel Villaumé1946-03-2725489 days
568Philippe Vitel1955-02-2222235 days
569Jean Jacques Vlody1967-08-1917674 days
570Michel Voisin1944-10-0626026 days
571Jean-Luc Warsmann1965-10-2218340 days
572Laurent Wauquiez1975-04-1214881 days
573Éric Woerth1956-01-2921894 days
574Paola Zanetti1976-09-0114373 days
575Marie-Jo Zimmermann1951-04-2923630 days
576Michel Zumkeller1966-01-2118249 days
\n", "

577 rows × 3 columns

\n", "
" ], "text/plain": [ " Noms Dates de naissance Âge\n", "0 Damien Abad 1980-04-05 13061 days\n", "1 Laurence Abeille 1960-06-17 20293 days\n", "2 Ibrahim Aboubacar 1965-02-01 18603 days\n", "3 Élie Aboud 1959-10-12 20542 days\n", "4 Bernard Accoyer 1945-08-12 25716 days\n", "5 Patricia Adam 1953-04-15 22913 days\n", "6 Sylviane Alaux 1945-07-01 25758 days\n", "7 Éric Alauzet 1958-06-07 21034 days\n", "8 Yves Albarello 1952-03-17 23307 days\n", "9 Brigitte Allain 1956-04-23 21809 days\n", "10 Jean-Pierre Allossery 1945-07-31 25728 days\n", "11 Nicole Ameline 1952-07-04 23198 days\n", "12 Pouria Amirshahi 1972-03-27 15992 days\n", "13 François André 1967-07-19 17705 days\n", "14 Sylvie Andrieux 1961-12-15 19747 days\n", "15 Benoist Apparu 1969-11-24 16846 days\n", "16 Nathalie Appéré 1975-07-08 14794 days\n", "17 Kader Arif 1959-07-03 20643 days\n", "18 Laurence Arribagé 1970-05-25 16664 days\n", "19 François Asensi 1945-06-01 25788 days\n", "20 Christian Assaf 1972-09-01 15834 days\n", "21 Isabelle Attard 1969-11-14 16856 days\n", "22 Julien Aubert 1978-06-11 13725 days\n", "23 Olivier Audibert Troin 1960-08-16 20233 days\n", "24 Danielle Auroi 1944-02-29 26246 days\n", "25 Pierre Aylagas 1942-07-24 26831 days\n", "26 Jean-Marc Ayrault 1950-01-25 24089 days\n", "27 Bruno Nestor Azerot 1961-07-22 19893 days\n", "28 Alexis Bachelay 1973-08-19 15482 days\n", "29 Guillaume Bachelay 1974-07-13 15154 days\n", ".. ... ... ...\n", "547 Stéphane Travert 1969-10-12 16889 days\n", "548 Catherine Troallic 1974-05-10 15218 days\n", "549 Jean-Paul Tuaiva 1972-10-30 15775 days\n", "550 Cécile Untermaier 1951-12-28 23387 days\n", "551 Jean-Jacques Urvoas 1959-09-19 20565 days\n", "552 Daniel Vaillant 1949-07-19 24279 days\n", "553 Jacques Valax 1951-08-23 23514 days\n", "554 François Vannson 1962-10-20 19438 days\n", "555 Catherine Vautrin 1960-07-26 20254 days\n", "556 Michel Vauzelle 1944-08-15 26078 days\n", "557 Francis Vercamer 1958-05-10 21062 days\n", "558 Patrice Verchère 1973-12-29 15350 days\n", "559 Fabrice Verdier 1968-12-16 17189 days\n", "560 Michel Vergnier 1946-11-25 25246 days\n", "561 Arnaud Viala 1974-12-04 15010 days\n", "562 Jean-Sébastien Vialatte 1951-01-30 23719 days\n", "563 Jean-Pierre Vigier 1969-10-22 16879 days\n", "564 Philippe Vigier 1958-02-03 21158 days\n", "565 Patrick Vignal 1958-01-22 21170 days\n", "566 François-Xavier Villain 1950-05-31 23963 days\n", "567 Jean-Michel Villaumé 1946-03-27 25489 days\n", "568 Philippe Vitel 1955-02-22 22235 days\n", "569 Jean Jacques Vlody 1967-08-19 17674 days\n", "570 Michel Voisin 1944-10-06 26026 days\n", "571 Jean-Luc Warsmann 1965-10-22 18340 days\n", "572 Laurent Wauquiez 1975-04-12 14881 days\n", "573 Éric Woerth 1956-01-29 21894 days\n", "574 Paola Zanetti 1976-09-01 14373 days\n", "575 Marie-Jo Zimmermann 1951-04-29 23630 days\n", "576 Michel Zumkeller 1966-01-21 18249 days\n", "\n", "[577 rows x 3 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le problème, c'est que l'âge est en jours, on va donc [le convertir en années](http://stackoverflow.com/questions/16103238/pandas-timedelta-in-days) : " ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df['Âge (années)'] = [x.days / 365 for x in df['Âge']]" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NomsDates de naissanceÂgeÂge (années)
0Damien Abad1980-04-0513061 days35.783562
1Laurence Abeille1960-06-1720293 days55.597260
2Ibrahim Aboubacar1965-02-0118603 days50.967123
3Élie Aboud1959-10-1220542 days56.279452
4Bernard Accoyer1945-08-1225716 days70.454795
5Patricia Adam1953-04-1522913 days62.775342
6Sylviane Alaux1945-07-0125758 days70.569863
7Éric Alauzet1958-06-0721034 days57.627397
8Yves Albarello1952-03-1723307 days63.854795
9Brigitte Allain1956-04-2321809 days59.750685
10Jean-Pierre Allossery1945-07-3125728 days70.487671
11Nicole Ameline1952-07-0423198 days63.556164
12Pouria Amirshahi1972-03-2715992 days43.813699
13François André1967-07-1917705 days48.506849
14Sylvie Andrieux1961-12-1519747 days54.101370
15Benoist Apparu1969-11-2416846 days46.153425
16Nathalie Appéré1975-07-0814794 days40.531507
17Kader Arif1959-07-0320643 days56.556164
18Laurence Arribagé1970-05-2516664 days45.654795
19François Asensi1945-06-0125788 days70.652055
20Christian Assaf1972-09-0115834 days43.380822
21Isabelle Attard1969-11-1416856 days46.180822
22Julien Aubert1978-06-1113725 days37.602740
23Olivier Audibert Troin1960-08-1620233 days55.432877
24Danielle Auroi1944-02-2926246 days71.906849
25Pierre Aylagas1942-07-2426831 days73.509589
26Jean-Marc Ayrault1950-01-2524089 days65.997260
27Bruno Nestor Azerot1961-07-2219893 days54.501370
28Alexis Bachelay1973-08-1915482 days42.416438
29Guillaume Bachelay1974-07-1315154 days41.517808
...............
547Stéphane Travert1969-10-1216889 days46.271233
548Catherine Troallic1974-05-1015218 days41.693151
549Jean-Paul Tuaiva1972-10-3015775 days43.219178
550Cécile Untermaier1951-12-2823387 days64.073973
551Jean-Jacques Urvoas1959-09-1920565 days56.342466
552Daniel Vaillant1949-07-1924279 days66.517808
553Jacques Valax1951-08-2323514 days64.421918
554François Vannson1962-10-2019438 days53.254795
555Catherine Vautrin1960-07-2620254 days55.490411
556Michel Vauzelle1944-08-1526078 days71.446575
557Francis Vercamer1958-05-1021062 days57.704110
558Patrice Verchère1973-12-2915350 days42.054795
559Fabrice Verdier1968-12-1617189 days47.093151
560Michel Vergnier1946-11-2525246 days69.167123
561Arnaud Viala1974-12-0415010 days41.123288
562Jean-Sébastien Vialatte1951-01-3023719 days64.983562
563Jean-Pierre Vigier1969-10-2216879 days46.243836
564Philippe Vigier1958-02-0321158 days57.967123
565Patrick Vignal1958-01-2221170 days58.000000
566François-Xavier Villain1950-05-3123963 days65.652055
567Jean-Michel Villaumé1946-03-2725489 days69.832877
568Philippe Vitel1955-02-2222235 days60.917808
569Jean Jacques Vlody1967-08-1917674 days48.421918
570Michel Voisin1944-10-0626026 days71.304110
571Jean-Luc Warsmann1965-10-2218340 days50.246575
572Laurent Wauquiez1975-04-1214881 days40.769863
573Éric Woerth1956-01-2921894 days59.983562
574Paola Zanetti1976-09-0114373 days39.378082
575Marie-Jo Zimmermann1951-04-2923630 days64.739726
576Michel Zumkeller1966-01-2118249 days49.997260
\n", "

577 rows × 4 columns

\n", "
" ], "text/plain": [ " Noms Dates de naissance Âge Âge (années)\n", "0 Damien Abad 1980-04-05 13061 days 35.783562\n", "1 Laurence Abeille 1960-06-17 20293 days 55.597260\n", "2 Ibrahim Aboubacar 1965-02-01 18603 days 50.967123\n", "3 Élie Aboud 1959-10-12 20542 days 56.279452\n", "4 Bernard Accoyer 1945-08-12 25716 days 70.454795\n", "5 Patricia Adam 1953-04-15 22913 days 62.775342\n", "6 Sylviane Alaux 1945-07-01 25758 days 70.569863\n", "7 Éric Alauzet 1958-06-07 21034 days 57.627397\n", "8 Yves Albarello 1952-03-17 23307 days 63.854795\n", "9 Brigitte Allain 1956-04-23 21809 days 59.750685\n", "10 Jean-Pierre Allossery 1945-07-31 25728 days 70.487671\n", "11 Nicole Ameline 1952-07-04 23198 days 63.556164\n", "12 Pouria Amirshahi 1972-03-27 15992 days 43.813699\n", "13 François André 1967-07-19 17705 days 48.506849\n", "14 Sylvie Andrieux 1961-12-15 19747 days 54.101370\n", "15 Benoist Apparu 1969-11-24 16846 days 46.153425\n", "16 Nathalie Appéré 1975-07-08 14794 days 40.531507\n", "17 Kader Arif 1959-07-03 20643 days 56.556164\n", "18 Laurence Arribagé 1970-05-25 16664 days 45.654795\n", "19 François Asensi 1945-06-01 25788 days 70.652055\n", "20 Christian Assaf 1972-09-01 15834 days 43.380822\n", "21 Isabelle Attard 1969-11-14 16856 days 46.180822\n", "22 Julien Aubert 1978-06-11 13725 days 37.602740\n", "23 Olivier Audibert Troin 1960-08-16 20233 days 55.432877\n", "24 Danielle Auroi 1944-02-29 26246 days 71.906849\n", "25 Pierre Aylagas 1942-07-24 26831 days 73.509589\n", "26 Jean-Marc Ayrault 1950-01-25 24089 days 65.997260\n", "27 Bruno Nestor Azerot 1961-07-22 19893 days 54.501370\n", "28 Alexis Bachelay 1973-08-19 15482 days 42.416438\n", "29 Guillaume Bachelay 1974-07-13 15154 days 41.517808\n", ".. ... ... ... ...\n", "547 Stéphane Travert 1969-10-12 16889 days 46.271233\n", "548 Catherine Troallic 1974-05-10 15218 days 41.693151\n", "549 Jean-Paul Tuaiva 1972-10-30 15775 days 43.219178\n", "550 Cécile Untermaier 1951-12-28 23387 days 64.073973\n", "551 Jean-Jacques Urvoas 1959-09-19 20565 days 56.342466\n", "552 Daniel Vaillant 1949-07-19 24279 days 66.517808\n", "553 Jacques Valax 1951-08-23 23514 days 64.421918\n", "554 François Vannson 1962-10-20 19438 days 53.254795\n", "555 Catherine Vautrin 1960-07-26 20254 days 55.490411\n", "556 Michel Vauzelle 1944-08-15 26078 days 71.446575\n", "557 Francis Vercamer 1958-05-10 21062 days 57.704110\n", "558 Patrice Verchère 1973-12-29 15350 days 42.054795\n", "559 Fabrice Verdier 1968-12-16 17189 days 47.093151\n", "560 Michel Vergnier 1946-11-25 25246 days 69.167123\n", "561 Arnaud Viala 1974-12-04 15010 days 41.123288\n", "562 Jean-Sébastien Vialatte 1951-01-30 23719 days 64.983562\n", "563 Jean-Pierre Vigier 1969-10-22 16879 days 46.243836\n", "564 Philippe Vigier 1958-02-03 21158 days 57.967123\n", "565 Patrick Vignal 1958-01-22 21170 days 58.000000\n", "566 François-Xavier Villain 1950-05-31 23963 days 65.652055\n", "567 Jean-Michel Villaumé 1946-03-27 25489 days 69.832877\n", "568 Philippe Vitel 1955-02-22 22235 days 60.917808\n", "569 Jean Jacques Vlody 1967-08-19 17674 days 48.421918\n", "570 Michel Voisin 1944-10-06 26026 days 71.304110\n", "571 Jean-Luc Warsmann 1965-10-22 18340 days 50.246575\n", "572 Laurent Wauquiez 1975-04-12 14881 days 40.769863\n", "573 Éric Woerth 1956-01-29 21894 days 59.983562\n", "574 Paola Zanetti 1976-09-01 14373 days 39.378082\n", "575 Marie-Jo Zimmermann 1951-04-29 23630 days 64.739726\n", "576 Michel Zumkeller 1966-01-21 18249 days 49.997260\n", "\n", "[577 rows x 4 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NomsDates de naissanceÂgeÂge (années)
395Marion Maréchal-Le Pen1989-12-109525 days26.095890
359Marie Le Vern1983-01-1112050 days33.013699
160Gérald Darmanin1982-10-1112142 days33.265753
393Laurent Marcangeli1980-12-1012812 days35.101370
105Fanélie Carrey-Conte1980-05-1613020 days35.671233
0Damien Abad1980-04-0513061 days35.783562
139Romain Colas1979-11-2213196 days36.153425
195Virginie Duby-Muller1979-08-1613294 days36.421918
290Razzy Hammadi1979-02-2213469 days36.901370
176Sébastien Denaja1979-01-1413508 days37.008219
292Mathieu Hanotin1978-08-2213653 days37.405479
207Olivier Dussopt1978-08-1613659 days37.421918
22Julien Aubert1978-06-1113725 days37.602740
157Seybah Dagoma1978-06-0913727 days37.608219
273Laurent Grandguillaume1978-01-2013867 days37.991781
453Sébastien Pietrasanta1977-08-0714033 days38.446575
46Nicolas Bays1977-05-0114131 days38.715068
488Thierry Robert1977-04-0114161 days38.797260
339Guillaume Larrivé1977-01-2414228 days38.980822
469Christophe Premat1976-12-0714276 days39.112329
574Paola Zanetti1976-09-0114373 days39.378082
372Arnaud Leroy1976-04-2314504 days39.736986
499Gwendal Rouillard1976-04-2014507 days39.745205
100Yann Capet1975-12-3114618 days40.049315
487Eduardo Rihan Cypel1975-11-1314666 days40.180822
424Yannick Moreau1975-08-0414767 days40.457534
528Julie Sommaruga1975-08-0114770 days40.465753
16Nathalie Appéré1975-07-0814794 days40.531507
461Barbara Pompili1975-06-1314819 days40.600000
505Maina Sage1975-05-1014853 days40.693151
...............
119Gérard Charasse1944-03-2626220 days71.835616
24Danielle Auroi1944-02-2926246 days71.906849
204Jean-Paul Dupré1944-02-0526270 days71.972603
328Conchita Lacuey1943-09-3026398 days72.323288
310Serge Janquin1943-08-0526454 days72.476712
196Jean-Pierre Dufau1943-07-0526485 days72.561644
535Suzanne Tallard1943-06-1926501 days72.605479
232Michel Françaix1943-05-2826523 days72.665753
521Roger-Gérard Schwartzenberg1943-04-1726564 days72.778082
455Michel Piron1943-03-1526597 days72.868493
69Jacques Bompard1943-02-2426616 days72.920548
514Odile Saugues1943-01-2626645 days73.000000
25Pierre Aylagas1942-07-2426831 days73.509589
257Georges Ginesta1942-07-0826847 days73.553425
120Gaby Charroux1942-06-2526860 days73.589041
186Jean-Pierre Door1942-04-0126945 days73.821918
200William Dumas1942-01-2327013 days74.008219
382François Loncle1941-10-2127107 days74.265753
237Yves Fromion1941-09-1527143 days74.364384
188René Dosière1941-08-0327186 days74.482192
283Jean-Claude Guibal1941-01-1327388 days75.035616
512André Santini1940-10-2027473 days75.268493
321Jacques Kossowski1940-10-1127482 days75.293151
270Marc Goua1940-03-0327704 days75.901370
152Jean-Michel Couve1940-01-0327764 days76.065753
411Jean-Claude Mathis1939-08-1527905 days76.452055
87Bernard Brochand1938-06-0528341 days77.646575
167Lucien Degauchy1937-06-1128700 days78.630137
397Alfred Marie-Jeanne1936-11-1528908 days79.200000
518François Scellier1936-05-0729100 days79.726027
\n", "

577 rows × 4 columns

\n", "
" ], "text/plain": [ " Noms Dates de naissance Âge Âge (années)\n", "395 Marion Maréchal-Le Pen 1989-12-10 9525 days 26.095890\n", "359 Marie Le Vern 1983-01-11 12050 days 33.013699\n", "160 Gérald Darmanin 1982-10-11 12142 days 33.265753\n", "393 Laurent Marcangeli 1980-12-10 12812 days 35.101370\n", "105 Fanélie Carrey-Conte 1980-05-16 13020 days 35.671233\n", "0 Damien Abad 1980-04-05 13061 days 35.783562\n", "139 Romain Colas 1979-11-22 13196 days 36.153425\n", "195 Virginie Duby-Muller 1979-08-16 13294 days 36.421918\n", "290 Razzy Hammadi 1979-02-22 13469 days 36.901370\n", "176 Sébastien Denaja 1979-01-14 13508 days 37.008219\n", "292 Mathieu Hanotin 1978-08-22 13653 days 37.405479\n", "207 Olivier Dussopt 1978-08-16 13659 days 37.421918\n", "22 Julien Aubert 1978-06-11 13725 days 37.602740\n", "157 Seybah Dagoma 1978-06-09 13727 days 37.608219\n", "273 Laurent Grandguillaume 1978-01-20 13867 days 37.991781\n", "453 Sébastien Pietrasanta 1977-08-07 14033 days 38.446575\n", "46 Nicolas Bays 1977-05-01 14131 days 38.715068\n", "488 Thierry Robert 1977-04-01 14161 days 38.797260\n", "339 Guillaume Larrivé 1977-01-24 14228 days 38.980822\n", "469 Christophe Premat 1976-12-07 14276 days 39.112329\n", "574 Paola Zanetti 1976-09-01 14373 days 39.378082\n", "372 Arnaud Leroy 1976-04-23 14504 days 39.736986\n", "499 Gwendal Rouillard 1976-04-20 14507 days 39.745205\n", "100 Yann Capet 1975-12-31 14618 days 40.049315\n", "487 Eduardo Rihan Cypel 1975-11-13 14666 days 40.180822\n", "424 Yannick Moreau 1975-08-04 14767 days 40.457534\n", "528 Julie Sommaruga 1975-08-01 14770 days 40.465753\n", "16 Nathalie Appéré 1975-07-08 14794 days 40.531507\n", "461 Barbara Pompili 1975-06-13 14819 days 40.600000\n", "505 Maina Sage 1975-05-10 14853 days 40.693151\n", ".. ... ... ... ...\n", "119 Gérard Charasse 1944-03-26 26220 days 71.835616\n", "24 Danielle Auroi 1944-02-29 26246 days 71.906849\n", "204 Jean-Paul Dupré 1944-02-05 26270 days 71.972603\n", "328 Conchita Lacuey 1943-09-30 26398 days 72.323288\n", "310 Serge Janquin 1943-08-05 26454 days 72.476712\n", "196 Jean-Pierre Dufau 1943-07-05 26485 days 72.561644\n", "535 Suzanne Tallard 1943-06-19 26501 days 72.605479\n", "232 Michel Françaix 1943-05-28 26523 days 72.665753\n", "521 Roger-Gérard Schwartzenberg 1943-04-17 26564 days 72.778082\n", "455 Michel Piron 1943-03-15 26597 days 72.868493\n", "69 Jacques Bompard 1943-02-24 26616 days 72.920548\n", "514 Odile Saugues 1943-01-26 26645 days 73.000000\n", "25 Pierre Aylagas 1942-07-24 26831 days 73.509589\n", "257 Georges Ginesta 1942-07-08 26847 days 73.553425\n", "120 Gaby Charroux 1942-06-25 26860 days 73.589041\n", "186 Jean-Pierre Door 1942-04-01 26945 days 73.821918\n", "200 William Dumas 1942-01-23 27013 days 74.008219\n", "382 François Loncle 1941-10-21 27107 days 74.265753\n", "237 Yves Fromion 1941-09-15 27143 days 74.364384\n", "188 René Dosière 1941-08-03 27186 days 74.482192\n", "283 Jean-Claude Guibal 1941-01-13 27388 days 75.035616\n", "512 André Santini 1940-10-20 27473 days 75.268493\n", "321 Jacques Kossowski 1940-10-11 27482 days 75.293151\n", "270 Marc Goua 1940-03-03 27704 days 75.901370\n", "152 Jean-Michel Couve 1940-01-03 27764 days 76.065753\n", "411 Jean-Claude Mathis 1939-08-15 27905 days 76.452055\n", "87 Bernard Brochand 1938-06-05 28341 days 77.646575\n", "167 Lucien Degauchy 1937-06-11 28700 days 78.630137\n", "397 Alfred Marie-Jeanne 1936-11-15 28908 days 79.200000\n", "518 François Scellier 1936-05-07 29100 days 79.726027\n", "\n", "[577 rows x 4 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sort_values(by='Âge (années)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut maintenant faire un histogramme des âges des députés :" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df['Âge (années)'].hist(bins=25)\n", "plt.xlabel('âge')\n", "plt.ylabel('nombre de députés')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les statistiques que l'on peut calculer sont : " ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "count 577.000000\n", "mean 57.998637\n", "std 9.988493\n", "min 26.095890\n", "25% 50.967123\n", "50% 58.627397\n", "75% 66.167123\n", "max 79.726027\n", "Name: Âge (années), dtype: float64" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Âge (années)'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Comparaison avec le restant de la France " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On trouve sur le site de l'INSEE un lien vers des [statistiques sur l'âge de la population française en 2014](http://www.insee.fr/fr/themes/detail.asp?ref_id=bilan-demo®_id=0&page=donnees-detaillees/bilan-demo/pop_age2.htm)." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Année de naissanceÂge révoluNombre\n", "d'hommesNombre\n", "de femmesEnsemble
020140387051370260757311
120131387916370500758416
220122394045376249770294
320113394471380218774689
420104407929388696796625
520095405344386586791930
620086407169389524796693
720077405278386970792248
820068412787394049806836
920059404066386640790706
10200410402204384465786669
11200311400289383260783549
12200212403767384236788003
13200113408339390995799334
14200014417354399436816790
15199915400215381184781399
16199816400967381289782256
17199717395245375323770568
18199618396418378272774690
19199519385463369869755332
20199420367552354457722009
21199321358340348128706468
22199222372304364953737257
23199123372851371150744001
24199024379819379366759185
25198925377886381935759821
26198826379413387338766751
27198727380395386549766944
28198628384267394913779180
29198529383224393452776676
..................
76193876195545249332444877
77193777186798244132430930
78193678181433243847425280
79193579171016239291410307
80193480166256240306406562
81193381151458228378379836
82193282148284231031379315
83193183135213217397352610
84193084125189211078336267
85192985107349189472296821
8619288694475176127270602
8719278781730161042242772
8819268870129147781217910
8919258959217133111192328
9019249048109114793162902
911923913860099268137868
921922923120585541116746
93192193247837111295895
94192094189435845777400
9519199583522713535487
9619189650131846823481
9719179729251282015745
981916981808863610444
99191599157469438517
1001914100160177779378
101191310184748045651
102191210254630373583
103191110336219432305
104191010423012671497
1051909 ou avant105 ou plus1810861104
\n", "

106 rows × 5 columns

\n", "
" ], "text/plain": [ " Année de naissance Âge révolu Nombre\\nd'hommes Nombre\\nde femmes \\\n", "0 2014 0 387051 370260 \n", "1 2013 1 387916 370500 \n", "2 2012 2 394045 376249 \n", "3 2011 3 394471 380218 \n", "4 2010 4 407929 388696 \n", "5 2009 5 405344 386586 \n", "6 2008 6 407169 389524 \n", "7 2007 7 405278 386970 \n", "8 2006 8 412787 394049 \n", "9 2005 9 404066 386640 \n", "10 2004 10 402204 384465 \n", "11 2003 11 400289 383260 \n", "12 2002 12 403767 384236 \n", "13 2001 13 408339 390995 \n", "14 2000 14 417354 399436 \n", "15 1999 15 400215 381184 \n", "16 1998 16 400967 381289 \n", "17 1997 17 395245 375323 \n", "18 1996 18 396418 378272 \n", "19 1995 19 385463 369869 \n", "20 1994 20 367552 354457 \n", "21 1993 21 358340 348128 \n", "22 1992 22 372304 364953 \n", "23 1991 23 372851 371150 \n", "24 1990 24 379819 379366 \n", "25 1989 25 377886 381935 \n", "26 1988 26 379413 387338 \n", "27 1987 27 380395 386549 \n", "28 1986 28 384267 394913 \n", "29 1985 29 383224 393452 \n", ".. ... ... ... ... \n", "76 1938 76 195545 249332 \n", "77 1937 77 186798 244132 \n", "78 1936 78 181433 243847 \n", "79 1935 79 171016 239291 \n", "80 1934 80 166256 240306 \n", "81 1933 81 151458 228378 \n", "82 1932 82 148284 231031 \n", "83 1931 83 135213 217397 \n", "84 1930 84 125189 211078 \n", "85 1929 85 107349 189472 \n", "86 1928 86 94475 176127 \n", "87 1927 87 81730 161042 \n", "88 1926 88 70129 147781 \n", "89 1925 89 59217 133111 \n", "90 1924 90 48109 114793 \n", "91 1923 91 38600 99268 \n", "92 1922 92 31205 85541 \n", "93 1921 93 24783 71112 \n", "94 1920 94 18943 58457 \n", "95 1919 95 8352 27135 \n", "96 1918 96 5013 18468 \n", "97 1917 97 2925 12820 \n", "98 1916 98 1808 8636 \n", "99 1915 99 1574 6943 \n", "100 1914 100 1601 7777 \n", "101 1913 101 847 4804 \n", "102 1912 102 546 3037 \n", "103 1911 103 362 1943 \n", "104 1910 104 230 1267 \n", "105 1909 ou avant 105 ou plus 18 1086 \n", "\n", " Ensemble \n", "0 757311 \n", "1 758416 \n", "2 770294 \n", "3 774689 \n", "4 796625 \n", "5 791930 \n", "6 796693 \n", "7 792248 \n", "8 806836 \n", "9 790706 \n", "10 786669 \n", "11 783549 \n", "12 788003 \n", "13 799334 \n", "14 816790 \n", "15 781399 \n", "16 782256 \n", "17 770568 \n", "18 774690 \n", "19 755332 \n", "20 722009 \n", "21 706468 \n", "22 737257 \n", "23 744001 \n", "24 759185 \n", "25 759821 \n", "26 766751 \n", "27 766944 \n", "28 779180 \n", "29 776676 \n", ".. ... \n", "76 444877 \n", "77 430930 \n", "78 425280 \n", "79 410307 \n", "80 406562 \n", "81 379836 \n", "82 379315 \n", "83 352610 \n", "84 336267 \n", "85 296821 \n", "86 270602 \n", "87 242772 \n", "88 217910 \n", "89 192328 \n", "90 162902 \n", "91 137868 \n", "92 116746 \n", "93 95895 \n", "94 77400 \n", "95 35487 \n", "96 23481 \n", "97 15745 \n", "98 10444 \n", "99 8517 \n", "100 9378 \n", "101 5651 \n", "102 3583 \n", "103 2305 \n", "104 1497 \n", "105 1104 \n", "\n", "[106 rows x 5 columns]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_pop = pd.read_excel('http://www.insee.fr/fr/ppp/bases-de-donnees/donnees-detaillees/bilan-demo/fichiers-xls/pop-1janvier-fm.xls',\n", " skiprows=7,\n", " header=1,\n", " skipfooter=3)\n", "df_pop" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le nombre de français par classe d'âge est le suivant : " ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaMAAAEYCAYAAADxmJlCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4VUX6wPHvnECoFwQpGlAsdBQVAQURERfBjoVX1wIq\nu6trWXvBAvYV/Sl2dlexgK762usqNtaOqKArWFBXEBBcRJFOyJnfH+cELyWQm9zkJLnv53nykDv3\nnLnv5Ia8d+bMmXHee4wxxpgkBUkHYIwxxlgyMsYYkzhLRsYYYxJnycgYY0ziLBkZY4xJnCUjY4wx\niatVWS8kIuOAg4EFqto1LmsCPAq0Ab4DRFUXx8+NAE4G1gBnqerEuLwbcD9QF3hRVc+Oy/OB8cDu\nwELgaFWdHT83DLgU8MC1qjo+Lt8OeARoCnwEnKCqayry52CMMWZDldkzug8YuF7ZxcCrqtoBeB0Y\nASAinQEBOgEHAHeJiIvPGQsMV9X2QHsRKa5zOLBIVdsBtwA3xHU1AUYCPYA9gFEi0jg+ZzRwU1zX\nL3EdpSIi/Up7bE2Uy+3P5baDtd/aXzHtr7RkpKpvAz+vV3wY8ED8/QPA4Pj7Q4FHVHWNqn4HzAR6\nishWQEpVp8THjU87J72ux4H+8fcDgYmqulhVfwEmAoPi5/oDT6S9/uEZNKlfBsfWRP2SDiBB/ZIO\nIGH9kg4gYf2SDiBh/Sqi0qSvGbVQ1QUAqjofaBGXtwK+TztublzWCpiTVj4nLlvnHFUtAhaLSNOS\n6hKRLYGfVTVMq6sgS+0yxhiTgaST0fqyuTaR2/whpTrGGGNMBau0CQwlWCAiLVV1QTwE92NcPhfY\nJu241nFZSeXp58wTkTygkaouEpG5rNutbA28oao/iUhjEQni3lF6XRuIx0nX1qOqo4BRGba3xlBV\nyNH253Lbwdpv7S9/+0XkyrSHk1R1UmUnI8e6vZFngROJJhIMA55JK39IRMYQDbO1BT5QVS8ii0Wk\nJzAFGArclnbOMGAyMIRoQgTAy8C18aSFABhANHEC4I342EfXe/0NqOokYFJa0ah58+aVvuU1TCqV\nYsmSJUmHkYhcbjtY+6395Wt/QUEBqnrF+uWVNkwnIv8E3iWaATdbRE4CrgcGiMiXwH7xY1R1BqDA\nDOBF4DRVLR7COx0YB3wFzFTVl+LycUAzEZkJnE2ccFT1Z+Bq4EOiRHVlPJGB+JhzReQround4yqq\n/cYYY0rmbAuJMvPWM8rNT4e53Haw9lv7y98zYiPX66vaBAZjjDE5yJKRMcaYxCU9m84YY8qsYcOG\nOFe5d2jk5eWRSqUq9TWrktK233vP0qVLS12vJSNjTLXlnMvp6zdVWaYJ24bpjDHGJM6SkTHGmMRZ\nMjLGGJM4S0bGGJOD3nvvPbp3717i8+eccw433nhjpcVjExiMMaaC7LHHHixcuJBatWrhvcc5h4hw\n9dVXJx0aQKXPRNwUS0bGGFNBnHOMHz+evfbaK+lQqjwbpjPGmAq0sSXXVJXDDz+cq6++mi5dutC7\nd2/eeOONtc8/+uij9O7dmw4dOtC7d2+efvrptc898sgj9OvXjy5dunD88cczd+5vmw20bt2aBx54\ngD59+tCxY0duvPFGZs2axWGHHUanTp3485//zJo1a9aJ7fbbb2fnnXemV69ePPXUUyW245VXXmH/\n/fenc+fODB48mM8//7y8P5p1WDIyxpgETJs2jXbt2vHZZ59x6qmncv755wOwYsUKRo0axUMPPcSX\nX37JM888Q5cuXQB4+eWXueOOOxg3bhz/+c9/6NmzJ6eddto69b755ptMnDiR5557jrFjx3LRRRdx\n5513MmXKFL744ot1Etv//vc/fvnlFz7++GPGjBnDhRdeyLfffrtBrJ999hnnn38+N954I9OnT+f4\n44/npJNOorCwMGs/D0tGxhhTgYYPH06XLl3o3LkzXbp04eGHHwagVatWHHPMMTjnGDJkCAsWLGDh\nwoVAtMrBF198wcqVK2nevDnt2rUD4MEHH+TMM89kxx13JAgCzjjjDKZPn75O7+i0006jfv36tGvX\njg4dOrDPPvvQunVrGjZsyL777stnn3229ljnHBdccAG1a9dmzz33ZL/99uO5557boA0PPfQQJ5xw\nArvssgvOOY466ijy8/P5+OOPs/ZzsmtGxpgareiPh2alnry7ny3Teffee+8G14xUlRYtWqx9XK9e\nPQCWLVtGs2bNGDt2LGPHjuW8886jR48ejBw5kh133JE5c+YwcuRIrrrqKoC1kyLmz59Pq1atAGjW\nrNnaeuvWrbvB4+KEB9C4cWPq1q279nHr1q1ZsGDBBm2YM2cOjz/+OPfdd9/a1y0sLGT+/Pll+pls\njCUjY0yNVtYkki1l2aanb9++9O3bl1WrVjF69GguvPBCnnjiCQoKCjjrrLMYPHhwVmJbvHgxK1as\n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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_pop.plot('Âge révolu', 'Ensemble')\n", "plt.ylabel('population')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Afin de pouvoir comparer la distribution des députés avec celle des français normaux, on va utiliser une méthode d'estimation par noyaux, analogue à un histogramme. Le code vient d'ici :" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from scipy.stats import gaussian_kde\n", "\n", "def kde_scipy(x, x_grid, bandwidth=0.2, **kwargs):\n", " \"\"\"Kernel Density Estimation with Scipy\"\"\"\n", " # Note that scipy weights its bandwidth by the covariance of the\n", " # input data. To make the results comparable to the other methods,\n", " # we divide the bandwidth by the sample standard deviation here.\n", " kde = gaussian_kde(x, bw_method=bandwidth / x.std(ddof=1), **kwargs)\n", " return kde.evaluate(x_grid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Afin d'utiliser ce code, il nous faut transformer les données cumulées disponibles pour la population française en données ponctuelles (une série d'âges). Nous faisons ceci en prenant une certaine classe d'âge proportionnellement à un facteur de décimation." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "decimation_factor = 1000\n", "french_pop_ages = []\n", "for ind, value in enumerate(df_pop['Ensemble']):\n", " french_pop_ages += [ind for _ in range(int(value / decimation_factor))]" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "64152" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(french_pop_ages)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On va faire les graphes sur des âges entre 0 et 100 ans. " ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true }, "outputs": [], "source": [ "age_grid = np.linspace(0, 100)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true }, "outputs": [], "source": [ "pop_kde = kde_scipy(np.array(french_pop_ages), age_grid, bandwidth=0.4)\n", "dep_kde = kde_scipy(df['Âge (années)'].values, age_grid, bandwidth=0.4)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\npCQKCgp46qmnmj2fmprKgQMHmp1r+GOcmZnJhAkTuP/++6mrq2PLli2sWrWqWed6S10ZgeZwOHA4\nHCQnJ2Mymfj444/59NNPvcqraRqXXnop9957L0VFRbjdbr777jvq6+upqqrCarXSs2dP7HY7999/\nf5vB9t///jf79u0DjAAUExODyWRi3LhxJCUl8eSTT1JbW4vL5WL79u1s2LCh0++3wZ6yOu76z0H2\nltd2+VrBYvTnJDQ7l2GzUKj6daKOCjoRZt68eVx22WVMmzaNQYMG8ctf/hKA0047jdtuu43Fixcz\nfvx4Dhw4wJNPPtks77nnnsvs2bOZNWsWZ599dmN/zumnn84FF1zA2WefzZw5czj77LOb5Wv6B/XW\nW29l48aNjBw5koULFzJnzpxmaZcuXcojjzxCXl4eK1asOCH/n//8Zw4cOMDJJ5/M4sWLue2225g6\ndWqb77e9mlNHgx8SExO57777WLJkCXl5ebz55puce+65bV6v5TV++9vfMmLECM455xz69+/P/fff\nj67rXHLJJWRlZTF+/HjOOOMMJkyY0Ob19u7dy/z58xk+fDgXXnghV155Jaeeeiomk4kXX3yRzZs3\nc+qppzJ69Ghuu+02vyw2u7nYTqLFxBtbyrp8rWBZX1DNuL7Na2Z9k9QItmikdg5tIZx3CGw58dIX\n2dnZfPnll632USgdu+yyy3jppZdCuu2Ft5/NP3x6iPGZifxt/REemTOI1ERLQF+vq+wOF4te283K\nnw4lNub47+CvDlSwZm8Fd07PDngZOhLOfxeCTe0cqigBVFtbi9PpxOl0ntBsGI5cbp3NxXYmZds4\nY3BP3tleHuoidWhzUQ3D+sQ1Czhg9OmoVQmiT1AHEgghZgGPYAS756SUy1tJ8xgwG6gGFkop1wsh\nYoHPACtGmV+RUt7rSX83sBgo9lziTinl+wF/MyHQlV/Z3W1jOn/ZtWsX8+bNIycn54SRceFo/9E6\nesXF0Ds+hp/kJHPrv/YiRvUh0WoOddHatL6wmrGtDHrIsFkorKpH13X1+Y0iQavpCCFMwBPAuUAe\nsEAIMaJFmtnAECnlMGAJ8BcAKWUdMFNKOQ4YC8wWQkxskvVhKeXJnn9RGXDAmEHfmaY1gIMHD6qm\ntU4YNWoUO3fu5J133mmcgBrONhXbGZVmdMinJVkY1zeJD3cdDXGp2tfaIAKABIuZOIuJshpnCEql\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(age_grid, \n", " pop_kde, \n", " label='population française')\n", "plt.plot(age_grid, \n", " dep_kde, \n", " label='députés')\n", "plt.legend(loc='upper left')\n", "plt.xlabel('âge')\n", "plt.ylabel('densité')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ces densités étant difficiles à visualiser, on leur préfère généralement la visualisation de la fréquence cumulée, qui permet de les comparer facilement en terme de distribution :" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import statsmodels.api as sm # recommended import according to the docs\n", "\n", "ecdf_mp = sm.distributions.ECDF(df['Âge (années)'].values)\n", "ecdf_french_pop = sm.distributions.ECDF(french_pop_ages)\n", "y_mp = ecdf_mp(age_grid)\n", "y_french_pop = ecdf_french_pop(age_grid)\n", "plt.step(age_grid, y_mp, label='députés')\n", "plt.step(age_grid, y_french_pop, label='population française')\n", "plt.legend(loc='upper left')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comme on le voit, les répartitions sont très différents : plus de députés vieux par rapport à la population, mais également moins de députés \"très vieux\" par rapport à cette même population." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut également calculer un \"taux de représentation\" à l'aide de ces valeurs : c'est-à-dire un ratio entre la densité de députés pour un certain âge et le nombre de députés de cet âge-là." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(age_grid, dep_kde / pop_kde, label='représentation actuelle des députés')\n", "plt.plot(age_grid, np.ones_like(age_grid), label='représentation équi-âge')\n", "plt.legend(loc='upper left', fontsize=10)\n", "plt.xlabel('âge')\n", "plt.ylabel('densité')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut noter que les âges entre 50 et 70 sont surreprésentés, alors que les âges en dehors sont sous-représentés par la distribution actuelle des députés.\n", "\n", "Si l'on compare les quantiles entre la population française et les députés, on obtient :" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "count 64152.000000\n", "mean 40.538175\n", "std 24.030176\n", "min 0.000000\n", "25% 20.000000\n", "50% 41.000000\n", "75% 59.000000\n", "max 105.000000\n", "dtype: float64" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series(french_pop_ages).describe()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "count 577.000000\n", "mean 57.998637\n", "std 9.988493\n", "min 26.095890\n", "25% 50.967123\n", "50% 58.627397\n", "75% 66.167123\n", "max 79.726027\n", "Name: Âge (années), dtype: float64" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Âge (années)'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut résumer ces données par le tableau suivant :\n", "\n", "| population | âge moyen | âge minimal | âge maximal | 25% de la population a moins de | 50% a moins de | 50% a plus de | 25% a plus de |\n", "|----------------------|-----------|-------|---------|-----------------|-----------------|---------------|---------------|\n", "| les Français | 41 ans | 0 ans | 105 ans | 20 ans | 41 ans | 41 ans | 59 ans |\n", "| les députés français | 58 ans | 26 ans | 79 ans | 51 ans | 59 ans | 59 ans | 66 ans |" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Conclusions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dans ce billet, nous avons étudié les données de l'âge disponibles pour les députés français. La distribution obtenue permet de retrouver les [histogrammes officiels](http://www.assemblee-nationale.fr/qui/xml/age.asp?legislature=14) et fournir de plus amples détails, comme par exemple la moyenne d'âge d'environ 60 ans des députés français. \n", "\n", "Dans la deuxième partie du billet, nous avons comparé la distribution des âges des députés avec celles du français moyen. On constate que les deux distributions sont assez différentes. En particulier, les jeunes (jusqu'à 40 ans environ) ne sont pas représentés dans les âges des députés, alors que les âges entre 50 et 70 sont surreprésentés (facteur entre 2 et 5). \n", "\n", "De nombreuses questions peuvent être posées au vu de ces résultats : quels sont les avantages et les inconvénients de cette distribution inégale ? Peut-on supposer qu'elle induit un biais significatif sur les décisions et les manières de penser par rapport à la population ? Existe-t-il des points sur lesquels l'expérience des députés diffère sensiblement de celle de la population (internet est un point qui me vient à l'esprit) ? Cette répartition par rapport à la population se retrouve-t-elle dans d'autres pays comparables à la France ? Comment a-t-elle évolué dans le temps (il y a 50 ans par exemple) ? \n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.0" } }, "nbformat": 4, "nbformat_minor": 0 }