{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# 2A.data - DataFrame et Graphes - correction\n", "\n", "Op\u00e9rations standards sur les dataframes ([pandas](http://pandas.pydata.org/)) et les matrices ([numpy](http://www.numpy.org/)). Graphiques avec [matplotlib](https://matplotlib.org/))."]}, {"cell_type": "code", "execution_count": 1, "metadata": {"collapsed": true}, "outputs": [], "source": ["%matplotlib inline\n", "import matplotlib.pyplot as plt"]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", ""], "text/plain": [""]}, "execution_count": 3, "metadata": {}, "output_type": "execute_result"}], "source": ["from jyquickhelper import add_notebook_menu\n", "add_notebook_menu()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Exercice 1 : cr\u00e9er un fichier Excel
\n", " \n", "On souhaite r\u00e9cup\u00e9rer les donn\u00e9es [donnees_enquete_2003_television.txt](http://www.xavierdupre.fr/enseignement/complements/donnees_enquete_2003_television.txt) (source : [INSEE](http://www.insee.fr/fr/themes/detail.asp?ref_id=fd-hdv03&page=fichiers_detail/HDV03/telechargement.htm)).\n", "\n", "* ``POIDSLOG`` : Pond\u00e9ration individuelle relative\n", "* ``POIDSF`` : Variable de pond\u00e9ration individuelle\n", "* ``cLT1FREQ`` : Nombre d'heures en moyenne pass\u00e9es \u00e0 regarder la t\u00e9l\u00e9vision \n", "* ``cLT2FREQ`` : Unit\u00e9 de temps utilis\u00e9e pour compter le nombre d'heures pass\u00e9es \u00e0 regarder la t\u00e9l\u00e9vision, cette unit\u00e9 est repr\u00e9sent\u00e9e par les quatre valeurs suivantes\n", " * 0 : non concern\u00e9\n", " * 1 : jour\n", " * 2 : semaine\n", " * 3 : mois \n", " \n", "Ensuite, on veut :\n", "\n", "1. Supprimer les colonnes vides\n", "2. Obtenir les valeurs distinctes pour la colonne ``cLT2FREQ``\n", "3. Modifier la matrice pour enlever les lignes pour lesquelles l'unit\u00e9 de temps (cLT2FREQ) n'est pas renseign\u00e9e ou \u00e9gale \u00e0 z\u00e9ro.\n", "4. Sauver le r\u00e9sultat au format Excel.\n", "\n", "Vous aurez peut-\u00eatre besoin des fonctions suivantes :\n", "\n", "* [numpy.isnan](http://docs.scipy.org/doc/numpy/reference/generated/numpy.isnan.html)\n", "* [DataFrame.apply](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html)\n", "* [DataFrame.fillna](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html) ou \n", "[DataFrame.isnull](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.isnull.html)\n", "* [DataFrame.copy](http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.copy.html)"]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " POIDLOG | \n", " POIDSF | \n", " cLT1FREQ | \n", " cLT2FREQ | \n", " Unnamed: 4 | \n", " Unnamed: 5 | \n", " Unnamed: 6 | \n", " Unnamed: 7 | \n", " Unnamed: 8 | \n", " Unnamed: 9 | \n", " ... | \n", " Unnamed: 22 | \n", " Unnamed: 23 | \n", " Unnamed: 24 | \n", " Unnamed: 25 | \n", " Unnamed: 26 | \n", " Unnamed: 27 | \n", " Unnamed: 28 | \n", " Unnamed: 29 | \n", " Unnamed: 30 | \n", " Unnamed: 31 | \n", "
\n", " \n", " \n", " \n", " 0 | \n", " 0.889422 | \n", " 4766.865201 | \n", " 2 | \n", " 1.0 | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " ... | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", "
\n", " \n", " 1 | \n", " 2.310209 | \n", " 12381.589746 | \n", " 30 | \n", " 1.0 | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " ... | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", "
\n", " \n", " 2 | \n", " 2.740070 | \n", " 14685.431344 | \n", " 6 | \n", " 2.0 | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " ... | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", "
\n", " \n", " 3 | \n", " 1.775545 | \n", " 9516.049939 | \n", " 1 | \n", " 1.0 | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " ... | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", "
\n", " \n", " 4 | \n", " 0.732512 | \n", " 3925.907588 | \n", " 3 | \n", " 1.0 | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " ... | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", " NaN | \n", "
\n", " \n", "
\n", "
5 rows \u00d7 32 columns
\n", "
"], "text/plain": [" POIDLOG POIDSF cLT1FREQ cLT2FREQ Unnamed: 4 Unnamed: 5 \\\n", "0 0.889422 4766.865201 2 1.0 NaN NaN \n", "1 2.310209 12381.589746 30 1.0 NaN NaN \n", "2 2.740070 14685.431344 6 2.0 NaN NaN \n", "3 1.775545 9516.049939 1 1.0 NaN NaN \n", "4 0.732512 3925.907588 3 1.0 NaN NaN \n", "\n", " Unnamed: 6 Unnamed: 7 Unnamed: 8 Unnamed: 9 ... Unnamed: 22 \\\n", "0 NaN NaN NaN NaN ... NaN \n", "1 NaN NaN NaN NaN ... NaN \n", "2 NaN NaN NaN NaN ... NaN \n", "3 NaN NaN NaN NaN ... NaN \n", "4 NaN NaN NaN NaN ... NaN \n", "\n", " Unnamed: 23 Unnamed: 24 Unnamed: 25 Unnamed: 26 Unnamed: 27 \\\n", "0 NaN NaN NaN NaN NaN \n", "1 NaN NaN NaN NaN NaN \n", "2 NaN NaN NaN NaN NaN \n", "3 NaN NaN NaN NaN NaN \n", "4 NaN NaN NaN NaN NaN \n", "\n", " Unnamed: 28 Unnamed: 29 Unnamed: 30 Unnamed: 31 \n", "0 NaN NaN NaN NaN \n", "1 NaN NaN NaN NaN \n", "2 NaN NaN NaN NaN \n", "3 NaN NaN NaN NaN \n", "4 NaN NaN NaN NaN \n", "\n", "[5 rows x 32 columns]"]}, "execution_count": 4, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas\n", "from ensae_teaching_cs.data import donnees_enquete_2003_television\n", "df = pandas.read_csv(donnees_enquete_2003_television(), sep=\"\\t\", engine=\"python\")\n", "df.head()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["On enl\u00e8ve les colonnes vides :"]}, {"cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " POIDLOG | \n", " POIDSF | \n", " cLT1FREQ | \n", " cLT2FREQ | \n", "
\n", " \n", " \n", " \n", " 0 | \n", " 0.889422 | \n", " 4766.865201 | \n", " 2 | \n", " 1.0 | \n", "
\n", " \n", " 1 | \n", " 2.310209 | \n", " 12381.589746 | \n", " 30 | \n", " 1.0 | \n", "
\n", " \n", " 2 | \n", " 2.740070 | \n", " 14685.431344 | \n", " 6 | \n", " 2.0 | \n", "
\n", " \n", " 3 | \n", " 1.775545 | \n", " 9516.049939 | \n", " 1 | \n", " 1.0 | \n", "
\n", " \n", " 4 | \n", " 0.732512 | \n", " 3925.907588 | \n", " 3 | \n", " 1.0 | \n", "
\n", " \n", "
\n", "
"], "text/plain": [" POIDLOG POIDSF cLT1FREQ cLT2FREQ\n", "0 0.889422 4766.865201 2 1.0\n", "1 2.310209 12381.589746 30 1.0\n", "2 2.740070 14685.431344 6 2.0\n", "3 1.775545 9516.049939 1 1.0\n", "4 0.732512 3925.907588 3 1.0"]}, "execution_count": 5, "metadata": {}, "output_type": "execute_result"}], "source": ["df = df [[ c for c in df.columns if \"Unnamed\" not in c]]\n", "df.head()"]}, {"cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["8403 7386\n"]}, {"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " POIDLOG | \n", " POIDSF | \n", " cLT1FREQ | \n", " cLT2FREQ | \n", "
\n", " \n", " \n", " \n", " 8397 | \n", " 0.502091 | \n", " 2690.961176 | \n", " 3 | \n", " 1.0 | \n", "
\n", " \n", " 8398 | \n", " 0.306852 | \n", " 1644.574141 | \n", " 6 | \n", " 1.0 | \n", "
\n", " \n", " 8399 | \n", " 2.501181 | \n", " 13405.104689 | \n", " 6 | \n", " 1.0 | \n", "
\n", " \n", " 8400 | \n", " 1.382758 | \n", " 7410.905653 | \n", " 1 | \n", " 1.0 | \n", "
\n", " \n", " 8401 | \n", " 0.343340 | \n", " 1840.132652 | \n", " 3 | \n", " 1.0 | \n", "
\n", " \n", "
\n", "
"], "text/plain": [" POIDLOG POIDSF cLT1FREQ cLT2FREQ\n", "8397 0.502091 2690.961176 3 1.0\n", "8398 0.306852 1644.574141 6 1.0\n", "8399 2.501181 13405.104689 6 1.0\n", "8400 1.382758 7410.905653 1 1.0\n", "8401 0.343340 1840.132652 3 1.0"]}, "execution_count": 6, "metadata": {}, "output_type": "execute_result"}], "source": ["notnull = df [ ~df.cLT2FREQ.isnull() ] # \u00e9quivalent ) df [ df.cLT2FREQ.notnull() ] \n", "print(len(df),len(notnull))\n", "notnull.tail()"]}, {"cell_type": "code", "execution_count": 6, "metadata": {"collapsed": true}, "outputs": [], "source": ["notnull.to_excel(\"data.xlsx\") # question 4"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Pour lancer Excel, vous pouvez juste \u00e9crire ceci :"]}, {"cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [{"data": {"text/plain": ["[]"]}, "execution_count": 8, "metadata": {}, "output_type": "execute_result"}], "source": ["%system \"data.xlsx\""]}, {"cell_type": "markdown", "metadata": {}, "source": ["Vous devriez voir quelque chose comme ceci :"]}, {"cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": [""]}, "execution_count": 9, "metadata": {}, "output_type": "execute_result"}], "source": ["from IPython.display import Image\n", "Image(\"td10exc.png\")"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Questions
\n", "\n", "* **Que changerait l'ajout du param\u00e8tre ``how='outer'`` dans ce cas ?**\n", "* **On cherche \u00e0 joindre deux tables A,B qui ont chacune trois cl\u00e9s distinctes : $c_1, c_2, c_3$. Il y a respectivement dans chaque table $A_i$ et $B_i$ lignes pour la cl\u00e9 $c_i$. Combien la table finale issue de la fusion des deux tables contiendra-t-elle de lignes ?**"]}, {"cell_type": "markdown", "metadata": {}, "source": ["L'ajout du param\u00e8tres ``how='outer'`` ne changerait rien dans ce cas car les deux tables fusionn\u00e9es contiennent exactement les m\u00eames cl\u00e9s.\n", "\n", "Le nombre de lignes obtenus serait $\\sum_{i=1}^{3} A_i B_i$. Il y a trois cl\u00e9s, chaque ligne de la table A doit \u00eatre associ\u00e9e \u00e0 toutes les lignes de la table B partageant la m\u00eame cl\u00e9."]}, {"cell_type": "markdown", "metadata": {}, "source": ["Exercice 2 : lambda fonction
\n", "\n", "Ecrire une lambda fonction qui prend deux param\u00e8tres et qui est \u00e9quivalente \u00e0 la fonction suivante :"]}, {"cell_type": "code", "execution_count": 9, "metadata": {"collapsed": true}, "outputs": [], "source": ["def delta(x,y):\n", " return max(x,y)- min(x,y)"]}, {"cell_type": "code", "execution_count": 10, "metadata": {"collapsed": true}, "outputs": [], "source": ["delta = lambda x,y : max(x,y)- min(x,y)"]}, {"cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [{"data": {"text/plain": ["1"]}, "execution_count": 12, "metadata": {}, "output_type": "execute_result"}], "source": ["delta(4,5)"]}, {"cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [{"data": {"text/plain": ["((851, 5), (8403, 5))"]}, "execution_count": 13, "metadata": {}, "output_type": "execute_result"}], "source": ["import random \n", "df[\"select\"]= df.apply( lambda row : random.randint(1,10), axis=1) \n", "echantillon = df [ df[\"select\"] ==1 ]\n", "echantillon.shape, df.shape"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Exercice 3 : moyennes par groupes
\n", " \n", "Toujours avec le m\u00eame jeu de donn\u00e9es ([marathon.txt](http://www.xavierdupre.fr/enseignement/complements/marathon.txt)), on veut ajouter une ligne \u00e0 la fin du tableau crois\u00e9 dynamique contenant la moyenne en secondes des temps des marathons pour chaque ville."]}, {"cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " ville | \n", " annee | \n", " temps | \n", " secondes | \n", "
\n", " \n", " \n", " \n", " 0 | \n", " PARIS | \n", " 2011 | \n", " 02:06:29 | \n", " 7589 | \n", "
\n", " \n", " 1 | \n", " PARIS | \n", " 2010 | \n", " 02:06:41 | \n", " 7601 | \n", "
\n", " \n", " 2 | \n", " PARIS | \n", " 2009 | \n", " 02:05:47 | \n", " 7547 | \n", "
\n", " \n", " 3 | \n", " PARIS | \n", " 2008 | \n", " 02:06:40 | \n", " 7600 | \n", "
\n", " \n", " 4 | \n", " PARIS | \n", " 2007 | \n", " 02:07:17 | \n", " 7637 | \n", "
\n", " \n", "
\n", "
"], "text/plain": [" ville annee temps secondes\n", "0 PARIS 2011 02:06:29 7589\n", "1 PARIS 2010 02:06:41 7601\n", "2 PARIS 2009 02:05:47 7547\n", "3 PARIS 2008 02:06:40 7600\n", "4 PARIS 2007 02:07:17 7637"]}, "execution_count": 14, "metadata": {}, "output_type": "execute_result"}], "source": ["from ensae_teaching_cs.data import marathon\n", "import pandas\n", "df = pandas.read_csv(marathon(), sep=\"\\t\", names=[\"ville\", \"annee\", \"temps\",\"secondes\"])\n", "df.head()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["La solution requiert trois \u00e9tapes.\n", "\n", "1. Pour avoir la moyenne par villes, il faut grouper les lignes associ\u00e9es \u00e0 la m\u00eame villes.\n", "2. Ensuite, il faut introduire ces moyennes dans la table initiale : on fusionne.\n", "3. On effectue le m\u00eame pivot que dans l'\u00e9nonc\u00e9."]}, {"cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " ville | \n", " secondes | \n", "
\n", " \n", " \n", " \n", " 0 | \n", " AMSTERDAM | \n", " 7883.371429 | \n", "
\n", " \n", " 1 | \n", " BERLIN | \n", " 7922.315789 | \n", "
\n", " \n", " 2 | \n", " BOSTON | \n", " 7891.061224 | \n", "
\n", " \n", " 3 | \n", " CHICAGO | \n", " 7815.909091 | \n", "
\n", " \n", " 4 | \n", " FUKUOKA | \n", " 8075.187500 | \n", "
\n", " \n", "
\n", "
"], "text/plain": [" ville secondes\n", "0 AMSTERDAM 7883.371429\n", "1 BERLIN 7922.315789\n", "2 BOSTON 7891.061224\n", "3 CHICAGO 7815.909091\n", "4 FUKUOKA 8075.187500"]}, "execution_count": 15, "metadata": {}, "output_type": "execute_result"}], "source": ["# \u00e9tape 1\n", "# par d\u00e9faut, la m\u00e9thode groupby utilise la cl\u00e9 de group comme index\n", "# pour ne pas le faire, il faut pr\u00e9ciser as_index = False\n", "gr = df[[\"ville\",\"secondes\"]].groupby(\"ville\", as_index=False).mean()\n", "gr.head()"]}, {"cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " ville | \n", " annee | \n", " temps | \n", " secondes_x | \n", " secondes_y | \n", "
\n", " \n", " \n", " \n", " 0 | \n", " PARIS | \n", " 2011 | \n", " 02:06:29 | \n", " 7589 | \n", " 7937.028571 | \n", "
\n", " \n", " 1 | \n", " PARIS | \n", " 2010 | \n", " 02:06:41 | \n", " 7601 | \n", " 7937.028571 | \n", "
\n", " \n", " 2 | \n", " PARIS | \n", " 2009 | \n", " 02:05:47 | \n", " 7547 | \n", " 7937.028571 | \n", "
\n", " \n", " 3 | \n", " PARIS | \n", " 2008 | \n", " 02:06:40 | \n", " 7600 | \n", " 7937.028571 | \n", "
\n", " \n", " 4 | \n", " PARIS | \n", " 2007 | \n", " 02:07:17 | \n", " 7637 | \n", " 7937.028571 | \n", "
\n", " \n", "
\n", "
"], "text/plain": [" ville annee temps secondes_x secondes_y\n", "0 PARIS 2011 02:06:29 7589 7937.028571\n", "1 PARIS 2010 02:06:41 7601 7937.028571\n", "2 PARIS 2009 02:05:47 7547 7937.028571\n", "3 PARIS 2008 02:06:40 7600 7937.028571\n", "4 PARIS 2007 02:07:17 7637 7937.028571"]}, "execution_count": 16, "metadata": {}, "output_type": "execute_result"}], "source": ["# \u00e9tape 2 - on ajoute une colonne\n", "tout = df.merge( gr, on=\"ville\")\n", "tout.head()"]}, {"cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " ville | \n", " AMSTERDAM | \n", " BERLIN | \n", " BOSTON | \n", " CHICAGO | \n", " FUKUOKA | \n", " LONDON | \n", " NEW YORK | \n", " PARIS | \n", " STOCKOLM | \n", "
\n", " \n", " annee | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", "
\n", " \n", " \n", " \n", " 2007 | \n", " 7589.0 | \n", " 7466.0 | \n", " 8053.0 | \n", " 7871.0 | \n", " 7599.0 | \n", " 7661.0 | \n", " 7744.0 | \n", " 7637.0 | \n", " 8456.0 | \n", "
\n", " \n", " 2008 | \n", " 7672.0 | \n", " 7439.0 | \n", " 7665.0 | \n", " 7585.0 | \n", " 7570.0 | \n", " 7515.0 | \n", " 7723.0 | \n", " 7600.0 | \n", " 8163.0 | \n", "
\n", " \n", " 2009 | \n", " 7578.0 | \n", " 7568.0 | \n", " 7722.0 | \n", " 7541.0 | \n", " 7518.0 | \n", " 7510.0 | \n", " 7755.0 | \n", " 7547.0 | \n", " 8134.0 | \n", "
\n", " \n", " 2010 | \n", " 7544.0 | \n", " 7508.0 | \n", " 7552.0 | \n", " 7583.0 | \n", " 7704.0 | \n", " 7519.0 | \n", " 7694.0 | \n", " 7601.0 | \n", " 7968.0 | \n", "
\n", " \n", " 2011 | \n", " NaN | \n", " 7418.0 | \n", " 7382.0 | \n", " NaN | \n", " NaN | \n", " 7480.0 | \n", " NaN | \n", " 7589.0 | \n", " 8047.0 | \n", "
\n", " \n", "
\n", "
"], "text/plain": ["ville AMSTERDAM BERLIN BOSTON CHICAGO FUKUOKA LONDON NEW YORK PARIS \\\n", "annee \n", "2007 7589.0 7466.0 8053.0 7871.0 7599.0 7661.0 7744.0 7637.0 \n", "2008 7672.0 7439.0 7665.0 7585.0 7570.0 7515.0 7723.0 7600.0 \n", "2009 7578.0 7568.0 7722.0 7541.0 7518.0 7510.0 7755.0 7547.0 \n", "2010 7544.0 7508.0 7552.0 7583.0 7704.0 7519.0 7694.0 7601.0 \n", "2011 NaN 7418.0 7382.0 NaN NaN 7480.0 NaN 7589.0 \n", "\n", "ville STOCKOLM \n", "annee \n", "2007 8456.0 \n", "2008 8163.0 \n", "2009 8134.0 \n", "2010 7968.0 \n", "2011 8047.0 "]}, "execution_count": 17, "metadata": {}, "output_type": "execute_result"}], "source": ["# \u00e9tape 3\n", "piv = tout.pivot(\"annee\",\"ville\",\"secondes_x\")\n", "piv.tail()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["A partir de l\u00e0, on ne voit pas trop comment s'en sortir. Voici ce que je propose :\n", "\n", "1. On effectue un pivot sur la petite matrice des moyennes.\n", "2. On ajoute ce second pivot avec le premier (celui de l'\u00e9nonc\u00e9)."]}, {"cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " ville | \n", " AMSTERDAM | \n", " BERLIN | \n", " BOSTON | \n", " CHICAGO | \n", " FUKUOKA | \n", " LONDON | \n", " NEW YORK | \n", " PARIS | \n", " STOCKOLM | \n", "
\n", " \n", " annee | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", "
\n", " \n", " \n", " \n", " moyenne | \n", " 7883.371429 | \n", " 7922.315789 | \n", " 7891.061224 | \n", " 7815.909091 | \n", " 8075.1875 | \n", " 7695.16129 | \n", " 7928.560976 | \n", " 7937.028571 | \n", " 8133.393939 | \n", "
\n", " \n", "
\n", "
"], "text/plain": ["ville AMSTERDAM BERLIN BOSTON CHICAGO FUKUOKA \\\n", "annee \n", "moyenne 7883.371429 7922.315789 7891.061224 7815.909091 8075.1875 \n", "\n", "ville LONDON NEW YORK PARIS STOCKOLM \n", "annee \n", "moyenne 7695.16129 7928.560976 7937.028571 8133.393939 "]}, "execution_count": 18, "metadata": {}, "output_type": "execute_result"}], "source": ["gr[\"annee\"] = \"moyenne\"\n", "pivmean = gr.pivot(\"annee\",\"ville\",\"secondes\")\n", "pivmean"]}, {"cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " ville | \n", " AMSTERDAM | \n", " BERLIN | \n", " BOSTON | \n", " CHICAGO | \n", " FUKUOKA | \n", " LONDON | \n", " NEW YORK | \n", " PARIS | \n", " STOCKOLM | \n", "
\n", " \n", " annee | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", "
\n", " \n", " \n", " \n", " 2008 | \n", " 7672.000000 | \n", " 7439.000000 | \n", " 7665.000000 | \n", " 7585.000000 | \n", " 7570.0000 | \n", " 7515.00000 | \n", " 7723.000000 | \n", " 7600.000000 | \n", " 8163.000000 | \n", "
\n", " \n", " 2009 | \n", " 7578.000000 | \n", " 7568.000000 | \n", " 7722.000000 | \n", " 7541.000000 | \n", " 7518.0000 | \n", " 7510.00000 | \n", " 7755.000000 | \n", " 7547.000000 | \n", " 8134.000000 | \n", "
\n", " \n", " 2010 | \n", " 7544.000000 | \n", " 7508.000000 | \n", " 7552.000000 | \n", " 7583.000000 | \n", " 7704.0000 | \n", " 7519.00000 | \n", " 7694.000000 | \n", " 7601.000000 | \n", " 7968.000000 | \n", "
\n", " \n", " 2011 | \n", " NaN | \n", " 7418.000000 | \n", " 7382.000000 | \n", " NaN | \n", " NaN | \n", " 7480.00000 | \n", " NaN | \n", " 7589.000000 | \n", " 8047.000000 | \n", "
\n", " \n", " moyenne | \n", " 7883.371429 | \n", " 7922.315789 | \n", " 7891.061224 | \n", " 7815.909091 | \n", " 8075.1875 | \n", " 7695.16129 | \n", " 7928.560976 | \n", " 7937.028571 | \n", " 8133.393939 | \n", "
\n", " \n", "
\n", "
"], "text/plain": ["ville AMSTERDAM BERLIN BOSTON CHICAGO FUKUOKA \\\n", "annee \n", "2008 7672.000000 7439.000000 7665.000000 7585.000000 7570.0000 \n", "2009 7578.000000 7568.000000 7722.000000 7541.000000 7518.0000 \n", "2010 7544.000000 7508.000000 7552.000000 7583.000000 7704.0000 \n", "2011 NaN 7418.000000 7382.000000 NaN NaN \n", "moyenne 7883.371429 7922.315789 7891.061224 7815.909091 8075.1875 \n", "\n", "ville LONDON NEW YORK PARIS STOCKOLM \n", "annee \n", "2008 7515.00000 7723.000000 7600.000000 8163.000000 \n", "2009 7510.00000 7755.000000 7547.000000 8134.000000 \n", "2010 7519.00000 7694.000000 7601.000000 7968.000000 \n", "2011 7480.00000 NaN 7589.000000 8047.000000 \n", "moyenne 7695.16129 7928.560976 7937.028571 8133.393939 "]}, "execution_count": 19, "metadata": {}, "output_type": "execute_result"}], "source": ["piv = df.pivot(\"annee\",\"ville\",\"secondes\")\n", "pandas.concat( [ piv, pivmean ]).tail()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["En r\u00e9sum\u00e9, cela donne (j'ajoute aussi le nombre de marathons courus) :"]}, {"cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " ville | \n", " AMSTERDAM | \n", " BERLIN | \n", " BOSTON | \n", " CHICAGO | \n", " FUKUOKA | \n", " LONDON | \n", " NEW YORK | \n", " PARIS | \n", " STOCKOLM | \n", "
\n", " \n", " annee | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", "
\n", " \n", " \n", " \n", " 2008 | \n", " 7672.000000 | \n", " 7439.000000 | \n", " 7665.000000 | \n", " 7585.000000 | \n", " 7570.0000 | \n", " 7515.00000 | \n", " 7723.000000 | \n", " 7600.000000 | \n", " 8163.000000 | \n", "
\n", " \n", " 2009 | \n", " 7578.000000 | \n", " 7568.000000 | \n", " 7722.000000 | \n", " 7541.000000 | \n", " 7518.0000 | \n", " 7510.00000 | \n", " 7755.000000 | \n", " 7547.000000 | \n", " 8134.000000 | \n", "
\n", " \n", " 2010 | \n", " 7544.000000 | \n", " 7508.000000 | \n", " 7552.000000 | \n", " 7583.000000 | \n", " 7704.0000 | \n", " 7519.00000 | \n", " 7694.000000 | \n", " 7601.000000 | \n", " 7968.000000 | \n", "
\n", " \n", " 2011 | \n", " NaN | \n", " 7418.000000 | \n", " 7382.000000 | \n", " NaN | \n", " NaN | \n", " 7480.00000 | \n", " NaN | \n", " 7589.000000 | \n", " 8047.000000 | \n", "
\n", " \n", " moyenne | \n", " 7883.371429 | \n", " 7922.315789 | \n", " 7891.061224 | \n", " 7815.909091 | \n", " 8075.1875 | \n", " 7695.16129 | \n", " 7928.560976 | \n", " 7937.028571 | \n", " 8133.393939 | \n", "
\n", " \n", "
\n", "
"], "text/plain": ["ville AMSTERDAM BERLIN BOSTON CHICAGO FUKUOKA \\\n", "annee \n", "2008 7672.000000 7439.000000 7665.000000 7585.000000 7570.0000 \n", "2009 7578.000000 7568.000000 7722.000000 7541.000000 7518.0000 \n", "2010 7544.000000 7508.000000 7552.000000 7583.000000 7704.0000 \n", "2011 NaN 7418.000000 7382.000000 NaN NaN \n", "moyenne 7883.371429 7922.315789 7891.061224 7815.909091 8075.1875 \n", "\n", "ville LONDON NEW YORK PARIS STOCKOLM \n", "annee \n", "2008 7515.00000 7723.000000 7600.000000 8163.000000 \n", "2009 7510.00000 7755.000000 7547.000000 8134.000000 \n", "2010 7519.00000 7694.000000 7601.000000 7968.000000 \n", "2011 7480.00000 NaN 7589.000000 8047.000000 \n", "moyenne 7695.16129 7928.560976 7937.028571 8133.393939 "]}, "execution_count": 20, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas, urllib.request\n", "from ensae_teaching_cs.data import marathon\n", "df = pandas.read_csv(marathon(filename=True), \n", " sep=\"\\t\", names=[\"ville\", \"annee\", \"temps\",\"secondes\"])\n", "piv = df.pivot(\"annee\",\"ville\",\"secondes\")\n", "gr = df[[\"ville\",\"secondes\"]].groupby(\"ville\", as_index=False).mean()\n", "gr[\"annee\"] = \"moyenne\"\n", "pivmean = gr.pivot(\"annee\",\"ville\",\"secondes\")\n", "\n", "pandas.concat([piv, pivmean]).tail()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Exercice 4 : \u00e9cart entre les mari\u00e9s
\n", "\n", "1. En ajoutant une colonne et en utilisant l'op\u00e9ration [group by](http://pandas.pydata.org/pandas-docs/stable/groupby.html), on veut obtenir la distribution du nombre de mariages en fonction de l'\u00e9cart entre les mari\u00e9s. Au besoin, on changera le type d'une colone ou deux.\n", "2. On veut tracer un nuage de points avec en abscisse l'\u00e2ge du mari, en ordonn\u00e9e, l'\u00e2ge de la femme. Il faudra peut-\u00eatre jeter un coup d'oeil sur la documentation de la m\u00e9thode [plot](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html)."]}, {"cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["Download of etatcivil2012_mar2012_dbase.zip: DONE!\n", "Download of etatcivil2012_nais2012_dbase.zip: DONE!\n", "Download of etatcivil2012_dec2012_dbase.zip: DONE!\n"]}], "source": ["import urllib.request\n", "import zipfile\n", "import http.client\n", "\n", "def download_and_save(name, root_url):\n", " try:\n", " response = urllib.request.urlopen(root_url+name)\n", " except (TimeoutError, urllib.request.URLError, http.client.BadStatusLine):\n", " # back up plan\n", " root_url = \"http://www.xavierdupre.fr/enseignement/complements/\"\n", " response = urllib.request.urlopen(root_url+name)\n", " with open(name, \"wb\") as outfile:\n", " outfile.write(response.read())\n", "\n", "def unzip(name):\n", " with zipfile.ZipFile(name, \"r\") as z:\n", " z.extractall(\".\")\n", "\n", "filenames = [\"etatcivil2012_mar2012_dbase.zip\", \n", " \"etatcivil2012_nais2012_dbase.zip\",\n", " \"etatcivil2012_dec2012_dbase.zip\", ]\n", "root_url = 'http://telechargement.insee.fr/fichiersdetail/etatcivil2012/dbase/'\n", "\n", "for filename in filenames:\n", " download_and_save(filename, root_url)\n", " unzip(filename)\n", " print(\"Download of {}: DONE!\".format(filename))"]}, {"cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["use of zipped version\n", "(246123, 16) Index(['AMAR', 'ANAISF', 'ANAISH', 'DEPDOM', 'DEPMAR', 'DEPNAISF', 'DEPNAISH',\n", " 'ETAMATF', 'ETAMATH', 'INDNATF', 'INDNATH', 'JSEMAINE', 'MMAR',\n", " 'NBENFCOM', 'TUCOM', 'TUDOM'],\n", " dtype='object')\n"]}, {"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " AMAR | \n", " ANAISF | \n", " ANAISH | \n", " DEPDOM | \n", " DEPMAR | \n", " DEPNAISF | \n", " DEPNAISH | \n", " ETAMATF | \n", " ETAMATH | \n", " INDNATF | \n", " INDNATH | \n", " JSEMAINE | \n", " MMAR | \n", " NBENFCOM | \n", " TUCOM | \n", " TUDOM | \n", "
\n", " \n", " \n", " \n", " 0 | \n", " 2012 | \n", " 1984 | \n", " 1982 | \n", " 99 | \n", " 29 | \n", " 99 | \n", " 75 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 1 | \n", " 1 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", "
\n", " \n", " 1 | \n", " 2012 | \n", " 1969 | \n", " 1956 | \n", " 99 | \n", " 75 | \n", " 99 | \n", " 69 | \n", " 4 | \n", " 4 | \n", " 2 | \n", " 2 | \n", " 3 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", "
\n", " \n", " 2 | \n", " 2012 | \n", " 1992 | \n", " 1982 | \n", " 99 | \n", " 34 | \n", " 99 | \n", " 99 | \n", " 1 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 5 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", "
\n", " \n", " 3 | \n", " 2012 | \n", " 1987 | \n", " 1985 | \n", " 99 | \n", " 13 | \n", " 84 | \n", " 99 | \n", " 1 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 4 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", "
\n", " \n", " 4 | \n", " 2012 | \n", " 1963 | \n", " 1968 | \n", " 99 | \n", " 26 | \n", " 99 | \n", " 99 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 2 | \n", " 6 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", "
\n", " \n", "
\n", "
"], "text/plain": [" AMAR ANAISF ANAISH DEPDOM DEPMAR DEPNAISF DEPNAISH ETAMATF ETAMATH \\\n", "0 2012 1984 1982 99 29 99 75 1 1 \n", "1 2012 1969 1956 99 75 99 69 4 4 \n", "2 2012 1992 1982 99 34 99 99 1 1 \n", "3 2012 1987 1985 99 13 84 99 1 1 \n", "4 2012 1963 1968 99 26 99 99 1 1 \n", "\n", " INDNATF INDNATH JSEMAINE MMAR NBENFCOM TUCOM TUDOM \n", "0 2 1 1 1 N NaN 9 \n", "1 2 2 3 1 N NaN 9 \n", "2 1 2 5 1 N NaN 9 \n", "3 1 2 4 1 N NaN 9 \n", "4 2 2 6 1 N NaN 9 "]}, "execution_count": 22, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas\n", "try:\n", " from dbfread_ import DBF\n", " use_dbfread = True\n", "except ImportError as e :\n", " use_dbfread = False\n", " \n", "if use_dbfread:\n", " print(\"use of dbfread\")\n", " def dBase2df(dbase_filename):\n", " table = DBF(dbase_filename, load=True, encoding=\"cp437\")\n", " return pandas.DataFrame(table.records)\n", "\n", " df = dBase2df('mar2012.dbf')\n", "else :\n", " print(\"use of zipped version\")\n", " import pyensae.datasource\n", " data = pyensae.datasource.download_data(\"mar2012.zip\")\n", " df = pandas.read_csv(data[0], sep=\"\\t\", encoding=\"utf8\", low_memory=False) \n", " \n", "print(df.shape, df.columns)\n", "df.head()"]}, {"cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [{"data": {"text/html": ["\n", "\n", "
\n", " \n", " \n", " | \n", " AMAR | \n", " ANAISF | \n", " ANAISH | \n", " DEPDOM | \n", " DEPMAR | \n", " DEPNAISF | \n", " DEPNAISH | \n", " ETAMATF | \n", " ETAMATH | \n", " INDNATF | \n", " INDNATH | \n", " JSEMAINE | \n", " MMAR | \n", " NBENFCOM | \n", " TUCOM | \n", " TUDOM | \n", " ageH | \n", " ageF | \n", "
\n", " \n", " \n", " \n", " 0 | \n", " 2012 | \n", " 1984 | \n", " 1982 | \n", " 99 | \n", " 29 | \n", " 99 | \n", " 75 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 1 | \n", " 1 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", " 32 | \n", " 30 | \n", "
\n", " \n", " 1 | \n", " 2012 | \n", " 1969 | \n", " 1956 | \n", " 99 | \n", " 75 | \n", " 99 | \n", " 69 | \n", " 4 | \n", " 4 | \n", " 2 | \n", " 2 | \n", " 3 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", " 58 | \n", " 45 | \n", "
\n", " \n", " 2 | \n", " 2012 | \n", " 1992 | \n", " 1982 | \n", " 99 | \n", " 34 | \n", " 99 | \n", " 99 | \n", " 1 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 5 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", " 32 | \n", " 22 | \n", "
\n", " \n", " 3 | \n", " 2012 | \n", " 1987 | \n", " 1985 | \n", " 99 | \n", " 13 | \n", " 84 | \n", " 99 | \n", " 1 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 4 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", " 29 | \n", " 27 | \n", "
\n", " \n", " 4 | \n", " 2012 | \n", " 1963 | \n", " 1968 | \n", " 99 | \n", " 26 | \n", " 99 | \n", " 99 | \n", " 1 | \n", " 1 | \n", " 2 | \n", " 2 | \n", " 6 | \n", " 1 | \n", " N | \n", " NaN | \n", " 9 | \n", " 46 | \n", " 51 | \n", "
\n", " \n", "
\n", "
"], "text/plain": [" AMAR ANAISF ANAISH DEPDOM DEPMAR DEPNAISF DEPNAISH ETAMATF ETAMATH \\\n", "0 2012 1984 1982 99 29 99 75 1 1 \n", "1 2012 1969 1956 99 75 99 69 4 4 \n", "2 2012 1992 1982 99 34 99 99 1 1 \n", "3 2012 1987 1985 99 13 84 99 1 1 \n", "4 2012 1963 1968 99 26 99 99 1 1 \n", "\n", " INDNATF INDNATH JSEMAINE MMAR NBENFCOM TUCOM TUDOM ageH ageF \n", "0 2 1 1 1 N NaN 9 32 30 \n", "1 2 2 3 1 N NaN 9 58 45 \n", "2 1 2 5 1 N NaN 9 32 22 \n", "3 1 2 4 1 N NaN 9 29 27 \n", "4 2 2 6 1 N NaN 9 46 51 "]}, "execution_count": 23, "metadata": {}, "output_type": "execute_result"}], "source": ["df[\"ageH\"] = df.apply (lambda r: 2014 - int(r[\"ANAISH\"]), axis=1)\n", "df[\"ageF\"] = df.apply (lambda r: 2014 - int(r[\"ANAISF\"]), axis=1)\n", "df.head()"]}, {"cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [{"data": {"text/plain": [""]}, "execution_count": 24, "metadata": {}, "output_type": "execute_result"}, {"data": {"image/png": "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\ngg==\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["df.plot(x=\"ageH\",y=\"ageF\", kind=\"scatter\")"]}, {"cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [{"data": {"text/plain": [""]}, "execution_count": 25, "metadata": {}, "output_type": "execute_result"}, {"data": {"image/png": "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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["df.plot(x=\"ageH\",y=\"ageF\", kind=\"hexbin\")"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Exercice 5 : graphe de la distribution avec pandas
\n", "\n", "Le module ``pandas`` propose un panel de graphiques standard faciles \u00e0 obtenir. On souhaite repr\u00e9senter la distribution sous forme d'histogramme. A vous de choisir le meilleure graphique depuis la page [Visualization](http://pandas.pydata.org/pandas-docs/stable/visualization.html)."]}, {"cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [{"data": {"text/plain": [""]}, "execution_count": 26, "metadata": {}, "output_type": "execute_result"}, {"data": {"image/png": "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\nnjfffDOnnXZa7rrrrpx11llJkhdffDHr1q3LuHHjcsstt6S9vT1J0tPTk9WrV2doaChXX311Fi5c\neGxeLQAAAMeVUV+p/fnPf56pU6cOf/3ss8/mmmuuyWOPPZYJEyZk3bp1SZJ169ZlwoQJeeyxx3LN\nNdfkJz/5SZJk586d2bRpUx599NHcf//9WbVqVYaGhjI0NJRVq1blvvvuS1dXV15++eXs3LnzKL9M\nAAAAjkejitq+vr5s2bIlV199dZKkXq/n9ddfz5w5c5IkCxYsSHd3d5Jk8+bNWbBgQZJkzpw5+eUv\nf5l6vZ7u7u7MnTs3J510Us4666xMnjw5O3bsyI4dOzJ58uScffbZaW5uzty5c4d/FgAAAHyWUUXt\nM888kxtvvDGVSiVJsn///owfPz5NTU1Jkmq1mlqtliSp1Wppa2tLkjQ1NWX8+PHZv3//J45//Ht+\n+3hbW9vwzwIAAIDPMuJ7al999dVMnDgx06ZNy+uvv/55zPR7rV27NmvXrk2SLFu2LJMmTWroPM3N\nzQ2fgbHPnjASO3JieLvBz2/HTgzOJ4zEjjAape3JiFH7m9/8Jps3b87WrVtz6NChHDx4MM8880ze\ne++9DA4OpqmpKbVaLdVqNcmHV2D7+vrS1taWwcHBvPfeeznttNOGj3/k49/z8eN9fX3Dx39bZ2dn\nOjs7h7/eu3fvkb3qo2TSpEkNn4Gxz54wEjvC58GOnRicTxiJHWE0xsKeTJkyZdSPHfH2469//et5\n8skns3Llytx11125+OKLc+edd+aiiy7KK6+8kiRZv359Ojo6kiSXXnpp1q9fnyR55ZVXctFFF6VS\nqaSjoyObNm3KBx98kN7e3uzevTvTp0/P+eefn927d6e3tzeHDx/Opk2bhn8WAAAAfJZR/0qf3/aN\nb3wjy5cvz3PPPZfzzjsvV111VZLkqquuyuOPP57FixenpaUld911V5LknHPOyeWXX57vfOc7GTdu\nXL75zW9m3LgPm/rWW2/N0qVLMzQ0lCuvvDLnnHPOUXhpAHD0DN52baNHAAA+RaVer9cbPcSR2rVr\nV0OffyxclmfssyeMxI6UofSobXrqp40egc+B8wkjsSOMxljYk6N6+zEAAACMVaIWAACAYolaAAAA\niiVqAQAAKJaoBQAAoFiiFgAAgGKJWgAAAIolagEAACiWqAUAAKBYohYAAIBiiVoAAACKJWoBAAAo\nlqgFAACgWKIWAACAYolaAAAAiiVqAQAAKJaoBQAAoFiiFgAAgGKJWgAAAIolagEAACiWqAUAAKBY\nohYAAIBiiVoAAACKJWoBAAAolqgFAACgWKIWAACAYolaAAAAiiVqAQAAKJaoBQAAoFiiFgAAgGKJ\nWgAAAIolagEAAChWc6MHAIBjbfC2axs9AgBwjLhSCwAAQLFELQAAAMUStQAAABRL1AIAAFAsUQsA\nAECxRC0AAADFErUAAAAUS9QCAABQLFELAABAsUQtAAAAxRK1AAAAFEvUAgAAUCxRCwAAQLFELQAA\nAMVqHukBhw4dygMPPJDDhw9ncHAwc+bMyVe/+tX09vZm+fLl2b9/f6ZNm5bFixenubk5H3zwQR5/\n/PG8+eabOe2003LXXXflrLPOSpK8+OKLWbduXcaNG5dbbrkl7e3tSZKenp6sXr06Q0NDufrqq7Nw\n4cJj+6oBAAA4Lox4pfakk07KAw88kIcffjj/+I//mJ6enmzfvj3PPvtsrrnmmjz22GOZMGFC1q1b\nlyRZt25dJkyYkMceeyzXXHNNfvKTnyRJdu7cmU2bNuXRRx/N/fffn1WrVmVoaChDQ0NZtWpV7rvv\nvnR1deXll1/Ozp07j+2rBgAA4LgwYtRWKpV84QtfSJIMDg5mcHAwlUolr7/+eubMmZMkWbBgQbq7\nu5MkmzdvzoIFC5Ikc+bMyS9/+cvU6/V0d3dn7ty5Oemkk3LWWWdl8uTJ2bFjR3bs2JHJkyfn7LPP\nTnNzc+bOnTv8swAAAOCzjHj7cZIMDQ3lnnvuyZ49e/IXf/EXOfvsszN+/Pg0NTUlSarVamq1WpKk\nVqulra0tSdLU1JTx48dn//79qdVqueCCC4Z/5se/56PHf/TPb7zxxtF5dQAAABzXRhW148aNy8MP\nP5wDBw7khz/8YXbt2nWs5/pUa9euzdq1a5Mky5Yty6RJkxoyx0eam5sbPgNjnz1hJHbk2Hu70QOM\nAXbsxOB8wkjsCKNR2p6MKmo/MmHChFx00UXZvn173nvvvQwODqapqSm1Wi3VajXJh1dg+/r60tbW\nlsHBwbz33ns57bTTho9/5OPf8/HjfX19w8d/W2dnZzo7O4e/3rt37//P+EfdpEmTGj4DY589YSR2\nhM+DHTsxOJ8wEjvCaIyFPZkyZcqoHzvie2r/53/+JwcOHEjy4Schv/baa5k6dWouuuiivPLKK0mS\n9evXp6OjI0ly6aWXZv369UmSV155JRdddFEqlUo6OjqyadOmfPDBB+nt7c3u3bszffr0nH/++dm9\ne3d6e3tz+PDhbNq0afhnAQAAwGcZ8Uptf39/Vq5cmaGhodTr9Vx++eW59NJL88UvfjHLly/Pc889\nl/POOy9XXXVVkuSqq67K448/nsWLF6elpSV33XVXkuScc87J5Zdfnu985zsZN25cvvnNb2bcuA+b\n+tZbb83SpUszNDSUK6+8Muecc84xfMkAAAAcLyr1er3e6CGOVKPe2/uRsXBZnrHPnjASO3LsDd52\nbaNHaLimp37a6BH4HDifMBI7wmiMhT05qrcfAwAAwFglagEAACiWqAUAAKBYohYAAIBiiVoAAACK\nJWoBAAAolqgFAACgWKIWAACAYolaAAAAiiVqAQAAKJaoBQAAoFiiFgAAgGKJWgAAAIolagEAACiW\nqAUAAKBYohYAAIBiiVoAAACKJWoBAAAolqgFAACgWKIWAACAYolaAAAAiiVqAQAAKJaoBQAAoFii\nFgAAgGKJWgAAAIolagEAACiWqAUAAKBYohYAAIBiiVoAAACKJWoBAAAolqgFAACgWKIWAACAYola\nAAAAiiVqAQAAKJaoBQAAoFiiFgAAgGKJWgAAAIolagEAACiWqAUAAKBYohYAAIBiiVoAAACKJWoB\nAAAolqgFAACgWKIWAACAYolaAAAAiiVqAQAAKJaoBQAAoFiiFgAAgGI1j/SAvXv3ZuXKlXn33XdT\nqVTS2dmZL3/5yxkYGEhXV1feeeednHnmmbn77rvT0tKSer2e1atXZ+vWrTnllFOyaNGiTJs2LUmy\nfv36vPDCC0mS6667LgsWLEiSvPnmm1m5cmUOHTqU2bNn55ZbbkmlUjl2rxoAAIDjwohXapuamnLT\nTTelq6srS5cuzUsvvZSdO3dmzZo1mTlzZlasWJGZM2dmzZo1SZKtW7dmz549WbFiRW6//fY8/fTT\nSZKBgYE8//zzefDBB/Pggw/m+eefz8DAQJLkqaeeyh133JEVK1Zkz5496enpOYYvGQAAgOPFiFHb\n2to6fKX11FNPzdSpU1Or1dLd3Z358+cnSebPn5/u7u4kyebNmzNv3rxUKpXMmDEjBw4cSH9/f3p6\nejJr1qy0tLSkpaUls2bNSk9PT/r7+3Pw4MHMmDEjlUol8+bNG/5ZAAAA8FlGvP3443p7e/PWW29l\n+vTp2bdvX1pbW5MkZ5xxRvbt25ckqdVqmTRp0vD3tLW1pVarpVarpa2tbfh4tVr91OMfPf7TrF27\nNmvXrk2SLFu27BPP0wjNzc0Nn4Gxz54wEjty7L3d6AHGADt2YnA+YSR2hNEobU9GHbXvv/9+Hnnk\nkdx8880ZP378J/5dpVL5XN4D29nZmc7OzuGv9+7de8yf87NMmjSp4TMw9tkTRmJH+DzYsROD8wkj\nsSOMxljYkylTpoz6saP69OPDhw/nkUceyRVXXJEvfelLSZKJEyemv78/SdLf35/TTz89yYdXYD/+\nP0BfX1+q1Wqq1Wr6+vqGj9dqtU89/tHjAQAAYCQjRm29Xs+TTz6ZqVOn5itf+crw8Y6OjmzYsCFJ\nsmHDhlx22WXDxzdu3Jh6vZ7t27dn/PjxaW1tTXt7e7Zt25aBgYEMDAxk27ZtaW9vT2tra0499dRs\n37499Xo9GzduTEdHxzF6uQAAABxPRrz9+De/+U02btyYc889N9/97neTJF/72teycOHCdHV1Zd26\ndcO/0idJZs+enS1btuTOO+/MySefnEWLFiVJWlpacv311+fee+9Nktxwww1paWlJknzrW9/KE088\nkUOHDqW9vT2zZ88+Ji8WAACA40ulXq/XGz3Ekdq1a1dDn38s3GvO2GdPGIkdOfYGb7u20SM0XNNT\nP230CHwOnE8YiR1hNMbCnhz199QCAADAWCRqAQAAKJaoBQAAoFiiFgAAgGKJWgAAAIolagEAACiW\nqAUAAKBYohYAAIBiiVoAAACKJWoBAAAolqgFAACgWKIWAACAYolaAAAAiiVqAQAAKJaoBQAAoFii\nFgAAgGKJWgAAAIolagEAACiWqAUAAKBYohYAAIBiiVoAAACKJWoBAAAolqgFAACgWKIWAACAYola\nAAAAiiVqAQAAKJaoBQAAoFiiFgAAgGKJWgAAAIolagEAACiWqAUAAKBYohYAAIBiiVoAAACKJWoB\nAAAolqgFAACgWKIWAACAYolaAAAAitXc6AEAYCSDt13b6BEAgDHKlVoAAACKJWoBAAAoltuPAeAE\n8Ifewt301E+P0iQAcHS5UgsAAECxRC0AAADFErUAAAAUS9QCAABQLFELAABAsUQtAAAAxRrxV/o8\n8cQT2bJlSyZOnJhHHnkkSTIwMJCurq688847OfPMM3P33XenpaUl9Xo9q1evztatW3PKKadk0aJF\nmTZtWpJk/fr1eeGFF5Ik1113XRYsWJAkefPNN7Ny5cocOnQos2fPzi233JJKpXKMXi4AAADHkxGv\n1C5YsCD33XffJ46tWbMmM2fOzIoVKzJz5sysWbMmSbJ169bs2bMnK1asyO23356nn346yYcR/Pzz\nz+fBBx/Mgw8+mOeffz4DAwNJkqeeeip33HFHVqxYkT179qSnp+dov0YAAACOUyNG7YUXXpiWlpZP\nHOvu7s78+fOTJPPnz093d3eSZPPmzZk3b14qlUpmzJiRAwcOpL+/Pz09PZk1a1ZaWlrS0tKSWbNm\npaenJ/39/Tl48GBmzJiRSqWSefPmDf8sAAAAGMkRvad23759aW1tTZKcccYZ2bdvX5KkVqtl0qRJ\nw49ra2tLrVZLrVZLW1vb8PFqtfqpxz96PAAAAIzGiO+pHUmlUvnc3gO7du3arF27NkmybNmyTwR0\nIzQ3Nzd8BsY+e8JI7MjI3m70ANjRQjifMBI7wmiUtidHFLUTJ05Mf39/Wltb09/fn9NPPz3Jh1dg\n9+7dO/y4vr6+VKvVVKvV/OpXvxo+XqvVcuGFF6Zaraavr+93Hv/7dHZ2prOzc/jrjz9XI0yaNKnh\nMzD22RNGYkcogR0tg/MJI7EjjMZY2JMpU6aM+rFHdPtxR0dHNmzYkCTZsGFDLrvssuHjGzduTL1e\nz/bt2zN+/Pi0tramvb0927Zty8DAQAYGBrJt27a0t7entbU1p556arZv3556vZ6NGzemo6PjSEYC\nAADgBDTildrly5fnV7/6Vfbv35+/+Zu/yVe/+tUsXLgwXV1dWbdu3fCv9EmS2bNnZ8uWLbnzzjtz\n8sknZ9GiRUmSlpaWXH/99bn33nuTJDfccMPwh09961vfyhNPPJFDhw6lvb09s2fPPlavFQAAgONM\npV6v1xs9xJHatWtXQ59/LFyWZ+yzJ4zEjoxs8LZrGz3CCa/pqZ82egRGwfmEkdgRRmMs7Mkxv/0Y\nAAAAxgJRCwAAQLFELQAAAMUStQAAABRL1AIAAFCsEX+lDwD8oXx6cfmOxv+HPkEZgGPBlVoAAACK\nJWoBAAAolqgFAACgWKIWAACAYolaAAAAiuXTjwEYkU8vBgDGKldqAQAAKJaoBQAAoFiiFgAAgGKJ\nWgAAAIolagEAACiWqAUAAKBYohYAAIBiiVoAAACKJWoBAAAolqgFAACgWKIWAACAYolaAAAAiiVq\nAQAAKJaoBQAAoFiiFgAAgGKJWgAAAIolagEAACiWqAUAAKBYohYAAIBiiVoAAACKJWoBAAAolqgF\nAACgWKIWAACAYolaAAAAitXc6AEAOLYGb7u20SNAkj98F5ue+ulRmgSA44krtQAAABRL1AIAAFAs\nUQsAAECxRC0AAADF8kFRAMfYSB+O8/bnNAcAwPFI1AIARfDpyQB8GlELAJwQRDHA8cl7agEAACiW\nqAUAAKBYohYAAIBijZn31Pb09GT16tUZGhrK1VdfnYULFzZ6JIAkf/j78AAAOHbGRNQODQ1l1apV\n+d73vpe2trbce++96ejoyBe/+MVGjwY0mKAExoqjcT7yYVMAR9+YiNodO3Zk8uTJOfvss5Mkc+fO\nTXd3t6gFAI4rx/ov6kb6vdeiGjgejYmordVqaWtrG/66ra0tb7zxRgMnguODq5wAfNxY+HNBWANH\n25iI2tFau3Zt1q5dmyRZtmxZpkyZ0uCJMiZmYOxr2J78382NeV4AYMzy36+MRkl7MiY+/bharaav\nr2/4676+vlSr1d95XGdnZ5YtW5Zly5Z9nuP9XkuWLGn0CBTAnjASO8Jo2BNGw54wEjvCaJS2J2Mi\nas8///zs3r07vb29OXz4cDZt2pSOjo5GjwUAAMAYNyZuP25qasqtt96apUuXZmhoKFdeeWXOOeec\nRo8FAADAGDcmojZJLrnkklxyySWNHuP/S2dnZ6NHoAD2hJHYEUbDnjAa9oSR2BFGo7Q9qdTr9Xqj\nhwAAAIAjMSbeUwsAAABHYszcflyaf/7nf85LL72UcePG5ZJLLsmNN96YJHnxxRezbt26jBs3Lrfc\nckva29sbPCmN9rOf/Sw//vGP8/TTT+f0009PvV7P6tWrs3Xr1pxyyilZtGhRpk2b1ugxaYAf//jH\nefXVV9Pc3Jyzzz47ixYtyoQJE5I4l/C/enp6snr16gwNDeXqq6/OwoULGz0SY8DevXuzcuXKvPvu\nu6lUKuns7MyXv/zlDAwMpKurK++8807OPPPM3H333WlpaWn0uDTQ0NBQlixZkmq1miVLlqS3tzfL\nly/P/v37M23atCxevDjNzZLgRHbgwIE8+eST+e///u9UKpX87d/+baZMmVLUucSV2iPwy1/+Mps3\nb87DDz+cRx99NH/5l3+ZJNm5c2c2bdqURx99NPfff39WrVqVoaGhBk9LI+3duzevvfZaJk2aNHxs\n69at2bNnT1asWJHbb789Tz/9dAMnpJFmzZqVRx55JD/84Q/zR3/0R3nxxReTOJfwv4aGhrJq1arc\nd9996erqyssvv5ydO3c2eizGgKamptx0003p6urK0qVL89JLL2Xnzp1Zs2ZNZs6cmRUrVmTmzJlZ\ns2ZNo0elwX7+859n6tSpw18/++yzueaaa/LYY49lwoQJWbduXQOnYyxYvXp12tvbs3z58jz88MOZ\nOnVqcecSUXsEfvGLX+Sv/uqvctJJJyVJJk6cmCTp7u7O3Llzc9JJJ+Wss87K5MmTs2PHjkaOSoP9\n6Ec/yje+8Y1UKpXhY5s3b868efNSqVQyY8aMHDhwIP39/Q2ckkb5kz/5kzQ1NSVJZsyYkVqtlsS5\nhP+1Y8eOTJ48OWeffXaam5szd+7cdHd3N3osxoDW1tbhu3xOPfXUTJ06NbVaLd3d3Zk/f36SZP78\n+fblBNfX15ctW7bk6quvTpLU6/W8/vrrmTNnTpJkwYIFduQE99577+Xf/u3fctVVVyVJmpubM2HC\nhOLOJe41OAK7d+/Or3/96zz33HM56aSTctNNN2X69Omp1Wq54IILhh9XrVaH/yOVE093d3eq1Wr+\n+I//+BPHa7XaJ67ctrW1pVarpbW19XOekLFk3bp1mTt3bpI4lzCsVqulra1t+Ou2tra88cYbDZyI\nsai3tzdvvfVWpk+fnn379g3/eXLGGWdk3759DZ6ORnrmmWdy44035uDBg0mS/fv3Z/z48cN/oerP\nF3p7e3P66afniSeeyH/+539m2rRpufnmm4s7l4ja3+MHP/hB3n333d85/td//dcZGhrKwMBAli5d\nmn//939PV1dXHn/88QZMSaN91p68+OKL+d73vteAqRhLPmtHLrvssiTJCy+8kKamplxxxRWf93hA\n4d5///088sgjufnmmzN+/PhP/LtKpfKJO4U4sbz66quZOHFipk2bltdff73R4zBGDQ4O5q233sqt\nt96aCy64IKtXr/6dW41LOJeI2t/j7/7u737vv/vFL36RP/3TP02lUsn06dMzbty47N+/P9VqNX19\nfcOPq9VqqVarn8e4NMjv25P/+q//Sm9vb7773e8m+fD2n3vuuScPPfRQqtVq9u7dO/zYvr4+e3Ic\n+6xzSZKsX78+r776ar7//e8P/4HhXMJHfnsXnC/4uMOHD+eRRx7JFVdckS996UtJPnxLVH9/f1pb\nW9Pf35/TTz+9wVPSKL/5zW+yefPmbN26NYcOHcrBgwfzzDPP5L333svg4GCampr8+ULa2trS1tY2\nfIfYnDlI0NtSAAACKklEQVRzsmbNmuLOJd5TewQuu+yy4b/x2rVrVw4fPpzTTjstHR0d2bRpUz74\n4IP09vZm9+7dmT59eoOnpRHOPffcPP3001m5cmVWrlyZtra2/MM//EPOOOOMdHR0ZOPGjanX69m+\nfXvGjx/v1uMTVE9PT/7pn/4p99xzT0455ZTh484lfOT888/P7t2709vbm8OHD2fTpk3p6Oho9FiM\nAfV6PU8++WSmTp2ar3zlK8PHOzo6smHDhiTJhg0bhu8I4cTz9a9/PU8++WRWrlyZu+66KxdffHHu\nvPPOXHTRRXnllVeSfPgXq84pJ7YzzjgjbW1t2bVrV5LkX//1X/PFL36xuHNJpV6v1xs9RGkOHz48\nfN95c3Nzbrrpplx88cVJPryN8F/+5V8ybty43HzzzZk9e3aDp2Us+Pa3v52HHnpo+Ff6rFq1Ktu2\nbcvJJ5+cRYsW5fzzz2/0iDTA4sWLc/jw4eGPyL/gggty++23J3Eu4X9t2bIlP/rRjzI0NJQrr7wy\n1113XaNHYgz49a9/ne9///s599xzh+/y+NrXvpYLLrggXV1d2bt3bxG/hoPPx+uvv56f/exnWbJk\nSd5+++0sX748AwMDOe+887J48eLhDz/lxPQf//EfefLJJ3P48OGcddZZWbRoUer1elHnElELAABA\nsdx+DAAAQLFELQAAAMUStQAAABRL1AIAAFAsUQsAAECxRC0AAADFErUAAAAUS9QCAABQrP8HPwam\nuUsN36EAAAAASUVORK5CYII=\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["df[\"ANAISH\"] = df.apply (lambda r: int(r[\"ANAISH\"]), axis=1)\n", "df[\"ANAISF\"] = df.apply (lambda r: int(r[\"ANAISF\"]), axis=1)\n", "df[\"differenceHF\"] = df.ANAISH - df.ANAISF\n", "df[\"nb\"] = 1\n", "dist = df[[\"nb\",\"differenceHF\"]].groupby(\"differenceHF\", as_index=False).count()\n", "df[\"differenceHF\"].hist(figsize=(16,6), bins=50)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Exercice 6 : distribution des mariages par jour
\n", " \n", "On veut obtenir un graphe qui contient l'histogramme de la distribution du nombre de mariages par jour de la semaine et d'ajouter une seconde courbe correspond avec un second axe \u00e0 la r\u00e9partition cumul\u00e9e.\n"]}, {"cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [{"data": {"text/plain": [""]}, "execution_count": 27, "metadata": {}, "output_type": "execute_result"}, {"data": {"image/png": "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\nYII=\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["df[\"nb\"] = 1\n", "dissem = df[[\"JSEMAINE\",\"nb\"]].groupby(\"JSEMAINE\",as_index=False).sum()\n", "total = dissem[\"nb\"].sum()\n", "repsem = dissem.cumsum() \n", "repsem[\"nb\"] /= total\n", "\n", "ax = dissem[\"nb\"].plot(kind=\"bar\")\n", "repsem[\"nb\"].plot(ax=ax, secondary_y=True)\n", "ax.set_title(\"distribution des mariages par jour de la semaine\")"]}, {"cell_type": "code", "execution_count": 27, "metadata": {"collapsed": true}, "outputs": [], "source": []}], "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.6.3"}}, "nbformat": 4, "nbformat_minor": 2}