diff --git a/module3/exo2/exercice.ipynb b/module3/exo2/exercice.ipynb index 0bbbe371b01e359e381e43239412d77bf53fb1fb..b15796cf468621428c81ffbab6b71745980e47c6 100644 --- a/module3/exo2/exercice.ipynb +++ b/module3/exo2/exercice.ipynb @@ -1,5 +1,1045 @@ { - "cells": [], + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Analyse des épidémoies de varicelle" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
weekindicatorincinc_lowinc_upinc100inc100_lowinc100_upgeo_inseegeo_name
02024507753243841068011616FRFrance
120244976015357684549513FRFrance
220244874189145469246210FRFrance
3202447719317263136315FRFrance
4202446722608633657315FRFrance
52024457271312164210426FRFrance
6202444721356763594315FRFrance
7202443721246413607315FRFrance
82024427262112463996426FRFrance
9202441720353813689315FRFrance
10202440721257253525315FRFrance
112024397289813334463426FRFrance
12202438775101513102FRFrance
132024377916281804102FRFrance
14202436722358703600315FRFrance
15202435716202852955204FRFrance
16202434725606224498417FRFrance
17202433719715363406315FRFrance
1820243274399194468547311FRFrance
1920243174500221367877410FRFrance
20202430770044278973011715FRFrance
2120242979270630312237141018FRFrance
2220242879364649812230141018FRFrance
23202427710247709013404151020FRFrance
242024267143681039918337221628FRFrance
25202425711174803914309171222FRFrance
26202424712621935715885191424FRFrance
272024237146571133917975221727FRFrance
28202422711628836114895171222FRFrance
2920242179701685112551151119FRFrance
.................................
17461991267176081130423912312042FRFrance
17471991257161691070021638281838FRFrance
17481991247161711007122271281739FRFrance
1749199123711947767116223211329FRFrance
1750199122715452995320951271737FRFrance
1751199121714903897520831261636FRFrance
17521991207190531274225364342345FRFrance
17531991197167391124622232291939FRFrance
17541991187213851388228888382551FRFrance
1755199117713462887718047241632FRFrance
17561991167148571006819646261834FRFrance
1757199115713975978118169251832FRFrance
1758199114712265768416846221430FRFrance
175919911379567604113093171123FRFrance
1760199112710864733114397191325FRFrance
17611991117155741118419964271935FRFrance
17621991107166431137221914292038FRFrance
1763199109713741878018702241533FRFrance
1764199108713289881317765231531FRFrance
1765199107712337807716597221529FRFrance
1766199106710877701314741191226FRFrance
1767199105710442654414340181125FRFrance
17681991047791345631126314820FRFrance
17691991037153871048420290271836FRFrance
17701991027162771104621508292038FRFrance
17711991017155651027120859271836FRFrance
17721990527193751329525455342345FRFrance
17731990517190801380724353342543FRFrance
1774199050711079666015498201228FRFrance
17751990497114302610205FRFrance
\n", + "

1776 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " week indicator inc inc_low inc_up inc100 inc100_low \\\n", + "0 202450 7 7532 4384 10680 11 6 \n", + "1 202449 7 6015 3576 8454 9 5 \n", + "2 202448 7 4189 1454 6924 6 2 \n", + "3 202447 7 1931 726 3136 3 1 \n", + "4 202446 7 2260 863 3657 3 1 \n", + "5 202445 7 2713 1216 4210 4 2 \n", + "6 202444 7 2135 676 3594 3 1 \n", + "7 202443 7 2124 641 3607 3 1 \n", + "8 202442 7 2621 1246 3996 4 2 \n", + "9 202441 7 2035 381 3689 3 1 \n", + "10 202440 7 2125 725 3525 3 1 \n", + "11 202439 7 2898 1333 4463 4 2 \n", + "12 202438 7 751 0 1513 1 0 \n", + "13 202437 7 916 28 1804 1 0 \n", + "14 202436 7 2235 870 3600 3 1 \n", + "15 202435 7 1620 285 2955 2 0 \n", + "16 202434 7 2560 622 4498 4 1 \n", + "17 202433 7 1971 536 3406 3 1 \n", + "18 202432 7 4399 1944 6854 7 3 \n", + "19 202431 7 4500 2213 6787 7 4 \n", + "20 202430 7 7004 4278 9730 11 7 \n", + "21 202429 7 9270 6303 12237 14 10 \n", + "22 202428 7 9364 6498 12230 14 10 \n", + "23 202427 7 10247 7090 13404 15 10 \n", + "24 202426 7 14368 10399 18337 22 16 \n", + "25 202425 7 11174 8039 14309 17 12 \n", + "26 202424 7 12621 9357 15885 19 14 \n", + "27 202423 7 14657 11339 17975 22 17 \n", + "28 202422 7 11628 8361 14895 17 12 \n", + "29 202421 7 9701 6851 12551 15 11 \n", + "... ... ... ... ... ... ... ... \n", + "1746 199126 7 17608 11304 23912 31 20 \n", + "1747 199125 7 16169 10700 21638 28 18 \n", + "1748 199124 7 16171 10071 22271 28 17 \n", + "1749 199123 7 11947 7671 16223 21 13 \n", + "1750 199122 7 15452 9953 20951 27 17 \n", + "1751 199121 7 14903 8975 20831 26 16 \n", + "1752 199120 7 19053 12742 25364 34 23 \n", + "1753 199119 7 16739 11246 22232 29 19 \n", + "1754 199118 7 21385 13882 28888 38 25 \n", + "1755 199117 7 13462 8877 18047 24 16 \n", + "1756 199116 7 14857 10068 19646 26 18 \n", + "1757 199115 7 13975 9781 18169 25 18 \n", + "1758 199114 7 12265 7684 16846 22 14 \n", + "1759 199113 7 9567 6041 13093 17 11 \n", + "1760 199112 7 10864 7331 14397 19 13 \n", + "1761 199111 7 15574 11184 19964 27 19 \n", + "1762 199110 7 16643 11372 21914 29 20 \n", + "1763 199109 7 13741 8780 18702 24 15 \n", + "1764 199108 7 13289 8813 17765 23 15 \n", + "1765 199107 7 12337 8077 16597 22 15 \n", + "1766 199106 7 10877 7013 14741 19 12 \n", + "1767 199105 7 10442 6544 14340 18 11 \n", + "1768 199104 7 7913 4563 11263 14 8 \n", + "1769 199103 7 15387 10484 20290 27 18 \n", + "1770 199102 7 16277 11046 21508 29 20 \n", + "1771 199101 7 15565 10271 20859 27 18 \n", + "1772 199052 7 19375 13295 25455 34 23 \n", + "1773 199051 7 19080 13807 24353 34 25 \n", + "1774 199050 7 11079 6660 15498 20 12 \n", + "1775 199049 7 1143 0 2610 2 0 \n", + "\n", + " inc100_up geo_insee geo_name \n", + "0 16 FR France \n", + "1 13 FR France \n", + "2 10 FR France \n", + "3 5 FR France \n", + "4 5 FR France \n", + "5 6 FR France \n", + "6 5 FR France \n", + "7 5 FR France \n", + "8 6 FR France \n", + "9 5 FR France \n", + "10 5 FR France \n", + "11 6 FR France \n", + "12 2 FR France \n", + "13 2 FR France \n", + "14 5 FR France \n", + "15 4 FR France \n", + "16 7 FR France \n", + "17 5 FR France \n", + "18 11 FR France \n", + "19 10 FR France \n", + "20 15 FR France \n", + "21 18 FR France \n", + "22 18 FR France \n", + "23 20 FR France \n", + "24 28 FR France \n", + "25 22 FR France \n", + "26 24 FR France \n", + "27 27 FR France \n", + "28 22 FR France \n", + "29 19 FR France \n", + "... ... ... ... \n", + "1746 42 FR France \n", + "1747 38 FR France \n", + "1748 39 FR France \n", + "1749 29 FR France \n", + "1750 37 FR France \n", + "1751 36 FR France \n", + "1752 45 FR France \n", + "1753 39 FR France \n", + "1754 51 FR France \n", + "1755 32 FR France \n", + "1756 34 FR France \n", + "1757 32 FR France \n", + "1758 30 FR France \n", + "1759 23 FR France \n", + "1760 25 FR France \n", + "1761 35 FR France \n", + "1762 38 FR France \n", + "1763 33 FR France \n", + "1764 31 FR France \n", + "1765 29 FR France \n", + "1766 26 FR France \n", + "1767 25 FR France \n", + "1768 20 FR France \n", + "1769 36 FR France \n", + "1770 38 FR France \n", + "1771 36 FR France \n", + "1772 45 FR France \n", + "1773 43 FR France \n", + "1774 28 FR France \n", + "1775 5 FR France \n", + "\n", + "[1776 rows x 10 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_data=pd.read_csv('inc-7-PAY.csv',skiprows=1)\n", + "raw_data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1776 entries, 0 to 1775\n", + "Data columns (total 10 columns):\n", + "week 1776 non-null int64\n", + "indicator 1776 non-null int64\n", + "inc 1776 non-null int64\n", + "inc_low 1776 non-null int64\n", + "inc_up 1776 non-null int64\n", + "inc100 1776 non-null int64\n", + "inc100_low 1776 non-null int64\n", + "inc100_up 1776 non-null int64\n", + "geo_insee 1776 non-null object\n", + "geo_name 1776 non-null object\n", + "dtypes: int64(8), object(2)\n", + "memory usage: 138.8+ KB\n" + ] + } + ], + "source": [ + "raw_data.info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On voit ici qu'il n'y a aucune données manquantes entre fin 1990 et fin 2024, et toutes les données numériques sont au format `int`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], "metadata": { "kernelspec": { "display_name": "Python 3", @@ -16,10 +1056,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.3" + "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 } - diff --git a/module3/exo3/exercice_fr.ipynb b/module3/exo3/exercice_fr.ipynb index 0bbbe371b01e359e381e43239412d77bf53fb1fb..1ff3ad270886dad506371bf28fd5835fd77530c5 100644 --- a/module3/exo3/exercice_fr.ipynb +++ b/module3/exo3/exercice_fr.ipynb @@ -1,6 +1,2242 @@ { - "cells": [], + "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": 14, + "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": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "donnees = pd.read_csv('Subject6_smoking.csv')\n", + "donnees" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "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": 39, + "metadata": { + "hideCode": false, + "hidePrompt": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "No 732\n", + "Yes 582\n", + "Name: Smoker, dtype: int64" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "donnees['Smoker'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "hideCode": false, + "hidePrompt": true, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Alive 945\n", + "Dead 369\n", + "Name: Status, dtype: int64" + ] + }, + "execution_count": 40, + "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": 41, + "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": 41, + "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": 35, + "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": 55, + "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": 55, + "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": 70, + "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": 70, + "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": 71, + "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": 68, + "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": 68, + "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": 69, + "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": 73, + "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": 73, + "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": 72, + "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": 72, + "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": 74, + "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": 75, + "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": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "donnees" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "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": 84, + "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": 86, + "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": 86, + "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": 87, + "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": 87, + "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": 88, + "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": 88, + "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": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAANgCAYAAABk3r9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3X901dWd7//XhiSaHCwkcEgF0UiE2MhIdCJTtRWDaO3UguNUade3s7L49oeddevcVm9bZ1artWUV59uv1plZ61vt7Sy++a65M4M4nZpLF94iDeltkUKq0ULkgAcC4YfhmBPRnAQTzP7+weZMP1znirM+J3v7yfOxFutNYmJea/FHXmt/9mdvY60VAAAAJtYU3wEAAAAmI0oYAACAB5QwAAAADyhhAAAAHlDCAAAAPKCEAQAAeEAJAwAA8IASBgAA4AElDAAAwIMy3wHOxaxZs2xdXZ3vGAAAAO/qt7/97WvW2vS7fd37ooTV1dWpq6vLdwwAAIB3ZYw5eC5fx+NIAAAADyhhAAAAHlDCAAAAPKCEAQAAeEAJAwAA8IASBgAA4AElDAAAwANKGAAAgAeUMAAAAA8oYQAAAB5QwgAAADyghAEAAHhACQMAAPCAEgYAAOABJQwAAMADShgAAIAHlDAAAAAPKGEAAAAeUMIAAAA8oIQBAAB4QAkDAADwgBIGAADgASUMAADAA0oYAACAB5QwAAAADyhhAAAAHlDCAAAAPKCEAQAAeEAJAwAA8IASBgAA4AElDAAAwIOSljBjzH82xuwyxuw2xnzFfa7GGLPZGLPPzepSZgAAAAhRyUqYMWaRpC9IWiJpsaTbjDELJN0vaYu1doGkLe5jAACASaWUK2EfkrTdWjtsrT0lqVPSn0haKanNfU2bpNtLmAEAACBIpSxhuyTdYIyZaYypkvTHkuZJqrXWHpMkN2e/0zcbY75ojOkyxnTlcrkSxjwtXxjVE51Z5QujJf9ZAAAAJSth1tqXJf21pM2SnpH0oqRT7+H7f2StbbbWNqfT6RKl/Dcbuvq0dtMebejqK/nPAgAAKCvl/9xa+/eS/l6SjDHfk3RYUr8x5kJr7TFjzIWSjpcyw7m6s3leZAIAAJRSqd+OnO3mxZLukPRPktoltbovaZX0dCkznKvB4VFt3z+gwWEeRwIAgNIr6UqYpH8xxsyUNCbpP1lrB40xD0t60hjzOUmHJN1Z4gznZM3GHnVkcpJ6tG71Et9xAABAwpX6ceRH3+FzA5JuKuXP/Y+4Z9kCHcoP655lC3xHAQAAkwAn5js7e/PK5gra2Zv3HQUAAEwCpX4c+b6xvLFW2/cPaHljre8oAABgEmAlzGnvPqKOTE7t3Ud8RwEAADEL8TxQSliROWsCAICkCPE8UB5HOq3X1amqYirnhAEAkEAhngdqrLW+M7yr5uZm29XV5TsGAADAuzLG/NZa2/xuX8fjSCfEZ8UAACC5KGFOiM+KAQBAPEJcbKGEOcsba9XSkOaICgAAEqht2wGt3bRHbdsO+I5SRAlz2ruPuiMqjvqOAgAAYhfeKQi8HekMuuXJwYCWKQEAQDxCPAWBlTBn/2tDkQkAAFBKlDDnoZWL1NKQ1kMrF/mOAgAAYhbiC3g8jnSqqyr04fkzVV1V4TsKAACIWYiHtbIS5oT41gQAAIhHTapCdy+tV00qnMUWSpgzMjoemQAAIDmyuSGtXrdD2Vw4e78pYU5lxdTIBAAAyfHg07vVkcnpwad3+45SRAlzVjTNUUtDWiua5viOAgAAYtZ44QWRGQI25jttv+5VRyanedW9+s7tvCEJAECSfOnGyzRz2nlBbcynhDm/3JeLTAAAkBxnNuaHhMeRzrc/eYVqUuX69iev8B0FAABMApQwJ9P/pvKFMWX63/QdBQAATAI8jnRCPMQNAAAkFyXMCfFZMQAASC4eRzr5wqie6MwqXxj1HQUAAEwClDCHa4sAAMBEooQ5I2PjkQkAAJIjxCdelLAzrI1OAACQGBu6+rR20x5t6OrzHaWIjflOZUVZZAIAgOQI8RQEGofTel2dqiqmBvWPAwAA4hHiKQiUMCfEfxwAAJBc7AkDAADwgBLmZHNDWr1uh7K5Id9RAADAJEAJc/7qJ79TRyanv/rJ73xHAQAAkwAlrMieNQEAAEqHEub8+dLLVJMq158vvcx3FAAAMAlQwpy253qVL4yp7blez0kAAMBkQAlzWq+tU02qXK3X1vmOAgAAJgFKmPO3v9infGFMf/uLfb6jAACASYAS5uTefCsyAQAASokS5nx35SLVpMr13ZWLfEcBAACTACXMyfS/qXxhTJn+N31HAQAAkwB3Rzoh3q4OAACSi5UwAACQePnCqJ7ozCpfGPUdpYgS5rRtO6C1m/aobdsB31EAAEDMNnT1ae2mPdrQ1ec7ShGPI53e1wqRCQAAkiPEbUeUMGfr3lxkAgCA5KhJVejupfW+Y0TwONK5dv7MyAQAACglSpgzODwWmQAAIDnYmB+wxRfNiEwAAJAcbMwP2Kol87Tv+JtatSScDXsAACAeIW7MZyXMebanXx2ZnJ7t6fcdBQAATAKUMGd5Y61aGtJa3ljrOwoAAIhZiOeBUsIcVsIAAEgyc9b0jz1hTojPigEAQDxar6tTVcXUoH7PG2ut7wzvqrm52XZ1dfmOAQAA8K6MMb+11ja/29fxONLJ5oa0et0OZXNDvqMAAIBJgBLmPPj0LnVkcnrw6V2+owAAgEmAEubMT0+LTAAAgFKihDnVVeWRCQAAkiPEa4t4O9JZ0TRXLx0+oRVNc31HAQAAMTtzbZEk3b203nOa0yhhTnv3EXVkcrryoiP66s0NvuMAAIAYhXgUFSWsKLxD3AAAQDxqUhXBrICdQQlzVjTN0UuHX9eKpjm+owAAgEmAjfkO1xYBAICJRAlzuMAbAIDkCvHtSEqYs35HnzoyOa3f0ec7CgAAiNmZtyM3dIXze549Yc72/a9FJgAASA7ejgzYgFueHAhomRIAAMQjxLcjeRzpXF8/MzIBAABKiRLmzKg6LzIBAEBysDE/ZJzVCgBAYrExP2T2rAkAABJjeWOttu8fCOooKlbCAABA4oV4KDsrYUUshQEAkFQcURGwyoqyyAQAAMnBERUBW7owrfp0SksXpn1HAQAAMePtyIA9ujmjbK6gRzdnfEcBAAAx4+3IgM2ZURmZAAAgOXg7MmAHBwqRCQAAkoO3IwPWUPsB/ebAoBpqP+A7CgAAiBlvRwasOlURmQAAIDl4OzJgK5rmqKUhrRVNc3xHAQAAMePtyICt39mnjkxO63eG89YEAACIB29HBmz3kRORCQAAkiPEPWGshDn33dKg+nRK993S4DsKAACI2Zk9YTUB7f2mhDk7e/PK5gra2Zv3HQUAAMSMPWEBW95Yq5aGdFCHuAEAgHiwJyxg7d1H1ZHJ6cqLjuqrNy/0HQcAAMSIPWFBs2dNAACA0mElzGm97lJVVZQF1ZABAEA8zjyOlBTMoa2UMCfEk3QBAEA8uMAbAADAAy7wBgAA8GDSbcw3xnzVGLPbGLPLGPNPxpjzjTE1xpjNxph9blaXMsO5CvH8EAAAEI9JdVirMWaupL+Q1GytXSRpqqRPS7pf0hZr7QJJW9zH3oV4fggAAEiuUj+OLJNUaYwZk1Ql6aikv5R0o/vvbZK2SvpGiXO8qxCXKQEAQHKVbCXMWntE0v8t6ZCkY5JOWGt/LqnWWnvMfc0xSbNLlQEAACBUpXwcWS1ppaRLJc2RlDLGfPY9fP8XjTFdxpiuXC5XqphFj23OaO2mPXpsc6bkPwsAAKCUG/OXSzpgrc1Za8ck/UTSdZL6jTEXSpKbx9/pm621P7LWNltrm9PpdAljnvbLfa9FJgAAQCmVsoQdkvRhY0yVMcZIuknSy5LaJbW6r2mV9HQJM5yzR+9qUn06pUfvavIdBQAATAIl25hvrf2NMeYpSc9LOiXpBUk/kjRN0pPGmM/pdFG7s1QZ3ourL6nWlvtu9B0DAABMEiV9O9Ja+6CkB8/69Fs6vSoWlHxhVBu6+nRn87ygzhABAADJxLVFTtu2A1q7aY/ath3wHQUAAEwClDBnZHQ8MgEAAEqJEuZUVkyNTAAAgFKihDkrmuaopSGtFU1zfEcBAAAxC/GOaEqY0959RB2ZnNq7j/iOAgAAYhbiHdGlvjvyfcScNQEAQFKEeEc0Jcxpva5OVRVTg/rHAQAA8ahJVejupfW+Y0TwOBIAAMADSpgT4rNiAACQXDyOdEJ8VgwAAJKLlTAAAAAPKGHO41uzWrtpjx7fmvUdBQAAxCybG9LqdTuUzQ35jlJECXNePPx6ZAIAgOR48Old6sjk9ODTu3xHKaKEOQ210yITAAAkR+OF0yMzBGzMd86vKItMAACQHF+6sV4zp1UE9QIejcOpLJ8SmQAAIDlCPKyVEuasaJqrlw6f0Iqmub6jAACASYBlH+fZnn51ZHJ6tqffdxQAADAJUMKc5Y21amlIa3ljre8oAAAgZvnCqJ7ozCpfGPUdpYgS5qzfcUgdmZzW7zjkOwoAAIhZiNcTsifMefHwicgEAADJEeL1hKyEOYvnzYhMAACQHGfejqxJVfiOUsRKmLPqmnna1/+mVl0TTkMGAADJxUqY0959RB2ZnNq7j/iOAgAAJgFKWJE5awIAAJQOJcxZ0TRHLQ1prWia4zsKAACIGUdUBIzDWgEASC6OqAjY8sZabd8/wGGtAAAkEEdUBGz9zr7Th7XuDKchAwCAeIR4RAUlzNl95ERkAgAAlBIlzLnvlgbVp1O675YG31EAAMAkQAlzdvbmlc0VtLM37zsKAACYBNiY74S4YQ8AACQXK2FO72sFPdnVp97XCr6jAACASYAS5tz7ZLeyuYLufbLbdxQAADAJUMKcGxakIxMAAKCUKGFO6/V1amlIq/X6Ot9RAABAzLi2KGAc1goAQHJxbVHAOKwVAIDkCvEUBFbCnC98dL5qUuX6wkfn+44CAABixrVFAWt7rlf5wpjanuv1nAQAAEwGPI50vnlbo6QeNwEAAEqLlTCnuqpCH54/U9VV4SxTAgCA5KKEOW3bDmjtpj1q23bAdxQAABAzjqgI2ODwWGQCAIDk4IiKgO1yR1Ps4ogKAAASJ8QjKihhTvlUE5kAACA5zhxRERIeRzrfuPVDqk+n9I1bP+Q7CgAAiBl7wgK2szevbK6gnb1531EAAEDM2BMWsOWNtdq+f0DLG2t9RwEAADELcU8YK2HOsz396sjk9GxPv+8oAAAgZiFeW8RKmMNKGAAAmEishDmshAEAgInESpgT4rNiAACQXKyEOYPDo9q+f0CDw+G8ugoAAOKRzQ1p9bodyuaGfEcpooQ5D/x0lzoyOT3w012+owAAgJit2dijjkxOazb2+I5SRAlzrpg7PTIBAEBy3LNsgerTKd2zbIHvKEWUMGfVNfPU0pDWqmvYEwYAQNJ07j2ubK6gzr3HfUcpooQ57d1H1ZHJqb37qO8oAAAgduas6R9vRxbZsyYAAEiK1uvqVFUxNahTEChhTut1l6qqoiyofxwAABCPMyfmh4QS5oT4jwMAAJKLPWEAAAAeUMKc5w8O6qZHtur5g4O+owAAgEmAEuZ8+R+fVzZX0Jf/8XnfUQAAwCRACXOMiU4AAIBSooQ5f/eZq1WfTunvPnO17ygAAGAS4O1I5+pLqrXlvht9xwAAAJMEK2FOvjCqJzqzyhdGfUcBAACTACXM2dDVp7Wb9mhDV5/vKAAAYBLgcaSzvLFW2/cPaHljre8oAABgEmAlzOECbwAAMJEoYUVc4A0AACYOjyMdLvAGAAATiRLmcIE3AACYSDyOdDiiAgCA5Arx9zwlzOGICgAAkivE3/M8jnTO7AVjTxgAAMkT4u95VsKcweFRbd8/oMHhcJYpAQBAPM7s/a5JVfiOUkQJc9Zs7FFHJqc1G3t8RwEAADFjT1jA7lm2QPXplO5ZtsB3FAAAELMQ94RRwpydvXllcwXt7M37jgIAAGK2vLFWLQ3poK4npIQ519TVqD6d0jV1Nb6jAACAmD3b06+OTE7P9vT7jlJECXMe3vSysrmCHt70su8oAAAgZnc2z9NffvzyoN6O5IgKxxgTmQAAIDlCvBmHlTDnG7dervp0St+49XLfUQAAwCRACXOe2fWqsrmCntn1qu8oAAAgZhxREbCeYyciEwAAJEeIR1SwJ8x5aOUirdnYo2/e1ug7CgAAiFmI1xZRwpzqqgp9eP5MVVeFc50BAACIBxvzAxbiMiUAAEguVsKc5Y212r5/IKiTdAEAQHKxEuaEeJIuAABILlbCnBA37AEAgOQq2UqYMabBGNP9e3/eMMZ8xRhTY4zZbIzZ52Z1qTK8F2c27NWk2JgPAABKr2QlzFqbsdY2WWubJP2hpGFJ/yrpfklbrLULJG1xHwMAAEwqE7Un7CZJWWvtQUkrJbW5z7dJun2CMgAAAARjokrYpyX9k/t7rbX2mCS5OXuCMgAAAASj5CXMGFMhaYWkDe/x+75ojOkyxnTlcrnShAMAAPBkIlbCPi7peWvtmbMf+o0xF0qSm8ff6ZustT+y1jZba5vT6fQExAQAAJg4E1HCPqN/exQpSe2SWt3fWyU9PQEZ3lWIt6sDAIDkKmkJM8ZUSbpZ0k9+79MPS7rZGLPP/beHS5nhXLVtO6C1m/aobdsB31EAAMAkUNLDWq21w5JmnvW5AZ1+WzIoI2PjkQkAAFBKXFt0hj1rAgAAlBAlzKmsmBKZAAAApcTdkU7rdZeqqqKMuyMBAMCEoIQ5Z+6OBAAAmAg8e3M4ogIAAEwkSpizoatPazft0YauPt9RAADAJMDjSOfMXjD2hAEAgIlACXPYEwYAACYSjyMBAAA8oIQ5bMwHAAATiRLmPL41q7Wb9ujxrVnfUQAAQMxCXGyhhDk9x05EJgAASI4QT0FgY77z0MpFWrOxR9+8rdF3FAAAELMQT0GghDnVVRX68PyZqq6q8B0FAADELMRTEHgc6YS4TAkAAJKLlTAnxGVKAACQXKyEAQAAeEAJcx7vdEdUdHJEBQAAKD1KmPNi3+uRCQAAUEqUMKehdlpkAgCA5OCw1oCdX1EWmQAAIDlCPAWBxuFUlk+JTAAAkBwhnoJA43CWLpyt+nRKSxfO9h0FAABMApQw5+9+sU/ZXEF/94t9vqMAAICY8TgyYKfvjOTuSAAAkijEx5GUMIe7IwEASC7ujgxYiMuUAAAguShhzvLGWrU0pLW8sdZ3FAAAEDPOCQtYe/dRdWRyau8+6jsKAACIWYhPvNgT5oyMnopMAACQHCFuzGclrMicNQEAAEqHEub0vzESmQAAIDl4HBmwrXtzkQkAAJKDx5EB+5h7K/JjvB0JAEDinDknrCYVznmglDDn/j9u1F9+/HLd/8ecmA8AQNJkc0NavW6Hsrkh31GKKGHO4PCotu8f0OBwOOeHAACAeKzZ2KOOTE5rNvb4jlLEnjDnzD+O1KN1q5f4jgMAAGIU4h3RlDDnnmULdCg/rHuWLfAdBQAAxCzEO6J5HOk8s+tVZXMFPbPrVd9RAABAzNq29Wrtpj1q29brO0oRJczpOpiPTAAAkBwh3oxDCXPKp06JTAAAkByVFWWRGYJwknj2jVsv19eeelHfuPVy31EAAEDMWq+rU1XFVA5rDVHn3uPK5grq3HvcdxQAABAzDmsN2MjoeGQCAACUEiUMAADAA0rYGeasCQAAUEKUMKeyfEpkAgAAlBJvRzqt112qqoqyoN6aAAAAyUUJc868NQEAADARePYGAADgASUMAADAA0oYAACAB5QwAAAADyhhAAAAHlDCAAAAPKCEOdnckFav26Fsbsh3FAAAMAlQwpw1G3vUkclpzcYe31EAAMAkwGGtzj3LFuhQflj3LFvgOwoAAJgEWAlzfvrCYWVzBf30hcO+owAAgJjlC6N6ojOrfGHUd5QiSpjzy32vRSYAAEiODV19WrtpjzZ09fmOUkQJcx69q0n16ZQevavJdxQAABCz5Y21amlIa3ljre8oRZQwAACQeO3dR9SRyam9+4jvKEWUMOfeJ7uVzRV075PdvqMAAICYHTtxMjJDQAlzbliQjkwAAJAcv3J7vn8V0N5vSpiz7PLZqkmVa9nls31HAQAAMZt1wXmRGQJKmPNg+27lC2N6sH237ygAACBml9deEJkhoIQ5f3RpTWQCAIDkOJgfjswQUMKcC2ecH5kAACA5GtwKWENAK2FcW+SsaJqrlw6f0Iqmub6jAACAmJ1fPjUyQ8BKmLN+xyF1ZHJav+OQ7ygAACB29qzpHyXM6To4GJkAACA5KivKIjME4STx7NTb45EJAACSo/W6OlVVTNWdzfN8RyliJcw5NW4jEwAAoJQoYc5rb74VmQAAIDke3vSy1m7ao4c3vew7ShElzDHGRCYAAEiOZ3Yfi8wQUMKcpQ3pyAQAAMlx5ZwZkRkCSphz4fTzIxMAACTHS0dORGYIeDvS4bBWAACSa+708/TGyVOaO50LvIPT3n1EHZmc2ruP+I4CAABitvCDH4jMEFDCisxZEwAAJEV334nIDAGPI50QD3EDAADxeGjFFbp3Q7ceWnGF7yhFrIQ5g8Oj2r5/QIPDo76jAACAmL3QN6h8YUwv9IVzPSElzHngp7vUkcnpgZ/u8h0FAADEbGRsPDJDQAlz6tPTIhMAACRHZfmUyAwBe8KK7FkTAAAkRet1l6qqoiyovd/h1EHP9r82HJkAACA5el8r6MmuPvW+VvAdpYgS5jy08gq1NKT10Mpw3poAAADx+PI/Pq9srqAv/+PzvqMU8TjSqU9P07rVS3zHAAAAJTBubWSGgJUwJ18Y1ROdWeULHFEBAEDS3NL4wcgMASthzoauPq3dtEeSdPfSes9pAABAnL5y80LNra4MamM+JcxZ3lir7fsHtLyx1ncUAAAwCfA40nlia1YdmZye2Jr1HQUAAMTs8a1Zrd20R48H9HueEuZsfrk/MgEAQHK8eHgwMkNACXN+cFeTalLl+sFdTb6jAACAmC2+qDoyQ1DSPWHGmBmSfixpkU4fRf9/SspIWi+pTlKvpLustd5r6ZXzZujuG+p15bwZvqMAAICYfenGes2cVhHUxvxSr4T9jaRnrLWXS1os6WVJ90vaYq1dIGmL+9i7tm0HtHbTHrVtO+A7CgAAiNng8Ki27x/Q4HA4R1GVrIQZYz4g6QZJfy9J1tpRa+3rklZKanNf1ibp9lJleC+OvX4yMgEAQHI8+PRudWRyevDp3b6jFJVyJWy+pJykdcaYF4wxPzbGpCTVWmuPSZKbs0uY4Zw9t38gMgEAQHLMmX5eZIaglCWsTNLVkn5orb1KUkHv4dGjMeaLxpguY0xXLpcrVcaiBbOnRSYAAEiOg/mRyAxBKUvYYUmHrbW/cR8/pdOlrN8Yc6EkuXn8nb7ZWvsja22ztbY5nU6XMOZpvz00GJkAACA5Fl80PTJDULISZq19VVKfMabBfeomST2S2iW1us+1Snq6VBnei4+5u6Q+FtCdUgAAIB6rllysloa0Vi252HeUolJfW3SPpP9mjKmQtF/Sap0ufk8aYz4n6ZCkO0uc4Zzc/8cfUv3saUG9ugoAAOLR3n1UHZmcrrzoqL5680LfcSSVuIRZa7slNb/Df7qplD/3P+LMq6vLG2tVk6rwHQcAAMRoZPTtyAwBJ+Y7D/x0lzoyOT3w012+owAAgJidHHs7MkNACXOumDs9MgEAQHJk+t+IzBBQwpxV18w7vWHvGvaEAQCQNA0f/EBkhoAS5jzb06+OTE7P9vT7jgIAAGJ2ftmUyAxBqd+OfN9Y3lhb3JgPAACS5eTYeGSGIJw66BkrYQAAJFd332BkhoCVMIeVMAAAkmtweCwyQ8BKmMNKGAAAyfX1jzWosnyKvv6xhnf/4glCCXOWN9aqpSHNShgAAAn0D785qJGxcf3Dbw76jlJECXPW7zikjkxO63cc8h0FAADEjBPzA7b9QD4yAQBAcpRNnRKZIQgniWevvj4SmQAAIDkWuRtxFgV0Mw4lzDHGRCYAAEiOEA9rDSeJZ1dfPCMyAQBAcpw8NR6ZIaCEOS+/+mZkAgCA5Nh15ERkhoAS5nz7k1eoJlWub3/yCt9RAADAJEAJc17oG1S+MKYXArrOAAAAxGPRnOmRGQJKmDMyOh6ZAAAgSexZ0z9K2BnmrAkAABIj0z8UmSGghDmV5VMiEwAAJMfii6ZHZghoHM7ShbNVn05p6cLZvqMAAICYrVpysVoa0lq15GLfUYooYc6jmzPK5gp6dHPGdxQAABCzEO+IpoQ5jRdOj0wAAJAcPcfejMwQUMKcWxd9UPXplG5d9EHfUQAAQMzuvXmh6tMp3XvzQt9RiihhziM/P/048pGf8zgSAICk6dybUzZXUOfenO8oRZQw5wp3q/oVAd2uDgAA4sI5YcG69Qr3OPIKHkcCAJA0K5rmqqUhrRVNc31HKaKEOX/9zMvK5gr662de9h0FAADErL37qDoyObV3H/UdpYgSVsSR+QAAJNVg4a3IDAElzPneHX+gloa0vnfHH/iOAgAAYrbr6BuRGQJKGAAASLxT4zYyQ0AJcx58erc6Mjk9+PRu31EAAEDMyqaYyAwBJcyZM+P8yAQAAMnRfEl1ZIagzHeAUOw6/HpkAgCA5Fi15GLtOz7EBd4hOpgfjkwAAJAcbb/uVUcmp7Zf9/qOUkQJcyrLp0YmAABIjl/uy0VmCChhTs20isgEAADJ8ehdTapPp/ToXU2+oxRRwpyhk29HJgAASI66WSnd1TxPdbNSvqMUUcKc5Y21kQkAAJLjsWf3au2mPXrs2b2+oxRRwpzbm+aqPp3S7QFd7AkAAOKx5eX+yAwBJcx5eNPpC7wf3sQF3gAAJM3088siMwSUMOf1kdHIBAAAyXFBZXlkhoAS5hx5fSQyAQBAcvz50stUkyrXny+9zHeUIkqYU1VWFpkAACA5ftj5ivKFMf2w8xXfUYooYc4f1lVHJgAASI6R0bcjMwSUMOflY29GJgAASI6yqVMiMwThJPHsB6tOn6T7g1XhnKQLAADi0XxJdWSGgA1QztWXVGvLfTf6jgEAAErgSzdeppnTztOdzfN8RymihAHoZms5AAAgAElEQVQAgMSrSVXo7qX1vmNE8DgSAADAg3ctYcaYWmPM3xtjNrmPG40xnyt9NAAAgOQ6l5Ww/1fS/5A0x328V9JXShUIAABgMjiXEjbLWvukpHFJstaekhTOIRsAAADvQ+dSwgrGmJmSrCQZYz4s6URJUwEAACTcubwdea+kdkn1xphfS0pL+lRJUwEAACTcu5Ywa+3zxpilkhokGUkZa+1YyZMBAAAk2LuWMGPMHWd9aqEx5oSk31lrj5cmFgAAQLKdy56wz0n6saT/w/35rzr9iPLXxpg/K2E2AACAWDx/cFA3PbJVzx8c9B2l6FxK2LikD1lr/9Ra+6eSGiW9JemPJH2jlOEmUr4wqic6s8oXRn1HAQAAMfvaUy8qmyvoa0+96DtK0bmUsDprbf/vfXxc0kJrbV5SYvaGbejq09pNe7Shq893FAAAELNvfaJRNalyfesTjb6jFJ3L25H/0xizUdIG9/GfSvqlMSYl6fWSJZtgZy70DOliTwAAEI9f7DmufGFMv9hzXDdePtt3HEnnVsL+k6Q7JH3EfbxD0oXW2oKkllIFm2ghXuwJAADi8ct9ucgMwbs+jrTWWklZnX70+CeSbpL0colzTTj2hAEAkFyP3tWk+nRKj97V5DtK0b+7EmaMWSjp05I+I2lA0npJxlqbmNWv3/f41qx+9D/3a2BoVH/1iQ/5jgMAAGJUNyulu5rnqW5WyneUov/dStgenV71+qS19iPW2r9Tgu+MfPHw65EJAACSo23bAa3dtEdt2w74jlL0vythfyrpVUkdxpj/aoy5SadPzE+khtoLIhMAACTHyNh4ZIbg3y1h1tp/tdauknS5pK2Sviqp1hjzQ2PMLROUbwLZsyYAAEiMAH/Nn8vG/IK19r9Za2+TdJGkbkn3lzzZBNt19I3IBAAAyVFZMSUyQ3AuR1QUuQNan3B/EibAigwAAGLRet2lqqooC+o80HDqoGfNl8yMTAAAgFJ6TythSbZqyTztO/6mVi0JpyEDAIB4tG07oL/Z8oqGR0/pqzc3+I4jiZWwovbuI+rI5NTefcR3FAAAEDtz1vSPEub0vjYcmQAAIDkuS6dUWT5Fl6XfH4e1Tiode/sjEwAAJMcD7bs1MjauB9p3+45SRAlzrp8/KzIBAEBy3LBgVmSGgBLmvHHyVGQCAIDkOK98amSGgBLmfPqaeaosn6JPX8PbkQAAJM2OA/nIDAElzHlsyz6NjI3rsS37fEcBAAAx++wfXawp5vQMBSXM+dYnGlWTKte3PtHoOwoAAIjZ/9OZ1bg9PUNBCXMy/W8qXxhTpv9N31EAAEDMHvrkFaosn6KHPnmF7yhFlDDnmroa1adTuqauxncUAAAQs1dyQxoZG9cruSHfUYooYc5fP7NH2VxBf/3MHt9RAABAzEZGxyMzBJSwInvWBAAASVFZMTUyQ8AF3s43bv2QvvbUi/rGrR/yHQUAAMSs9bo6VVVM1Z3N4RxFxUqY07k3p2yuoM69Od9RAADAJEAJc0ZGT0UmAABIjrZtvVq7aY/atvX6jlJECXMqK8oiEwAAJEl4e79pHE6Iz4oBAEA8VjTN1UuHT2hF01zfUYpYCXNqUhW6e2m9alIVvqMAAICYrd/Zp45MTut39vmOUkQJc7K5Ia1et0PZgA5xAwAA8dh5YCAyQ0AJc9Zs7FFHJqc1G3t8RwEAADF720ZnCNgT5nzztkZJPW4CAIBEsTY6A8BKmHNieEyH8sM6MTzmOwoAAIhZiCfmU8Kcrz31orK5gr721Iu+owAAgJh9744r1dKQ1vfuuNJ3lKKSljBjTK8x5nfGmG5jTJf7XI0xZrMxZp+b1aXMcK6+9YlG1aTK9a1P8DgSAICkqU9P07rVS1SfnuY7StFErIS1WGubrLXN7uP7JW2x1i6QtMV97N0LfYPKF8b0Qt+g7ygAACBmzx8c1E2PbNXzB8P5Pe/jceRKSW3u722SbveQ4R2YsyYAAEiKe5/sVjZX0L1PdvuOUlTqtyOtpJ8bY6ykJ6y1P5JUa609JknW2mPGmNklznBOODEfAIDkumHBLPUOHNINC2b5jlJU6hJ2vbX2qCtam40xe871G40xX5T0RUm6+OKLS5UPAABMAq3XX6q+wRG1Xn+p7yhFJX0caa096uZxSf8qaYmkfmPMhZLk5vF/53t/ZK1tttY2p9PpUsaUJG3o6tPaTXu0oSuc6wwAAEA82ruPqCOTU3v3Ed9Rikq2EmaMSUmaYq190/39FknfkdQuqVXSw24+XaoM78WZx5A8jgQAIHlGxsYjMwSlXAmrlfQrY8yLknZI+pm19hmdLl83G2P2SbrZfezd4PCotu8f0ODwqO8oAAAgbgGemF+ylTBr7X5Ji9/h8wOSbirVz/2POnN3pNSjdauX+I4DAABidNKtgJ2cJCth7yut19apJlWu1mvrfEcBAAAx+92R1yMzBJQw54edWeULY/phZ9Z3FAAAELOKsqmRGQJKmGPdM2Ib0LNiAAAQj8/+0cWqLJ+iz/5ROMdeUcKc+z/+IdWnU7r/4x/yHQUAAMTssS37NDI2rse27PMdpYgS5nTuPa5srqDOve94bBkAAHgf+/6nFqs+ndL3P/W/vDPoTalPzH/fGBkdj0wAAJAcV19SrS333eg7RgQrYQAAAB5QwpzKiqmRCQAAkiObG9LqdTuUzQ35jlJECXNWNM1RS0NaK5rm+I4CAABiduZQ9jUbe3xHKaKEOet39Kkjk9P6HVzgDQBA0nzztka1NKT1zdsafUcpooQ5PcdORCYAAEApUcKce29uUH06pXtvbvAdBQAAxOyr//y8OjI5ffWfn/cdpYgS5uzszSubK2hnb953FAAAELOD+ZHIDAElzGmovUA1qXI11F7gOwoAAIjZ36y6SjWpcv3Nqqt8RymihDnf/VmP8oUxffdn4bw1AQAA4nHlvBm6+4Z6XTlvhu8oRZQw51ufaFRNqlzf+kQ4b00AAIB4PL71Fa3dtEePb33Fd5QiSpiT6X9T+cKYMv1v+o4CAABi1nPszcgMASXMWd5Yq5aGtJY31vqOAgAAYvb5j1yqmlS5Pv+RS31HKaKEOe3dR9WRyam9+6jvKAAAIGY//tV+5Qtj+vGv9vuOUkQJc0ZG345MAACQHPPT0yIzBJQw5/XhtyITAAAkR3VVeWSGoMx3gFA8tz8fmQAAIDlWNM3VS4dPaEXTXN9RilgJc66tnxmZAAAgOULc+00Jc2ZUVkQmAABIEnvW9I/HkQAAIPFar7tUVRVlurN5nu8oRayEFYXXkAEAQHJRworMWRMAACTF41uz7tqirO8oRZQwp7JiamQCAIDkePHwYGSGgBLmrGiao5aGtFY0zfEdBQAAxOySmanIDAElzGnvPuJeXT3iOwoAAIjZwYFCZIaAEuYMFsYiEwAAJMfii6ojMwQcUeFkc0ORCQAAkuNLN9Zr5rQKjqgI0Rc+Ol81qXJ94aPzfUcBAAAxq0lV6O6l9apJhXMoOyXM+fGv9itfGNOPf7XfdxQAABCzfGFUT3RmlS+M+o5SRAlz5qenRSYAAEiODV19WrtpjzZ09fmOUsSeMOf8simRCQAAkuPMXjD2hIXImOgEAAAoIUqYU1k+JTIBAEBy8DgyYCua5uqlwye0ommu7ygAACBmyxtrtX3/gJY31vqOUsSyj/NsT786Mjk929PvOwoAAIjZ+h196sjktH5HOCthlDBneWOtWhrSQTVkAAAQj+37c5EZAkqY09591N0dedR3FAAAELMBdy3hQEDXE1LCiuxZEwAAJEXzJdWRGQI25jtszAcAILleGxqNzBCwEua0dx9xjyOP+I4CAABi9p3bF6mlIa3v3L7Id5QiSpgzMjYemQAAIDmqqyr04fkzVV3FBd7B4bBWAACS6/HOrNZu2qPHO7O+oxSxJ8xhTxgAAMn1Yt/rkRkCln2ctl/3qiOTU9uve31HAQAAMVt80fTIDAErYU5H5nhkAgCA5Fi15GLtOz6kVUsu9h2liJUwp6VhdmQCAIDkCPF6QlbCnK/cvFBzqyt1Z/M831EAAEDMGmovUE2qXA21F/iOUsRKmDM4PKrt+wc0OBzOIW4AACAeX3/qReULY/r6Uy/6jlJECXPWbOxRRyanNRt7fEcBAAAxGyiMRmYIeBzpfPO2Rkk9bgIAgCQZt9EZAlbCAABA4n3vTxapbIrR9/6Ea4uC88BPd6kjk9MDP93lOwoAAIjZkvkz9dEFs7Rk/kzfUYooYc4Vc6dHJgAASI4Q935TwpxV18xTS0Naq67hiAoAAJKm9do61aTK1Xptne8oRZQwp737qDoyObV3H/UdBQAAxOzRzRnlC2N6dHPGd5QiSliRPWsCAICkeOX4UGSGgBLmLF04W/XplJYu5NoiAACSJ7zFFkqY88jPM8rmCnrk5+EsUwIAgHjUzUxFZggoYU59elpkAgCA5Fg0d0ZkhoAS5lSnyiMTAAAkx8F8ITJDQAlzVjTNVUtDWiua5vqOAgAAYrb4ourIDAElzHm2p18dmZye7en3HQUAAMTs1kUfVH06pVsXfdB3lCJKmHNn8zz95ccv153NHNYKAEDSPLr59At4nBMWoMHhUW3fP6DB4VHfUQAAQMzmuxfv5gf0Ah4lzAnxTikAABCP88umRmYIynwHCMU9yxboUH5Y9yxb4DsKAACIWWXFlMgMQThJPOvcm1M2V1Dn3pzvKAAAIGZXzatWTapcV83j7cjgjIyeikwAAJAcD7bvVr4wpgfbd/uOUkQJKzJnTQAAkBRN86ZHZggoYc7JsbcjEwAAJMdAYTQyQ0AJc7r78pEJAACS46GVi9TSkNZDKxf5jlLE25HOQGEsMgEAQHLUp6dp3eolvmNEsBLmNF9SHZkAACA5srkhrV63Q9nckO8oRZQwp29wODIBAEByhHgoO48jnZNj45EJAACSI8RD2VkJc157863IBAAAybGzN69srqCdveG8gMdKmPP2uI1MAACQHHc2z4vMEFDCnPKyqZLG3AQAAElSk6rQ3UvrfceI4HGkc0tjbWQCAACUEithTuv1deobHFbr9XW+owAAgEmAlTCnvfuIOjI5tXcf8R0FAABMApSwIi7wBgAgqfKFUT3RmVU+oLsjeRzptF5Xp6qKqUG9NQEAAOLx8KaX9WTXYWVzQ/q/PrXYdxxJrIQVnXlroiZV4TsKAACI2f/Y/WpkhoAS5oS4TAkAAOLxhxdXR2YIKGFO27Zerd20R23ben1HAQAAMdt3fCgyQ0AJc0ZG345MAACQHC0NsyMzBGzMBwAAiRfieaCshDmVFVMiEwAAJMf6HX3qyOS0fkef7yhFJW8cxpipxpgXjDEb3cc1xpjNxph9bgaxQ25F01y1NKS1ommu7ygAACBmXQfzkRmCiVj2+c+SXv69j++XtMVau0DSFvexd5yYDwBAcpVNMZEZgpKWMGPMRZI+IenHv/fplZLa3N/bJN1eygznamRsPDIBAEBy/NmHL1Fl+RT92Ycv8R2lqNQrYY9J+rqk3282tdbaY5LkZhCvKfSfGIlMAACQHI9t2aeRsXE9tmWf7yhFJSthxpjbJB231v72P/j9XzTGdBljunK5XMzp/lede1+LTAAAkBzf/9Ri1adT+n4gVxZJpV0Ju17SCmNMr6R/lrTMGPMPkvqNMRdKkpvH3+mbrbU/stY2W2ub0+l0CWOe9t2VV6iyfIq+u/KKkv8sAAAwsa6+pFpb7rtRV18SxPuAkkpYwqy1f2mtvchaWyfp05J+Ya39rKR2Sa3uy1olPV2qDO/FK7khjYyN65VcOCfpAgCAeGRzQ1q9boeyAf2e93Eo1sOSbjbG7JN0s/vYOzbmAwCQXGs29qgjk9OajT2+oxRNyIn51tqtkra6vw9Iumkifu57cdJdV3SSa4sAAEice5Yt0KH8sO5ZtsB3lCKOh3f2vzYUmQAAIDl29uaVzRW0s3dyHdb6vvDQykVqaUjroZWLfEcBAAAxmzP9fFWWT9Gc6ef7jlJECXPq09O0bvUS1aen+Y4CAABi9kD7bo2MjeuB9t2+oxRRwpwQ35oAAADxuGHBrMgMASXMCfGtCQAAEI/pleWRGYIJeTvy/SDEtyYAAEA8Mv1DkRkCVsKczr05ZXMFde4t/RVJAABgYn3wA+dFZggoYc7I6KnIBAAAyfH8odcjMwSUMKeyoiwyAQBAclx98YzIDAElzFm6MK36dEpLF5b+snAAADCxDrxWiMwQUMKcNT/rUTZX0Jqf8XYkAABJMzg8FpkhoIQ5x994KzIBAEByfP1jDaosn6Kvf6zBd5QiSpjzt5+5SvXplP72M1f5jgIAAGK2vqtPI2PjWt/V5ztKESXMufqSam2570ZdfUm17ygAACBmjRdOj8wQUMKcfGFUT3RmlS+M+o4CAABidumsKpVNMbp0VpXvKEWUMOexZ/dq7aY9euzZvb6jAACAmH1nY49OjVt9J6DrCSlhTmcmF5kAACA5bmmcHZkhoIQ5/+WWhaosn6L/cstC31EAAEDM/mJ5g1oa0vqL5bwdGZz1XYfdWxOHfUcBAAAxa+8+qo5MTu3dR31HKaKEOY0XXhCZAAAgSexZ0z8uSnS+dONlmjntPN3ZPM93FAAAELOr5lWrJlWuq+aFcxQVK2FOTapCdy+tV02qwncUAAAQs+/+rEf5wpi+G9D1hJQwAACQeF+5aYEqy6foKzct8B2liBLmZHNDWr1uh7K5Id9RAABAzH7ywhGNjI3rJy8c8R2liBLmrNnYo45MTmsCOsQNAADEo/XaOtWkytV6bZ3vKEWUMOeeZQtUn07pnmXhLFMCAIB4/LAzq3xhTD/szPqOUkQJc57Z9aqyuYKe2fWq7ygAACBmI6NjkRkCSpizff9AZAIAgOQomzo1MkNACXOOvT4SmQAAIDkWzZ0emSGghDkV5VMiEwAAJMf55VMjMwQ0DufLLZepbIrRl1su8x0FAADE7OTY25EZAkqY8+NfHdCpcasf/+qA7ygAACBm2eNDkRkCSpjz/U8tVn06pe9/arHvKAAAIGa3XXmhyqYY3Xblhb6jFFHCnKsvqdaW+27U1ZeEc7EnAACIx8PP7NGpcauHn9njO0oRJQwAACRe7QXnRWYIKGEOd0cCAJBc084vj8wQUMKcB5/epY5MTg8+vct3FAAAELPL0tMiMwSUMGe++0eZH9A/DgAAiMfREyORGQJK2BnWRicAAEiMVc3zVFk+Raua5/mOUkQJczL9Q5EJAACS45HNezUyNq5HNu/1HaWIEuYsvmh6ZAIAgORYfNEHIjMEZb4DhGLVkou17/iQVi252HcUAAAQs1ffGI3MELAS5rR3H1VHJqf27qO+owAAgJiF+MSLlTBnZPRUZAIAgOQI8YkXK2HOybHxyAQAAMnxbE+/OjI5PdvT7ztKESXM2XX0RGQCAIDkaKi9QDWpcjXUXuA7ShElzDn19nhkAgCA5Pjuz3qUL4zpuz/r8R2liBLmVFaURSYAAEiO739qserTKX3/U4t9RymihDnfu+MP1NKQ1vfu+APfUQAAQMzqZqV0V/M81c1K+Y5SxLKPU5+epnWrl/iOAQAASqBtW6/+Zss+DY++ra/evNB3HEmshBXlC6N6ojOrfCGcQ9wAAEA8RkbfjswQUMKcDV19WrtpjzZ09fmOAgAAYnZy7FRkhoDHkc7yxlpt3z+g5Y21vqMAAICY7X9tODJDwEqYw7VFAAAk1+c/cqlqUuX6/Ecu9R2liBLmHDsxEpkAACA52p7rVb4wprbnej0n+Tc8jnR+sz8fmQAAIDnuWbZAh/LDumfZAt9RilgJc36wqkn16ZR+sKrJdxQAABCzZ3a/qmyuoGd2v+o7ShElzJleVa6La6o0varcdxQAABCz3UdORGYIKGHOmo096sjktGZjOHdKAQCAeNx3S4Pq0yndd0uD7yhFlDDnjqvmqrJ8iu64aq7vKAAAIGY8jgzYY1v2aWRsXI9t2ec7CgAAiFn3ocHIDAElzPnKTQtUWT5FX7kpnLcmAABAPC6/8AORGQJKmLNuW69Gxsa1bluv7ygAACBu9qwZAEqY0//GycgEAADJkel/MzJDQAlzrr9sVmQCAIDkWHzR9MgMASXMmVFVEZkAACA5rqufpZpUua6rD2exhRLmnBw9FZkAACA5vv4vLylfGNPX/+Ul31GKKGHOrqNvRCYAAEiOwaG3IjMElDDn5NjbkQkAAJLjpsbayAwBJcwZLIxFJgAASI7ZF5wfmSGghDkfXTArMgEAQHJwREXAeDsSAIDkqq4qj8wQUMKKAjxKFwAAxOI3B/KRGQJK2BnGRCcAAEiMH9zVpJpUuX5wV5PvKEWUMOf14dHIBAAAyXHlvBm6+4Z6XTlvhu8oRZQw57nsQGQCAIDk2NDVp7Wb9mhDV5/vKEVlvgOEouXy2fr/njuolstn+44CAABidmfzvMgMASthzrKG2apJlWtZAyUMAICkqUlV6O6l9apJhXMKAiXM+fZ/3618YUzf/u+7fUcBAAAxyxdG9URnVvlCOHu/KWHODQvSkQkAAJKDPWEB+8rNCzW3ujKoZ8UAACAe7AkDAADwYHB4VNv3D2gwoKOoKGFO27YDWrtpj9q2HfAdBQAAxGzNxh51ZHJas7HHd5QiSpgzMjYemQAAIDlar61TTapcrdfW+Y5SRAk7w9roBAAAifHo5ozyhTE9ujnjO0oRJcyprCiLTAAAkBwHBgqRGQJKmLN0YVr16ZSWLuSICgAAkuYj9bMiMwSUMOeRn2eUzRX0yM/DWaYEAADxGHCHtA5wWGt45s6ojEwAAJAcTRdXR2YI2ADlvJIbikwAAJAcX1par5mpCg5rBQAAmOwoYc6iOR+ITAAAkBxt23rdoey9vqMUUcKc88vLIhMAACTHYOGtyAwBJcyprJgamQAAIDl2HX0jMkNQsmUfY8z5kn4p6Tz3c56y1j5ojKmRtF5SnaReSXdZawdLleNctV5Xp6qKqUFt2AMAAMlVypWwtyQts9YultQk6VZjzIcl3S9pi7V2gaQt7mPvalIVuntpvWpSFb6jAACAmF02e1pkhqBkJcyedua8h3L3x0paKanNfb5N0u2lyvBeZHNDWr1uh7IcUQEAQOIcfX0kMkNQ0j1hxpipxphuScclbbbW/kZSrbX2mCS5ObuUGc7VX/3kd+rI5PRXP/md7ygAACBmn//IfNWkyvX5j8z3HaWopCXMWvu2tbZJ0kWSlhhjFp3r9xpjvmiM6TLGdOVyudKFdEZPvR2ZAAAgOX7Y+YryhTH9sPMV31GKJuTtSGvt65K2SrpVUr8x5kJJcvP4v/M9P7LWNltrm9Pp0l+qvaD2gsgEAADJMTL6dmSGoGQlzBiTNsbMcH+vlLRc0h5J7ZJa3Ze1Snq6VBnei1eOD0UmAABIjpPuSdfJgJ54lfJk0gsltRljpup02XvSWrvRGPOcpCeNMZ+TdEjSnSXMAAAAoFdPvBWZIShZCbPWviTpqnf4/ICkm0r1c/+jFs2ZrucPva5Fc6b7jgIAAGJ25dzp+lV2QFfODef3PCfmAwCAxNt97I3IDAElzMn0vxGZAAAgOX5wV5NqUuX6wV1NvqMUcVu1s/iiav3mwKAWX1TtOwoAAIjZjZfP1vPfusV3jAhKmPOlG+s1c1oFd0cCAJBA+cLo/9/e/QdXVd55HP98A0mBsAUCKSIGaTMIBYpgg1b7QxHtYnXF7Zbq7rZ12c60TrtMHbqu1rawLY52x5F16rZLO91atna0hbKodWkFBbodihD5GSIBL0ICUriQEOEGTCDP/pGHuxxWy6Xee5/Due/XjPNN7j0xH3gm3E/OOfccLapv0Yy6mtjcopDDkQAAIPEWrtmth5Zt18I1u0NHyaKEeYvqW/TQsu1aVN8SOgoAAMiztkxnZMYBhyO9G8YO1dpdh3XD2KGhowAAgDxreL09MuOAPWHeisYDWtmU1orGA6GjAACAEsCeMO/0CfmcmA8AQPLUXVqlDc1HVHdpVegoWZQwb/ehjH5R36LJI6ti864JAACQH3G8CgKHI717Fm9WKp3RPYs3h44CAADyrKqyQl+8tjZWO1ooYd7dU0epb3mZ7p46KnQUAABQAihh3lPrW3S8q1tPrecSFQAAJE0qfUwzH1+nVPpY6ChZlDBvnL+r+rgY3V0dAADkx9ynt2llU1pzn94WOkoWJ+Z7d11bq8GV8TphDwAA5Mf7hvTT717tmXFBCfNOn7AHAACSyM6a4XE40ovjsWIAAJAfXDE/xh74VaNWNqX1wK8aQ0cBAAB5dvLUqciMAw5Het+4ZaykRj8BAECiWFl0xkB8kgAAABRI7zKLzDighHkcjgQAILnGX/zuyIwDDkd6HI4EACC5+lT0jsw4YE8YAABIvBOdJyMzDihh3v1LtmhlU1r3L9kSOgoAAMizpgPHIjMOKGFe1ykXmQAAIDlGD+0fmXFACfNqBvWJTAAAkCBm0RkDlDBvQ3N7ZAIAgOTY5e+IsytGd8ahhHlXjBgYmQAAIDlm3zhatdWVmn3j6NBRsihhXnNrR2QCAIDkWL+7Val0Rut3t4aOkkUJ88wfI7YYHSsGAAD5cfGAPupbXqaLB8Tn3G9KmFczqG9kAgCA5Jj77DYd7+rW3Ge3hY6SRQnzNjQfiUwAAJAc82dMVFVluebPmBg6SlZ8rt0f2BUjBqql7Tgn5gMAkEDXjXmPNnzz46FjRLAnzDuc6YxMAACQHKu2H9QV857Xqu0HQ0fJooR535o+XlNGV+tb08eHjgIAAPJs9qJNas10afaiTaGjZFHCvJbDHdq894haDnOJCgAAkiaO54SZc/G/V2JdXZ2rr68v6PeY9O3n1dbRpUH9yrVxTryOGQMAgAuHmb3snKs713bsCfMm1QyMTAAAgEKihHkN+9ojEwAAJEcqfUwzH1+nFPeOjJ+OrlORCQAAkmPO0gatbOMe/zkAABAwSURBVEprztKG0FGyKGHelSOrIhMAACTHuOEDIjMOKGHerkOZyAQAAMkxbdxFqq2u1LRxF4WOkkUJ875642XqW16mr954WegoAAAgzx57cadS6Ywee3Fn6ChZlDBvycZ9Ot7VrSUb94WOAgAA8uwbt4zVlNHV+sYtY0NHyeLekd6s60epubVDs64fFToKAADIs/aOLjW3dqi9oyt0lCz2hHlLN+5TKp3RUvaEAQCQOPcs3qxUOqN7Fm8OHSWLEuatbDoYmQAAIDm+efNYVVWW65s3x+dwJCXMu7p2cGQCAIDk2NjSptZMlza2tIWOkkUJ84YN6BOZAAAgOY53dUdmHHBivnfrxOHasrddt04cHjoKAADIs77lZZEZB/FJEtiKxgNa2ZTWisYDoaMAAIA8m1QzSFWV5ZpUMyh0lCxKmDd5ZJVqqys1mdsWAQCQOPOea1RrpkvznmsMHSWLEubNX75DqXRG85fvCB0FAADkGe+OjLGLB7wrMgEAQHKs2XVYrZkurdl1OHSULEqY92o6E5kAACA51qYORWYcUMK88l5lkQkAAJLj0LHOyIwDGod377Qxqq2u1L3TxoSOAgAA8uwjo4ZEZhxQwrzVOw4qlc5o9Q5uWwQAQNIMG9A3MuOAi7V6bf6u6m0xurs6AADIjzuvGal+Fb00o64mdJQs9oR5DfvaIxMAACTH7kMZ/aK+RbsPxecNeJQwAACQePcs3qxUOqN7Fm8OHSWLEubVXVoVmQAAIDm4WGuMXVM7WFWV5bqmdnDoKAAAIM+aDhxVa6ZLTQeOho6SRQnzvr50q1ozXfr60q2howAAgDyL4z2iKWFeZ1d3ZAIAgOSI4z2iKWFeVf+KyAQAAMkRx3tEU8K8tkxnZAIAgOR4vf3NyIwDLtbqdTsXmQAAIDlm33iZ9rcf1+wbLwsdJYs9Yd67yntFJgAASI71u1uVSme0fndr6ChZlDDvvmlj1Le8TPdxA28AABLnhrFDNWV0tW4YOzR0lCxKmPfES8063tWtJ15qDh0FAADk2TOb9mllU1rPbNoXOkoWJcw7eqIrMgEAQJLYWTM8Tsz3jp44GZkAACA57rxmpPpV9NKMuprQUbLYE+bNmz5eVZXlmjd9fOgoAACgBFDCvI0tR9Sa6dLGliOhowAAgDxbuOY1PbRsuxaueS10lCxKWJY7awIAgKRoy3RFZhxwTph368Th2rK3XbdOHB46CgAAyLNU+lhkxgF7wrwVjQe0simtFY0HQkcBAAB59u3bxmvK6Gp9+7b4nPvNnjDvhrFDtXbX4VhdxA0AAORHbXV/PT7zytAxItgT5rEnDACA5GrNdOoHq1NqzXSGjpJFCfPieDsDAACQHwtWpfTQsu1asCoVOkoWJcxjTxgAAMnVuL89MuOAc8K801fQjdOVdAEAQH7cXlejl/e06fYYvc6zJ8xr6+jU2l2H1dYRn2PFAAAgPx59YaeOd3Xr0Rd2ho6SRQnz5j7doJVNac19uiF0FAAAkGd3Tx2lvuVlunvqqNBRsihh3vuG9I9MAACQHE+8tEfHu7r1xEt7QkfJooR5fSp6RSYAAEgSO2uGRwnzjvjrhhyJ0fVDAABAfnzmqhHqW16mz1w1InSULEqYt253a2QCAIDkeGT5Dh3v6tYjy3eEjpJFCfPmf3qiaqsrNf/TE0NHAQAAefaxUdWRGQeUMAAAkHi3TRqu2upK3TZpeOgoWZQwb9aTG5RKZzTryQ2howAAgDx77MWdSqUzeuzF+FwnjCvme292nYpMAACQHLOuH6Xm1g7Nup7rhMVO715lkQkAAJLj1w37lUpn9OuG/aGjZBWscZhZjZmtNLNXzGybmX3FP15lZsvNbKefgwqV4Xxc9d5BkQkAAJKjcf/RyIyDQu72OSnpq86590v6kKQvm9lYSfdJesE5N0rSC/7z4HYeOBaZAAAgOW7+wEXqXWa6+QMXhY6SVbAS5pzb75zb4D8+KukVScMlTZe00G+2UNJthcpwPva0Ho9MAACQHA8/36ST3U4PP98UOkpWUU6AMrORkiZJeknSUOfcfqmnqEl6TzEynEulv11RJbctAgAgcebPmKiqynLNnxGf64EWvISZWX9Jv5R0t3PujfP4ui+YWb2Z1afT6cIF9KaNHxaZAAAgOWoG99PllwxUzeB+oaNkFbSEmVm5egrYz5xzS/zDB8xsmH9+mKSDb/W1zrkfOufqnHN11dWFv7ptHC/iBgAA8mPO0gatbEprztKG0FGyCvnuSJP0H5Jecc7NP+OpZyTd6T++U9LThcpwPh54rlGpdEYPPNcYOgoAAMizccMHRGYcFPJirR+W9FlJW81sk3/sfknfkfQLM/u8pGZJMwqYIWd/aD8RmQAAIDnuurZWgysrNKOuJnSUrIKVMOfc7yTZ2zw9tVDf90814ZJ36/X2E5pwybtDRwEAAHlWVVmhL15bGzpGBJeH9zbtfSMyAQBAcqTSxzTz8XVKpeNzPVBKmFd21gQAAMlx/5KtWtmU1v1LtoaOkkXn8L520xj1LS/T124aEzoKAADIO3fWDI8S5v107R4d7+rWT9fuCR0FAADk2YOfnKApo6v14CcnhI6SVch3R15QTpzsjkwAAJActdX99fjMK0PHiGBP2GnORScAAEABUcKy4nesGAAAJBclzOtbUR6ZAAAAhUQJ8+6dNka11ZW6dxrvjgQAIGlaM536weqUWjOdoaNkUcK81TvSSqUzWr0jHToKAADIswWrU3po2XYtWJ0KHSWLEua1dXRGJgAASI5NzW2RGQeUMC918FhkAgCA5Jg4YlBkxgHXCfPumFyjDc1tumNyfO6uDgAA8uOua2s1uLJCM+ri8zrPnjDv0Rd26nhXtx59YWfoKAAAIM+qKiv0xWtrVVVZETpKFiXMe/hTl6u2ulIPf+ry0FEAAECebdjTpqmPrNKGPZwTFjsjh1Tq03U1GjmkMnQUAACQZ1/62ctKpTP60s9eDh0lixLmLapv0UPLtmtRfUvoKAAAIM86Ok9FZhxwYr53+kS9OJ2wBwAA8uO7d0zS7EWbNH/GxNBRssxdADesrqurc/X19aFjAAAAnJOZveycqzvXdhyOBAAACIASBgAAEAAlDAAAIABKGAAAQACUMAAAgAAoYQAAAAFQwgAAAAKghAEAAARACQMAAAiAEgYAABAAJQwAACAAShgAAEAAlDAAAIAAKGEAAAABUMIAAAACoIQBAAAEQAkDAAAIgBIGAAAQACUMAAAgAEoYAABAAJQwAACAAChhAAAAAVDCAAAAAqCEAQAABEAJAwAACIASBgAAEAAlDAAAIABKGAAAQACUMAAAgAAoYQAAAAFQwgAAAAKghAEAAARACQMAAAiAEgYAABCAOedCZzgnM0tL2lOEbzVE0qEifB/kjjWJH9YknliX+GFN4qdYa3Kpc676XBtdECWsWMys3jlXFzoH/g9rEj+sSTyxLvHDmsRP3NaEw5EAAAABUMIAAAACoIRF/TB0APw/rEn8sCbxxLrED2sSP7FaE84JAwAACIA9YQAAAAGUXAkzs2lm1mRmr5rZfW/xvJnZd/3zW8zsihA5S00O6/K3fj22mNkaM7s8RM5Scq41OWO7yWZ2ysw+Vcx8pSiXNTGz68xsk5ltM7PVxc5YanL4t2uAmT1rZpv9mswMkbOUmNmPzeygmTW8zfOxeZ0vqRJmZr0kfU/STZLGSvprMxt71mY3SRrl//uCpH8vasgSlOO6vCbpWufcBEnzFLPj+kmT45qc3u5fJP2muAlLTy5rYmYDJX1f0q3OuXGSZhQ9aAnJ8efky5IanXOXS7pO0iNmVlHUoKXnJ5Km/ZHnY/M6X1IlTNKVkl51zu1yznVKekrS9LO2mS7pP12PtZIGmtmwYgctMedcF+fcGudcm/90raRLipyx1OTysyJJsyT9UtLBYoYrUbmsyd9IWuKca5Yk5xzrUli5rImT9GdmZpL6S2qVdLK4MUuLc+636vl7fjuxeZ0vtRI2XFLLGZ/v9Y+d7zbIr/P9O/+8pGUFTYRzromZDZf0l5IWFDFXKcvl5+QySYPMbJWZvWxmnytautKUy5r8m6T3S3pd0lZJX3HOdRcnHt5GbF7ne4f4pgHZWzx29ttDc9kG+ZXz37mZTVFPCftIQRMhlzV5VNK9zrlTPb/ko8ByWZPekj4oaaqkvpJ+b2ZrnXM7Ch2uROWyJn8uaZOk6yXVSlpuZv/jnHuj0OHwtmLzOl9qJWyvpJozPr9EPb+dnO82yK+c/s7NbIKkH0m6yTl3uEjZSlUua1In6SlfwIZI+oSZnXTOLS1OxJKT679fh5xzGUkZM/utpMslUcIKI5c1mSnpO67nelCvmtlrksZIWleciHgLsXmdL7XDkesljTKz9/oTI++Q9MxZ2zwj6XP+3RMfktTunNtf7KAl5pzrYmYjJC2R9Fl+qy+Kc66Jc+69zrmRzrmRkhZL+hIFrKBy+ffraUkfNbPeZtZP0lWSXilyzlKSy5o0q2fPpMxsqKTRknYVNSXOFpvX+ZLaE+acO2lm/6Ced3L1kvRj59w2M7vLP79A0n9L+oSkVyV1qOe3GBRQjusyR9JgSd/3e15OxukmrEmT45qgiHJZE+fcK2b2a0lbJHVL+pFz7i3fpo93Lsefk3mSfmJmW9VzGOxe59yhYKFLgJk9qZ53og4xs72S5koql+L3Os8V8wEAAAIotcORAAAAsUAJAwAACIASBgAAEAAlDAAAIABKGAAAQACUMAAXJDP7upltM7MtZrbJzK56h/+/68zsV/nKBwDnUlLXCQOQDGZ2taRbJF3hnHvTzIZIqgiYp7dzjpsyAzgv7AkDcCEapp7b87wpSc65Q865181st5k9aGa/N7N6M7vCzH5jZqnTF9D0V8l+2MwazGyrmd1+9v/czCab2UYze5+ZVZrZj81svX9sut/m78xskZk9K+n5Yv7hASQDe8IAXIielzTHzHZIWiHp58651f65Fufc1Wb2r5J+IunDkvpI2iZpgaRPSpqonnsqDpG03t9jUZJkZtdIekzSdOdcs5k9KOlF59zfm9lASevMbIXf/GpJE5xzrQX+8wJIIEoYgAuOc+6YmX1Q0kclTZH0czO7zz99+t59WyX1d84dlXTUzE74EvURSU86505JOmBmqyVNlvSGpPdL+qGkjzvnTt/Q9+OSbjWzf/Sf95E0wn+8nAIG4E9FCQNwQfIlapWkVf6+fHf6p970s/uMj09/3ls99+97O/vVU7ImSTpdwkzSXznnms7c0L8RIPMO/ggAShznhAG44JjZaDMbdcZDEyXtyfHLfyvpdjPrZWbVkj4maZ1/7oikmyU9aGbX+cd+I2mW+TvHm9mkd5ofACRKGIALU39JC82s0cy2SBor6Z9z/Nr/krRF0mZJL0r6J+fcH04/6Zw7IOkvJH3P7+2aJ6lc0hYza/CfA8A7Zs650BkAAABKDnvCAAAAAqCEAQAABEAJAwAACIASBgAAEAAlDAAAIABKGAAAQACUMAAAgAAoYQAAAAH8L/lwgMPeTaCgAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "copy = donnees.copy()\n", + "copy['Smoker']=donnees['Smoker'].replace({'Yes':1, 'No':0})\n", + "copy.plot.scatter(x='Smoker', y='Age', figsize=(10,15),s=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le graphe si dessus n'est pas si parlant, 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": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tranche\n", + "18-34 ans 0.452500\n", + "35-54 ans 0.543578\n", + "55-65 ans 0.485232\n", + ">65 ans 0.203320\n", + "Name: Smoker, dtype: float64" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "copy.groupby('tranche')['Smoker'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], "metadata": { + "hide_code_all_hidden": true, "kernelspec": { "display_name": "Python 3", "language": "python", @@ -16,10 +2252,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.3" + "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 } -