{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Analyse paradoxe de Simpson" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import isoweek\n", "import csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importation données" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "data_url = \"https://gitlab.inria.fr/learninglab/mooc-rr/mooc-rr-ressources/-/raw/master/module3/Practical_session/Subject6_smoking.csv?inline=false\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pour nous protéger contre une éventuelle disparition ou modification du serveur du Réseau Sentinelles, nous faisons une copie locale de ce jeux de données que nous préservons avec notre analyse. Nous téléchargeons les données seulement si la copie locale n'existe pas." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data_file = \"donnees-Simpson.csv\"\n", "\n", "import os\n", "import urllib.request\n", "if not os.path.exists(data_file):\n", " urllib.request.urlretrieve(data_url, data_file)" ] }, { "cell_type": "code", "execution_count": 4, "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", "
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": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raw_data = pd.read_csv(data_file)\n", "raw_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On cherche s'il y a des donnees vides, et on les supprime s'il y en a" ] }, { "cell_type": "code", "execution_count": 5, "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", "
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": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raw_data[raw_data.isnull().any(axis=1)]\n", "data = raw_data.dropna().copy()\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Premiere analyse" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il n y a pas de ligne vide. On peut commencer l analyse en calculant le nombre de fumeurs vivants ou morts, ainsi que le nombre de non-fumeurs vivants ou morts." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "smoker_alive = 0\n", "smoker_dead = 0\n", "no_smoker_alive = 0\n", "no_smoker_dead = 0\n", "for it in range(len(data)):\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Alive\"):\n", " smoker_alive = smoker_alive + 1\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Dead\"):\n", " smoker_dead = smoker_dead + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Alive\"):\n", " no_smoker_alive = no_smoker_alive + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Dead\"):\n", " no_smoker_dead = no_smoker_dead + 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On met en forme ces donnees dans un tableau" ] }, { "cell_type": "code", "execution_count": 21, "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", "
-Non SmokerSmoker
0Alive502443
1Dead230139
\n", "
" ], "text/plain": [ " - Non Smoker Smoker\n", "0 Alive 502 443\n", "1 Dead 230 139" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tableau = [ { \"-\":\"Alive\", \"Smoker\":smoker_alive, \"Non Smoker\":no_smoker_alive },\n", " { \"-\":\"Dead\", \"Smoker\":smoker_dead, \"Non Smoker\":no_smoker_dead },]\n", "df = pd.DataFrame(tableau)\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calcul du taux de mortalité des deux groupes (Fumeurs et Non Fumeurs) et on ajout à notre tableau" ] }, { "cell_type": "code", "execution_count": 25, "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", "
-Non SmokerSmoker
0Alive502443
1Dead230139
2Mortality (%)3123
\n", "
" ], "text/plain": [ " - Non Smoker Smoker\n", "0 Alive 502 443\n", "1 Dead 230 139\n", "2 Mortality (%) 31 23" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "smoker_mortality_rate = int(100*smoker_dead/(smoker_alive+smoker_dead))\n", "no_smoker_mortality_rate = int(100*no_smoker_dead/(no_smoker_alive+no_smoker_dead))\n", "\n", "tableau = [ { \"-\":\"Alive\", \"Smoker\":smoker_alive, \"Non Smoker\":no_smoker_alive },\n", " { \"-\":\"Dead\", \"Smoker\":smoker_dead, \"Non Smoker\":no_smoker_dead }, \n", " { \"-\":\"Mortality (%)\", \"Smoker\":smoker_mortality_rate, \"Non Smoker\":no_smoker_mortality_rate }]\n", "df = pd.DataFrame(tableau)\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ce resultat est surprenant, on voit que le taux de mortalité est plus élevé chez les personnes déclarées comme \"Non-Fumeurs\".\n", "On s'attendrait à voir le résultat inverse." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Deuxieme analyse" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On fait une seconde analyse, en séparant les données par classe d'age. 4 classes d'age sont ainsi définies : 18-34 ans, 35-54 ans, 55-64 ans, plus de 65 ans." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "smoker_alive_18_34 = 0\n", "smoker_dead_18_34 = 0\n", "no_smoker_alive_18_34 = 0\n", "no_smoker_dead_18_34 = 0\n", "\n", "smoker_alive_35_54 = 0\n", "smoker_dead_35_54 = 0\n", "no_smoker_alive_35_54 = 0\n", "no_smoker_dead_35_54 = 0\n", "\n", "smoker_alive_55_64 = 0\n", "smoker_dead_55_64 = 0\n", "no_smoker_alive_55_64 = 0\n", "no_smoker_dead_55_64 = 0\n", "\n", "smoker_alive_65 = 0\n", "smoker_dead_65 = 0\n", "no_smoker_alive_65 = 0\n", "no_smoker_dead_65 = 0\n", "\n", "for it in range(len(data)):\n", " if(data[\"Age\"][it]<=34):\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Alive\"):\n", " smoker_alive_18_34 = smoker_alive_18_34 + 1\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Dead\"):\n", " smoker_dead_18_34 = smoker_dead_18_34 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Alive\"):\n", " no_smoker_alive_18_34 = no_smoker_alive_18_34 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Dead\"):\n", " no_smoker_dead_18_34 = no_smoker_dead_18_34 + 1\n", " \n", " if(data[\"Age\"][it]>34 and data[\"Age\"][it]<=54):\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Alive\"):\n", " smoker_alive_35_54 = smoker_alive_35_54 + 1\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Dead\"):\n", " smoker_dead_35_54 = smoker_dead_35_54 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Alive\"):\n", " no_smoker_alive_35_54 = no_smoker_alive_35_54 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Dead\"):\n", " no_smoker_dead_35_54 = no_smoker_dead_35_54 + 1\n", " \n", " if(data[\"Age\"][it]>54 and data[\"Age\"][it]<=64):\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Alive\"):\n", " smoker_alive_55_64 = smoker_alive_55_64 + 1\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Dead\"):\n", " smoker_dead_55_64 = smoker_dead_55_64 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Alive\"):\n", " no_smoker_alive_55_64 = no_smoker_alive_55_64 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Dead\"):\n", " no_smoker_dead_55_64 = no_smoker_dead_55_64 + 1\n", " \n", " if(data[\"Age\"][it]>64):\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Alive\"):\n", " smoker_alive_65 = smoker_alive_65 + 1\n", " if(data[\"Smoker\"][it]==\"Yes\" and data[\"Status\"][it]==\"Dead\"):\n", " smoker_dead_65 = smoker_dead_65 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Alive\"):\n", " no_smoker_alive_65 = no_smoker_alive_65 + 1\n", " if(data[\"Smoker\"][it]==\"No\" and data[\"Status\"][it]==\"Dead\"):\n", " no_smoker_dead_65 = no_smoker_dead_65 + 1\n", "\n", "smoker_18_34_mortality_rate = int(100*smoker_dead_18_34/(smoker_alive_18_34+smoker_dead_18_34))\n", "no_smoker_18_34_mortality_rate = int(100*no_smoker_dead_18_34/(no_smoker_alive_18_34+no_smoker_dead_18_34))\n", "\n", "smoker_35_54_mortality_rate = int(100*smoker_dead_35_54/(smoker_alive_35_54+smoker_dead_35_54))\n", "no_smoker_35_54_mortality_rate = int(100*no_smoker_dead_35_54/(no_smoker_alive_35_54+no_smoker_dead_35_54))\n", "\n", "smoker_55_64_mortality_rate = int(100*smoker_dead_55_64/(smoker_alive_55_64+smoker_dead_55_64))\n", "no_smoker_55_64_mortality_rate = int(100*no_smoker_dead_55_64/(no_smoker_alive_55_64+no_smoker_dead_55_64))\n", "\n", "smoker_65_mortality_rate = int(100*smoker_dead_65/(smoker_alive_65+smoker_dead_65))\n", "no_smoker_65_mortality_rate = int(100*no_smoker_dead_65/(no_smoker_alive_65+no_smoker_dead_65))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut maintenant mettre ces donnees dans un tableau pour les visualiser" ] }, { "cell_type": "code", "execution_count": 27, "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", "
-Non SmokerSmoker
0Alive (18-34)213176
1Dead (18-34)65
2Mortality (18-34(%))22
3Alive (35-54)180196
4Dead (35-54)1941
5Mortality (35-54(%))917
6Alive (55-64)8164
7Dead (55-64)4051
8Mortality (55-64(%))3344
9Alive (65+)287
10Dead (65+)16542
11Mortality (65+(%))8585
\n", "
" ], "text/plain": [ " - Non Smoker Smoker\n", "0 Alive (18-34) 213 176\n", "1 Dead (18-34) 6 5\n", "2 Mortality (18-34(%)) 2 2\n", "3 Alive (35-54) 180 196\n", "4 Dead (35-54) 19 41\n", "5 Mortality (35-54(%)) 9 17\n", "6 Alive (55-64) 81 64\n", "7 Dead (55-64) 40 51\n", "8 Mortality (55-64(%)) 33 44\n", "9 Alive (65+) 28 7\n", "10 Dead (65+) 165 42\n", "11 Mortality (65+(%)) 85 85" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tableau_2 = [ { \"-\":\"Alive (18-34)\", \"Smoker\":smoker_alive_18_34, \"Non Smoker\":no_smoker_alive_18_34 },\n", " { \"-\":\"Dead (18-34)\", \"Smoker\":smoker_dead_18_34, \"Non Smoker\":no_smoker_dead_18_34 }, \n", " { \"-\":\"Mortality (18-34(%))\", \"Smoker\":smoker_18_34_mortality_rate, \"Non Smoker\":no_smoker_18_34_mortality_rate },\n", " { \"-\":\"Alive (35-54)\", \"Smoker\":smoker_alive_35_54, \"Non Smoker\":no_smoker_alive_35_54 },\n", " { \"-\":\"Dead (35-54)\", \"Smoker\":smoker_dead_35_54, \"Non Smoker\":no_smoker_dead_35_54 }, \n", " { \"-\":\"Mortality (35-54(%))\", \"Smoker\":smoker_35_54_mortality_rate, \"Non Smoker\":no_smoker_35_54_mortality_rate },\n", " { \"-\":\"Alive (55-64)\", \"Smoker\":smoker_alive_55_64, \"Non Smoker\":no_smoker_alive_55_64 },\n", " { \"-\":\"Dead (55-64)\", \"Smoker\":smoker_dead_55_64, \"Non Smoker\":no_smoker_dead_55_64 }, \n", " { \"-\":\"Mortality (55-64(%))\", \"Smoker\":smoker_55_64_mortality_rate, \"Non Smoker\":no_smoker_55_64_mortality_rate },\n", " { \"-\":\"Alive (65+)\", \"Smoker\":smoker_alive_65, \"Non Smoker\":no_smoker_alive_65 },\n", " { \"-\":\"Dead (65+)\", \"Smoker\":smoker_dead_65, \"Non Smoker\":no_smoker_dead_65 }, \n", " { \"-\":\"Mortality (65+(%))\", \"Smoker\":smoker_65_mortality_rate, \"Non Smoker\":no_smoker_65_mortality_rate }]\n", "df_2 = pd.DataFrame(tableau_2)\n", "df_2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On voit que pour les deux classes d'ages 18-34 et 65+, le taux de mortalité est le même pour les fumeurs et les non-fumeurs. En revanche, pour les classes d'age 35-54 et 55-64, le taux de mortalité des fumeurs est nettement plus élevé que celui des non-fumeurs" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }