{ "cells": [ { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true }, "source": [ "# Autour du paradoxe de Simpson" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hideCode": false, "hidePrompt": true }, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hideCode": false, "hidePrompt": true }, "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", "
SmokerStatusAge
0YesAlive21.0
1YesAlive19.3
2NoDead57.5
3NoAlive47.1
4YesAlive81.4
5NoAlive36.8
6NoAlive23.8
7YesDead57.5
8YesAlive24.8
9YesAlive49.5
10YesAlive30.0
11NoDead66.0
12YesAlive49.2
13NoAlive58.4
14NoDead60.6
15NoAlive25.1
16NoAlive43.5
17NoAlive27.1
18NoAlive58.3
19YesAlive65.7
20NoDead73.2
21YesAlive38.3
22NoAlive33.4
23YesDead62.3
24NoAlive18.0
25NoAlive56.2
26YesAlive59.2
27NoAlive25.8
28NoDead36.9
29NoAlive20.2
............
1284YesDead36.0
1285YesAlive48.3
1286NoAlive63.1
1287NoAlive60.8
1288YesDead39.3
1289NoAlive36.7
1290NoAlive63.8
1291NoDead71.3
1292NoAlive57.7
1293NoAlive63.2
1294NoAlive46.6
1295YesDead82.4
1296YesAlive38.3
1297YesAlive32.7
1298NoAlive39.7
1299YesDead60.0
1300NoDead71.0
1301NoAlive20.5
1302NoAlive44.4
1303YesAlive31.2
1304YesAlive47.8
1305YesAlive60.9
1306NoDead61.4
1307YesAlive43.0
1308NoAlive42.1
1309YesAlive35.9
1310NoAlive22.3
1311YesDead62.1
1312NoDead88.6
1313NoAlive39.1
\n", "

1314 rows × 3 columns

\n", "
" ], "text/plain": [ " Smoker Status Age\n", "0 Yes Alive 21.0\n", "1 Yes Alive 19.3\n", "2 No Dead 57.5\n", "3 No Alive 47.1\n", "4 Yes Alive 81.4\n", "5 No Alive 36.8\n", "6 No Alive 23.8\n", "7 Yes Dead 57.5\n", "8 Yes Alive 24.8\n", "9 Yes Alive 49.5\n", "10 Yes Alive 30.0\n", "11 No Dead 66.0\n", "12 Yes Alive 49.2\n", "13 No Alive 58.4\n", "14 No Dead 60.6\n", "15 No Alive 25.1\n", "16 No Alive 43.5\n", "17 No Alive 27.1\n", "18 No Alive 58.3\n", "19 Yes Alive 65.7\n", "20 No Dead 73.2\n", "21 Yes Alive 38.3\n", "22 No Alive 33.4\n", "23 Yes Dead 62.3\n", "24 No Alive 18.0\n", "25 No Alive 56.2\n", "26 Yes Alive 59.2\n", "27 No Alive 25.8\n", "28 No Dead 36.9\n", "29 No Alive 20.2\n", "... ... ... ...\n", "1284 Yes Dead 36.0\n", "1285 Yes Alive 48.3\n", "1286 No Alive 63.1\n", "1287 No Alive 60.8\n", "1288 Yes Dead 39.3\n", "1289 No Alive 36.7\n", "1290 No Alive 63.8\n", "1291 No Dead 71.3\n", "1292 No Alive 57.7\n", "1293 No Alive 63.2\n", "1294 No Alive 46.6\n", "1295 Yes Dead 82.4\n", "1296 Yes Alive 38.3\n", "1297 Yes Alive 32.7\n", "1298 No Alive 39.7\n", "1299 Yes Dead 60.0\n", "1300 No Dead 71.0\n", "1301 No Alive 20.5\n", "1302 No Alive 44.4\n", "1303 Yes Alive 31.2\n", "1304 Yes Alive 47.8\n", "1305 Yes Alive 60.9\n", "1306 No Dead 61.4\n", "1307 Yes Alive 43.0\n", "1308 No Alive 42.1\n", "1309 Yes Alive 35.9\n", "1310 No Alive 22.3\n", "1311 Yes Dead 62.1\n", "1312 No Dead 88.6\n", "1313 No Alive 39.1\n", "\n", "[1314 rows x 3 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "donnees = pd.read_csv('Subject6_smoking.csv')\n", "donnees" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "hideCode": false, "hidePrompt": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 1314 entries, 0 to 1313\n", "Data columns (total 3 columns):\n", "Smoker 1314 non-null object\n", "Status 1314 non-null object\n", "Age 1314 non-null float64\n", "dtypes: float64(1), object(2)\n", "memory usage: 30.9+ KB\n" ] } ], "source": [ "donnees.info()" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true }, "source": [ "Pour faire un peu de statistiques sur ces données, on peut représenter `Yes` par `1` et `No`par `0`, et `Alive`par `1`et `Dead` par `0`. On va en fait procéder autrement mais c'était ma première approche naïve, je laisse donc mon code initial ainsi que les résultats obtenus. Au lieu d'utiliser la methode `apply` j'aurais également pu utiliser la méthode `replace`." ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true }, "source": [ "``` \n", "def convert(x):\n", " if (x=='Yes') | (x==\"Alive\"):\n", " return 1\n", " elif (x=='No') | (x=='Dead'):\n", " return 0\n", "\n", "donnees['Smoker'] = donnees['Smoker'].apply(convert)\n", "donnees['Status'] = donnees['Status'].apply(convert)\n", "donnees[['Smoker','Status']].sum()\n", "```" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true }, "source": [ "Parmi les 1314 femmes sondées, il y a donc 582 fumeuses, et 945 des femmes (fumeuses et non fumeuses) sont encore vivantes 20 ans après." ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true }, "source": [ "Ré-obtenons ces informations à l'aide des méthodes de regroupement." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hideCode": false, "hidePrompt": true }, "outputs": [ { "data": { "text/plain": [ "No 732\n", "Yes 582\n", "Name: Smoker, dtype: int64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "donnees['Smoker'].value_counts()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hideCode": false, "hidePrompt": true, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Alive 945\n", "Dead 369\n", "Name: Status, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "donnees['Status'].value_counts()" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true }, "source": [ "Maintenant regardons les infos jointes, pour essayer de comprendre les dépendances. Pour ça, on pourrait écrire \n", "```\n", "donnees[['Smoker,'Status']].value_counts()\n", "```\n", "pour avoir le tableau souhaité, mais ce notebook jupyter utilise une version non à jour de panda où on ne peut pas utiliser `value_counts` sur un `dataframe`, donc on ruse." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hideCode": false, "hidePrompt": true }, "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", "
Total
SmokerStatus
NoAlive502
Dead230
YesAlive443
Dead139
\n", "
" ], "text/plain": [ " Total\n", "Smoker Status \n", "No Alive 502\n", " Dead 230\n", "Yes Alive 443\n", " Dead 139" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tableau = donnees.groupby(['Smoker','Status']).count()\n", "tableau = tableau.rename(columns={'Age':'Total'})\n", "tableau" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "hideCode": false, "hidePrompt": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "MultiIndex: 4 entries, (No, Alive) to (Yes, Dead)\n", "Data columns (total 1 columns):\n", "Total 4 non-null int64\n", "dtypes: int64(1)\n", "memory usage: 238.0+ bytes\n" ] } ], "source": [ "tableau.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Un autre moyen d'obtenir le même tableau (toujours avec le même souci de nom)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "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", "
Age
SmokerStatus
NoAlive502
Dead230
YesAlive443
Dead139
All1314
\n", "
" ], "text/plain": [ " Age\n", "Smoker Status \n", "No Alive 502\n", " Dead 230\n", "Yes Alive 443\n", " Dead 139\n", "All 1314" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "donnees.pivot_table(index = ['Smoker','Status'], aggfunc='count', margins=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Une manière plus agréable visuellement d'avoir les mêmes données, et en supprimpant le problème de nom :" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "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", "
StatusAliveDeadAll
Smoker
No502230732
Yes443139582
All9453691314
\n", "
" ], "text/plain": [ "Status Alive Dead All\n", "Smoker \n", "No 502 230 732\n", "Yes 443 139 582\n", "All 945 369 1314" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table2 = donnees.pivot_table(index = 'Smoker',values='Age', columns='Status', aggfunc='count', margins=True) \n", "table2" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Index: 3 entries, No to All\n", "Data columns (total 3 columns):\n", "Alive 3 non-null int64\n", "Dead 3 non-null int64\n", "All 3 non-null int64\n", "dtypes: int64(3)\n", "memory usage: 96.0+ bytes\n" ] } ], "source": [ "table2.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remarquons que si on ne précise pas `values='Age'`, on obtient quelque chose de proche mais avec un souci de nom à nouveau." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "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", "
Age
StatusAliveDeadAll
Smoker
No502230732
Yes443139582
All9453691314
\n", "
" ], "text/plain": [ " Age \n", "Status Alive Dead All\n", "Smoker \n", "No 502 230 732\n", "Yes 443 139 582\n", "All 945 369 1314" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table3 = donnees.pivot_table(index = 'Smoker', columns='Status', aggfunc='count', margins=True) \n", "table3" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Index: 3 entries, No to All\n", "Data columns (total 3 columns):\n", "(Age, Alive) 3 non-null int64\n", "(Age, Dead) 3 non-null int64\n", "(Age, All) 3 non-null int64\n", "dtypes: int64(3)\n", "memory usage: 96.0+ bytes\n" ] } ], "source": [ "table3.info()" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": true }, "source": [ "Evaluons maintenant le taux de mortalité selon si on fume ou non." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "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", "
StatusAliveDeadAllratio_deces
Smoker
No5022307320.314208
Yes4431395820.238832
All94536913140.280822
\n", "
" ], "text/plain": [ "Status Alive Dead All ratio_deces\n", "Smoker \n", "No 502 230 732 0.314208\n", "Yes 443 139 582 0.238832\n", "All 945 369 1314 0.280822" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table2['ratio_deces'] = table2['Dead']/table2['All']\n", "table2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On observe donc que les fumeuses ont eu un taux de décès plus faible !\n", "\n", "Le problème avec notre étude, c'est que l'âge (qui est clairement un facteur dans la mort des individus) des participants n'a pas été pris en compte, or le fait de fumer (ou non) pour une femme dans les années 70 est corrélé avec l'âge et nos groupes de sont pas équivalent du point de vue de l'âge. On peut facilement le vérifier ici :" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "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", "
StatusAliveDeadAll
Smoker
No40.34741070.48173949.815847
Yes39.64898458.99640344.269759
All40.02000066.15528547.359361
\n", "
" ], "text/plain": [ "Status Alive Dead All\n", "Smoker \n", "No 40.347410 70.481739 49.815847\n", "Yes 39.648984 58.996403 44.269759\n", "All 40.020000 66.155285 47.359361" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "donnees.pivot_table(index = 'Smoker',values='Age', columns='Status', aggfunc='mean', margins=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ajoutons des tranches d'ages pour prendre en compte cette composante." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def classifie(x):\n", " if x <= 34:\n", " return '18-34 ans'\n", " elif x <= 54:\n", " return '35-54 ans'\n", " elif x <= 65:\n", " return '55-65 ans'\n", " else:\n", " return '>65 ans'\n", " \n", "donnees['tranche']=donnees['Age'].apply(classifie)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "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", "
SmokerStatusAgetranche
0YesAlive21.018-34 ans
1YesAlive19.318-34 ans
2NoDead57.555-65 ans
3NoAlive47.135-54 ans
4YesAlive81.4>65 ans
5NoAlive36.835-54 ans
6NoAlive23.818-34 ans
7YesDead57.555-65 ans
8YesAlive24.818-34 ans
9YesAlive49.535-54 ans
10YesAlive30.018-34 ans
11NoDead66.0>65 ans
12YesAlive49.235-54 ans
13NoAlive58.455-65 ans
14NoDead60.655-65 ans
15NoAlive25.118-34 ans
16NoAlive43.535-54 ans
17NoAlive27.118-34 ans
18NoAlive58.355-65 ans
19YesAlive65.7>65 ans
20NoDead73.2>65 ans
21YesAlive38.335-54 ans
22NoAlive33.418-34 ans
23YesDead62.355-65 ans
24NoAlive18.018-34 ans
25NoAlive56.255-65 ans
26YesAlive59.255-65 ans
27NoAlive25.818-34 ans
28NoDead36.935-54 ans
29NoAlive20.218-34 ans
...............
1284YesDead36.035-54 ans
1285YesAlive48.335-54 ans
1286NoAlive63.155-65 ans
1287NoAlive60.855-65 ans
1288YesDead39.335-54 ans
1289NoAlive36.735-54 ans
1290NoAlive63.855-65 ans
1291NoDead71.3>65 ans
1292NoAlive57.755-65 ans
1293NoAlive63.255-65 ans
1294NoAlive46.635-54 ans
1295YesDead82.4>65 ans
1296YesAlive38.335-54 ans
1297YesAlive32.718-34 ans
1298NoAlive39.735-54 ans
1299YesDead60.055-65 ans
1300NoDead71.0>65 ans
1301NoAlive20.518-34 ans
1302NoAlive44.435-54 ans
1303YesAlive31.218-34 ans
1304YesAlive47.835-54 ans
1305YesAlive60.955-65 ans
1306NoDead61.455-65 ans
1307YesAlive43.035-54 ans
1308NoAlive42.135-54 ans
1309YesAlive35.935-54 ans
1310NoAlive22.318-34 ans
1311YesDead62.155-65 ans
1312NoDead88.6>65 ans
1313NoAlive39.135-54 ans
\n", "

1314 rows × 4 columns

\n", "
" ], "text/plain": [ " Smoker Status Age tranche\n", "0 Yes Alive 21.0 18-34 ans\n", "1 Yes Alive 19.3 18-34 ans\n", "2 No Dead 57.5 55-65 ans\n", "3 No Alive 47.1 35-54 ans\n", "4 Yes Alive 81.4 >65 ans\n", "5 No Alive 36.8 35-54 ans\n", "6 No Alive 23.8 18-34 ans\n", "7 Yes Dead 57.5 55-65 ans\n", "8 Yes Alive 24.8 18-34 ans\n", "9 Yes Alive 49.5 35-54 ans\n", "10 Yes Alive 30.0 18-34 ans\n", "11 No Dead 66.0 >65 ans\n", "12 Yes Alive 49.2 35-54 ans\n", "13 No Alive 58.4 55-65 ans\n", "14 No Dead 60.6 55-65 ans\n", "15 No Alive 25.1 18-34 ans\n", "16 No Alive 43.5 35-54 ans\n", "17 No Alive 27.1 18-34 ans\n", "18 No Alive 58.3 55-65 ans\n", "19 Yes Alive 65.7 >65 ans\n", "20 No Dead 73.2 >65 ans\n", "21 Yes Alive 38.3 35-54 ans\n", "22 No Alive 33.4 18-34 ans\n", "23 Yes Dead 62.3 55-65 ans\n", "24 No Alive 18.0 18-34 ans\n", "25 No Alive 56.2 55-65 ans\n", "26 Yes Alive 59.2 55-65 ans\n", "27 No Alive 25.8 18-34 ans\n", "28 No Dead 36.9 35-54 ans\n", "29 No Alive 20.2 18-34 ans\n", "... ... ... ... ...\n", "1284 Yes Dead 36.0 35-54 ans\n", "1285 Yes Alive 48.3 35-54 ans\n", "1286 No Alive 63.1 55-65 ans\n", "1287 No Alive 60.8 55-65 ans\n", "1288 Yes Dead 39.3 35-54 ans\n", "1289 No Alive 36.7 35-54 ans\n", "1290 No Alive 63.8 55-65 ans\n", "1291 No Dead 71.3 >65 ans\n", "1292 No Alive 57.7 55-65 ans\n", "1293 No Alive 63.2 55-65 ans\n", "1294 No Alive 46.6 35-54 ans\n", "1295 Yes Dead 82.4 >65 ans\n", "1296 Yes Alive 38.3 35-54 ans\n", "1297 Yes Alive 32.7 18-34 ans\n", "1298 No Alive 39.7 35-54 ans\n", "1299 Yes Dead 60.0 55-65 ans\n", "1300 No Dead 71.0 >65 ans\n", "1301 No Alive 20.5 18-34 ans\n", "1302 No Alive 44.4 35-54 ans\n", "1303 Yes Alive 31.2 18-34 ans\n", "1304 Yes Alive 47.8 35-54 ans\n", "1305 Yes Alive 60.9 55-65 ans\n", "1306 No Dead 61.4 55-65 ans\n", "1307 Yes Alive 43.0 35-54 ans\n", "1308 No Alive 42.1 35-54 ans\n", "1309 Yes Alive 35.9 35-54 ans\n", "1310 No Alive 22.3 18-34 ans\n", "1311 Yes Dead 62.1 55-65 ans\n", "1312 No Dead 88.6 >65 ans\n", "1313 No Alive 39.1 35-54 ans\n", "\n", "[1314 rows x 4 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "donnees" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "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", "
StatusAliveDeadAllratio_deces
Smoker
No22162270.026432
Yes18271890.037037
All403134160.031250
\n", "
" ], "text/plain": [ "Status Alive Dead All ratio_deces\n", "Smoker \n", "No 221 6 227 0.026432\n", "Yes 182 7 189 0.037037\n", "All 403 13 416 0.031250" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table18_34 = pd.pivot_table(donnees[donnees['Age']<35],index = 'Smoker',values='Age', columns='Status', aggfunc='count', margins=True)\n", "table18_34['ratio_deces'] = table18_34['Dead']/table18_34['All']\n", "table18_34" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "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", "
StatusAliveDeadAllratio_deces
Smoker
No172191910.099476
Yes190392290.170306
All362584200.138095
\n", "
" ], "text/plain": [ "Status Alive Dead All ratio_deces\n", "Smoker \n", "No 172 19 191 0.099476\n", "Yes 190 39 229 0.170306\n", "All 362 58 420 0.138095" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table35_54 = pd.pivot_table(donnees[(donnees['Age']>=35) & (donnees['Age']<55)],index = 'Smoker',values='Age', columns='Status', aggfunc='count', margins=True)\n", "table35_54['ratio_deces'] = table35_54['Dead']/table35_54['All']\n", "table35_54" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "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", "
StatusAliveDeadAllratio_deces
Smoker
No82491310.374046
Yes65531180.449153
All1471022490.409639
\n", "
" ], "text/plain": [ "Status Alive Dead All ratio_deces\n", "Smoker \n", "No 82 49 131 0.374046\n", "Yes 65 53 118 0.449153\n", "All 147 102 249 0.409639" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table55_65 = pd.pivot_table(donnees[(donnees['Age']>=55) & (donnees['Age']<66)],index = 'Smoker',values='Age', columns='Status', aggfunc='count', margins=True)\n", "table55_65['ratio_deces'] = table55_65['Dead']/table55_65['All']\n", "table55_65" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "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", "
StatusAliveDeadAllratio_deces
Smoker
No271651920.859375
Yes742490.857143
All342072410.858921
\n", "
" ], "text/plain": [ "Status Alive Dead All ratio_deces\n", "Smoker \n", "No 27 165 192 0.859375\n", "Yes 7 42 49 0.857143\n", "All 34 207 241 0.858921" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table65plus = pd.pivot_table(donnees[(donnees['Age']>65)],index = 'Smoker',values='Age', columns='Status', aggfunc='count', margins=True)\n", "table65plus['ratio_deces'] = table65plus['Dead']/table65plus['All']\n", "table65plus" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On remarque que dans chaque tranche d'age, les fumeuses ont un taux de décès plus fort. La tendance s'inverse quand on ne regarde plus l'âge car dans nos données les fumeuses sont plutôt plus jeunes que les non fumeuses." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3EAAAHVCAYAAABfZnKdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3X2YlVW9//H3FxAhRUEZFUWa8SlRngZHoIOKKCoqinok5CSCeqI0rbRjP0JLNP1lluRTZZgK+RMEn06peLISj5mKDA8iCvmAhKghkCgoiIzr9webaYBBhtmb2d7wfl0X19x77fu+13f25brkw1p73ZFSQpIkSZKUDY2KXYAkSZIkqe4McZIkSZKUIYY4SZIkScoQQ5wkSZIkZYghTpIkSZIyxBAnSZIkSRliiJMkSZKkDDHESZIkSVKGGOIkSZIkKUOaFLsAgNatW6fS0tJilyFJkiRJRTFt2rQlKaWSupz7uQhxpaWlVFZWFrsMSZIkSSqKiPh7Xc91OaUkSZIkZYghTpIkSZIyxBAnSZIkSRnyufhOnCRJkqTi+OSTT1i4cCGrVq0qdinbhWbNmtG2bVt22GGHet/DECdJkiRtxxYuXEiLFi0oLS0lIopdzjYtpcTSpUtZuHAhZWVl9b6PyyklSZKk7diqVavYfffdDXANICLYfffd8571NMRJkiRJ2zkDXMMpxGdtiJMkSZKkDDHESZIkSaqza6+9lkMPPZROnTrRpUsXpkyZktf9nnzySfr161eg6jZd34033shHH3202evrel4xubGJJEmSpDp59tlneeSRR5g+fTo77rgjS5YsYfXq1UWrZ82aNTRp8q9I81n13XjjjZx99tl84Qtf+Mx71vW8YnImTpIkSVKdvPPOO7Ru3Zodd9wRgNatW7P33ntTWlrKiBEj+PKXv0xFRQXTp0/nhBNOYP/99+e2224D1u7MeNlll9GhQwc6duzIhAkTNrr/1KlTKS8vZ968eXz44Yecd955HH744ZSXl/O73/0OgDFjxjBgwABOOeUUjj/++DrVd/PNN/P222/Tu3dvevfuDcAFF1xARUUFhx56KFdeeSVAreftvPPO1fe///77GTp0KAD33XcfHTp0oHPnzhx11FGF+ojrJqVU9D+HHXZYkiRJktTwXn755Tqfu3z58tS5c+d04IEHpgsuuCA9+eSTKaWUvvjFL6Zf/vKXKaWUvvOd76SOHTumDz74IL377ruppKQkpZTS/fffn/r06ZPWrFmT/vGPf6R99903vf3222ny5Mnp5JNPTn/9619T165d09///veUUkrf//730913351SSum9995LBx54YFqxYkW666670j777JOWLl1a5/rW1bh48eLq1+uuX7NmTerVq1d64YUXaj1vp512qj6+77770pAhQ1JKKXXo0CEtXLiwur4tUdtnDlSmOuYnZ+IkSZIk1cnOO+/MtGnTGD16NCUlJQwcOJAxY8YAcOqppwLQsWNHunfvTosWLSgpKaFZs2YsW7aMp59+mkGDBtG4cWP23HNPevXqxdSpUwGYM2cOw4YN4+GHH6Zdu3YAPP7441x33XV06dKFo48+mlWrVrFgwQIAjjvuOHbbbbctqm9DEydOpGvXrpSXl/PSSy/x8ssvb9Fn0bNnT4YOHcrtt99OVVXVFl2bL78TJ0mSJKnOGjduzNFHH83RRx9Nx44dGTt2LED1EsZGjRpVH697vWbNGtZONtWuTZs2rFq1ihkzZrD33nsDa1cMPvDAA3zpS19a79wpU6aw0047bVF965ZArvPGG2/ws5/9jKlTp9KqVSuGDh26yWe31XwkQM1zbrvtNqZMmcKjjz5Kly5dmDlzJrvvvvsm6yokZ+IkSZIk1cnf/vY3Xn311erXM2fO5Itf/GKdrj3qqKOYMGECVVVVLF68mKeeeopu3boB0LJlSx599FFGjBjBk08+CcAJJ5zALbfcUh3+ZsyYscl7H3zwwZutr0WLFixfvhyADz74gJ122oldd92VRYsW8dhjj1VfU/M8gD333JM5c+bw6aef8tBDD1W3v/7663Tv3p2rr76a1q1b8+abb9bpcygEZ+IkSZIk1cmKFSu4+OKLWbZsGU2aNOGAAw5g9OjRPPLII5u99vTTT+fZZ5+lc+fORATXX389e+21F3PnzgXWhqWHH36YE088kTvvvJMf/OAHfOc736FTp06klCgtLa21nyVLllQHvU3VBzBs2DBOPPFE2rRpw+TJkykvL+fQQw9lv/32o2fPntX32/C86667jn79+rHvvvvSoUMHVqxYAcBll13Gq6++SkqJY489ls6dO+f9+dZVfNa0ZkOpqKhIlZWVxS6joEqHP9og/cy/7uQG6UeSJEnbpjlz5tC+fftil1FvjzzyCPPmzeNb3/pWsUups9o+84iYllKqqMv1zsRJkiRJyqxCPig8K/xOnCRJkiRliCFOkiRJkjLEECdJkiRJGWKIkyRJkqQMMcRJkiRJUoa4O6UkSZKkaoV+VFZdHom1cuVK+vbtyxNPPMGbb75JWVkZN998MxdffDEAF110ERUVFQwdOrTedfTv3593332XZ599trpt5MiR7LzzzvzXf/0XP/zhDznqqKPo06fPFt/7rLPO4kc/+hEHHnhgvevbEs7ESZIkSSqqO++8kzPOOIPGjRsDsMcee3DTTTexevXqgtx/2bJlTJ8+nWXLlvHGG2/Ues7VV19drwAHcMEFF3D99dfnU+IWMcRJkiRJKqp77rmH/v37V78uKSnh2GOPZezYsRudO3PmTHr06EGnTp04/fTTee+99zZ7/wceeIBTTjmFs846i3vvvbfWc4YOHcr999/PY489xle+8pXq9ieffJJTTjkFgMcff5wvf/nLdO3alQEDBrBixQoAjjzySP70pz+xZs2aLfq968sQJ0mSJKloVq9ezbx58ygtLV2vffjw4dxwww1UVVWt137OOefwk5/8hFmzZtGxY0euuuqqzfYxfvx4Bg0axKBBgxg/fvxnnnvcccfx3HPP8eGHHwIwYcIEBg4cyJIlS7jmmmv405/+xPTp06moqGDUqFEANGrUiAMOOIAXXnhhC37z+jPESZIkSSqaJUuW0LJly43ay8rK6NatG+PGjatue//991m2bBm9evUCYMiQITz11FOfef9Fixbx2muvccQRR3DQQQfRpEkTZs+evcnzmzRpQt++fXn44YdZs2YNjz76KP379+e5557j5ZdfpmfPnnTp0oWxY8fy97//vfq6PfbYg7fffntLf/16cWMTSZIkSUXTvHlzVq1aVet7I0aM4Mwzz+Soo46q9/0nTJjAe++9R1lZGQAffPAB9957L9dcc80mrxk4cCC/+MUv2G233Tj88MNp0aIFKSWOO+64Tc7krVq1iubNm9e7zi3hTJwkSZKkomnVqhVVVVW1BrmDDz6YQw45hEceeQSAXXfdlVatWvGXv/wFgLvvvrt6Vu7WW2/l1ltv3ege48eP53/+53+YP38+8+fPZ9q0aZv8Xtw6Rx99NNOnT+f2229n4MCBAPTo0YO//vWvvPbaawB89NFHvPLKK9XXvPLKKxx66KH1+AS2nDNxkiRJkqrV5ZEAhXb88cfz9NNP17o75OWXX055eXn167Fjx/KNb3yDjz76iP3224+77roLgLlz59KzZ8/1rp0/fz4LFiygR48e1W1lZWXssssuTJkyZZP1NG7cmH79+jFmzJjqzVVKSkoYM2YMgwYN4uOPPwbgmmuu4aCDDmLRokU0b96cNm3a1P9D2AKRUmqQjj5LRUVFqqysLHYZBVXo52tsSjEGmSRJkrYdc+bMoX379kWtYcaMGYwaNYq777673vfo168fDz74IE2bNi1gZXXz85//nF122YXzzz+/TufX9plHxLSUUkVdrncmTpIkSVJRlZeX07t3b6qqqqqfFbel1i25LIaWLVsyePDgBuvPECdJkiSp6M4777xil1Bv5557boP258YmkiRJkpQhmw1xEbFvREyOiDkR8VJEfDvXvltE/DEiXs39bFXjmu9HxGsR8beIOGFr/gKSJEmStD2py0zcGuC7KaX2QA/gmxFxCDAc+HNK6UDgz7nX5N47CzgU6Av8MiLqt7BVkiRJkrSezYa4lNI7KaXpuePlwBxgH6A/MDZ32ljgtNxxf+DelNLHKaU3gNeAboUuXJIkSZK2R1u0sUlElALlwBRgz5TSO7A26EXEHrnT9gGeq3HZwlybJEmSpM+7kbsW+H7vb/aUlStX0rdvX5544gnefPNNysrKuPnmm7n44osBuOiii6ioqGDo0KFb3P2YMWO47LLLaNu2LStWrGC//fbjyiuv5N/+7d+2+F61KS0tpbKykl122YU+ffrwxBNP0KTJ1t0/ss4bm0TEzsADwHdSSh981qm1tG30MLqIGBYRlRFRuXjx4rqWIUmSJGkbc+edd3LGGWdUP15gjz324KabbmL16tUFuf/AgQOZMWMGr776KsOHD+eMM85gzpw5Bbn3Ok2bNuXYY49lwoQJBb1vbeoU4iJiB9YGuHtSSg/mmhdFRJvc+22Ad3PtC4F9a1zeFnh7w3umlEanlCpSShUlJSX1rV+SJElSxt1zzz3079+/+nVJSQnHHnssY8eO3ejcmTNn0qNHDzp16sTpp5/Oe++9t0V99e7dm2HDhjF69GgAXn/9dfr27cthhx3GkUceydy5cwF4+OGH6d69O+Xl5fTp04dFixYBsHTpUo4//njKy8v5+te/Tkr/mq867bTTuOeee7b4999SddmdMoA7gDkppVE13vo9MCR3PAT4XY32syJix4goAw4Eni9cyZIkSZK2FatXr2bevHmUlpau1z58+HBuuOEGqqqq1ms/55xz+MlPfsKsWbPo2LEjV1111Rb32bVr1+qwNmzYMG655RamTZvGz372My688EIAjjjiCJ577jlmzJjBWWedxfXXXw/AVVddxRFHHMGMGTM49dRTWbBgQfV9O3TowNSpU7e4ni1Vl8WaPYHBwIsRMTPXNgK4DpgYEecDC4ABACmllyJiIvAya3e2/GZKqWrj20qSJEna3i1ZsoSWLVtu1F5WVka3bt0YN25cddv777/PsmXL6NWrFwBDhgxhwIABW9znutmzFStW8Mwzz6x3j48//hiAhQsXMnDgQN555x1Wr15NWVkZAE899RQPPrh2ceLJJ59Mq1bVT1qjcePGNG3alOXLl9OiRYstrquuNhviUkpPU/v33ACO3cQ11wLX5lGXJEmSpO1A8+bNWbVqVa3vjRgxgjPPPJOjjjqqoH3OmDGD9u3b8+mnn9KyZUtmzpy50TkXX3wxl156KaeeeipPPvkkI0eOrH5v7WLF2n388cc0a9asoPVuqM4bm0iSJElSobVq1Yqqqqpag9zBBx/MIYccwiOPPALArrvuSqtWrfjLX/4CwN133109K3frrbdy6623bra///3f/2X06NF87WtfY5dddqGsrIz77rsPWDtD98ILLwBrZ/322WftJvs1v5t31FFHVX/v7bHHHlvvO3lLly6lpKSEHXbYYYs/hy2xdfe+lCQB0HFsxwbp58UhLzZIP5KkbVgdHglQaMcffzxPP/00ffr02ei9yy+/nPLy8urXY8eO5Rvf+AYfffQR++23H3fddRcAc+fOpWfPnrXef8KECTz99NN89NFHlJWV8cADD9C+fXtg7aYqF1xwAddccw2ffPIJZ511Fp07d2bkyJEMGDCAffbZhx49evDGG28AcOWVVzJo0CC6du1Kr169aNeuXXU/kydP5qSTTirY57IpUXM3lWKpqKhIlZWVxS6joEqHP9og/cy/7uQG6UdSfgxxkqTPqzlz5lQHmmKZMWMGo0aN4u677673Pfr168eDDz5I06ZNC1jZljnjjDP48Y9/zJe+9KXPPK+2zzwipqWUKurSjzNxkiRJkoqqvLyc3r17U1VVVf2suC21bsllsaxevZrTTjttswGuEAxxkiRJkoruvPPOK3YJeWnatCnnnHNOg/TlxiaSJEmSlCGGOEmSJEnKEEOcJEmSJGWIIU6SJEmSMsSNTSRJkiRVK/Rjcery+JuVK1fSt29fJk2axGGHHcZ9991Hx45r67j++uuZN28et912W0Hr6tChA+Xl5es91uDss8/mzDPP5LTTTuPcc89l+PDh9dpt8thjj+XBBx9k1113LWTJ1ZyJkyRJklRUd955J2eccQY77bQTN954IxdeeCEpJd566y1+/etf8+Mf/7ig/c2aNYsmTZrwxBNPsHLlylrPueuuu+r9uID/+I//KHjorMkQJ0mSJKmo7rnnHvr37w9A3759adOmDb/97W+55JJLGDlyJK1atQLguuuuo1u3bnTq1Imrr74agOXLl3PiiSfSuXNnOnTowP3337/Z/saPH88555zDMcccs8nnyx1xxBHMnDmTW265hREjRlS3/+Y3v+GSSy4BYOzYsXTr1o0uXbpw4YUX8umnnwLQv39/xo0bV/8PZDMMcZIkSZKKZvXq1cybN4/S0tLqthtvvJHLL7+cxYsXM3jwYAAmTZrEggULmDJlCjNnzuSZZ57hmWeeYdKkSZSWlvLCCy8we/ZsjjvuuM32OXHiRAYOHMigQYMYP378Z547YMCA9YLhhAkTGDhwILNnz+ahhx7imWeeYebMmaxZs4Z7770XgNatW7N8+XKWLVtWj09k8/xOnCRJkqSiWbJkCS1btlyvbe+99+aYY46hX79+1W2PP/44jz32GOXl5QCsWLGCV155he7duzN8+HCGDx/OKaecQs+ePT+zv2effZa2bduyzz77sMcee/C1r32N999/f5PfX9trr71o27YtlZWVtGvXjjfeeIPu3btz0003MXXqVCoqKoC13+vbd999q68rKSnhnXfe2eh3KwRDnCRJkqSiad68OatWrdqovVGjRjRq9K+FgyklrrjiCs4///yNzq2srGTSpElcdtll9OvXb73ljxsaP348s2fPrp75++CDD3jooYcYOnToJq8ZOHAgEydOpLS0lH//938nIkgpcd555/GjH/2o1mtWrVpF8+bNN3nPfLicUpIkSVLRtGrViqqqqlqDXE0nnHACd9xxBx9++CEACxcuZMmSJbz11lvsvPPODB48mEsvvZTp06cD8L3vfY+HH354vXtUVVXxwAMP8PLLLzN/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tableAge = donnees.pivot_table(index = 'tranche',values='Age', columns=['Smoker','Status'], aggfunc='count')\n", "tableAge.plot.bar(stacked=False,figsize=(15,7))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut sinon simplement calculer la proportion de fumeuses par tranche d'age et voir que cette proportion s'effondre pour les personnes de plus de 65 ans." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "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", "
SmokerNoYesAllratio
tranche
18-34 ans2191814000.452500
35-54 ans1992374360.543578
55-65 ans1221152370.485232
>65 ans192492410.203320
All73258213140.442922
\n", "
" ], "text/plain": [ "Smoker No Yes All ratio\n", "tranche \n", "18-34 ans 219 181 400 0.452500\n", "35-54 ans 199 237 436 0.543578\n", "55-65 ans 122 115 237 0.485232\n", ">65 ans 192 49 241 0.203320\n", "All 732 582 1314 0.442922" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fumeuseAge = donnees.pivot_table(index = 'tranche',values='Age', columns='Smoker', aggfunc='count',margins=True)\n", "fumeuseAge['ratio']=fumeuseAge['Yes']/fumeuseAge['All']\n", "fumeuseAge" ] } ], "metadata": { "hide_code_all_hidden": true, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }