diff --git a/module3/exo2/exercice.ipynb b/module3/exo2/exercice.ipynb index 0f6b8b2312c8660a6f9d913d991709d3a017b65e..428124a21b388930817f58a07d44f4cf189b3f9c 100644 --- a/module3/exo2/exercice.ipynb +++ b/module3/exo2/exercice.ipynb @@ -63,6 +63,1080 @@ " urllib.request.urlretrieve(data_url, data_file)" ] }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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
02021197806049411117912717FRFrance
12021187393220935771639FRFrance
220211774686287864947410FRFrance
320211674780289166697410FRFrance
4202115711215762714803171222FRFrance
5202114711197799414400171222FRFrance
620211379714628913139151020FRFrance
7202112711520841514625171222FRFrance
820211179386667812094141018FRFrance
920211079056645211660141018FRFrance
10202109710988793814038171222FRFrance
11202108711281836114201171321FRFrance
122021077135611031516807211626FRFrance
13202106713401981016992201525FRFrance
14202105712210898815432181323FRFrance
15202104712026882615226181323FRFrance
162021037891363751145113917FRFrance
172021027779554301016012816FRFrance
18202101710525775013300161220FRFrance
19202053711978840615550181323FRFrance
20202052712012828515739181224FRFrance
21202051710564757413554161121FRFrance
22202050770634744938211715FRFrance
2320204975026314569078511FRFrance
24202048766834312905410614FRFrance
2520204774999296370358511FRFrance
262020467375219635541639FRFrance
272020457369620165376639FRFrance
2820204474391237564077410FRFrance
2920204374376250562477410FRFrance
.................................
15591991267176081130423912312042FRFrance
15601991257161691070021638281838FRFrance
15611991247161711007122271281739FRFrance
1562199123711947767116223211329FRFrance
1563199122715452995320951271737FRFrance
1564199121714903897520831261636FRFrance
15651991207190531274225364342345FRFrance
15661991197167391124622232291939FRFrance
15671991187213851388228888382551FRFrance
1568199117713462887718047241632FRFrance
15691991167148571006819646261834FRFrance
1570199115713975978118169251832FRFrance
1571199114712265768416846221430FRFrance
157219911379567604113093171123FRFrance
1573199112710864733114397191325FRFrance
15741991117155741118419964271935FRFrance
15751991107166431137221914292038FRFrance
1576199109713741878018702241533FRFrance
1577199108713289881317765231531FRFrance
1578199107712337807716597221529FRFrance
1579199106710877701314741191226FRFrance
1580199105710442654414340181125FRFrance
15811991047791345631126314820FRFrance
15821991037153871048420290271836FRFrance
15831991027162771104621508292038FRFrance
15841991017155651027120859271836FRFrance
15851990527193751329525455342345FRFrance
15861990517190801380724353342543FRFrance
1587199050711079666015498201228FRFrance
15881990497114302610205FRFrance
\n", + "

1589 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " week indicator inc inc_low inc_up inc100 inc100_low \\\n", + "0 202119 7 8060 4941 11179 12 7 \n", + "1 202118 7 3932 2093 5771 6 3 \n", + "2 202117 7 4686 2878 6494 7 4 \n", + "3 202116 7 4780 2891 6669 7 4 \n", + "4 202115 7 11215 7627 14803 17 12 \n", + "5 202114 7 11197 7994 14400 17 12 \n", + "6 202113 7 9714 6289 13139 15 10 \n", + "7 202112 7 11520 8415 14625 17 12 \n", + "8 202111 7 9386 6678 12094 14 10 \n", + "9 202110 7 9056 6452 11660 14 10 \n", + "10 202109 7 10988 7938 14038 17 12 \n", + "11 202108 7 11281 8361 14201 17 13 \n", + "12 202107 7 13561 10315 16807 21 16 \n", + "13 202106 7 13401 9810 16992 20 15 \n", + "14 202105 7 12210 8988 15432 18 13 \n", + "15 202104 7 12026 8826 15226 18 13 \n", + "16 202103 7 8913 6375 11451 13 9 \n", + "17 202102 7 7795 5430 10160 12 8 \n", + "18 202101 7 10525 7750 13300 16 12 \n", + "19 202053 7 11978 8406 15550 18 13 \n", + "20 202052 7 12012 8285 15739 18 12 \n", + "21 202051 7 10564 7574 13554 16 11 \n", + "22 202050 7 7063 4744 9382 11 7 \n", + "23 202049 7 5026 3145 6907 8 5 \n", + "24 202048 7 6683 4312 9054 10 6 \n", + "25 202047 7 4999 2963 7035 8 5 \n", + "26 202046 7 3752 1963 5541 6 3 \n", + "27 202045 7 3696 2016 5376 6 3 \n", + "28 202044 7 4391 2375 6407 7 4 \n", + "29 202043 7 4376 2505 6247 7 4 \n", + "... ... ... ... ... ... ... ... \n", + "1559 199126 7 17608 11304 23912 31 20 \n", + "1560 199125 7 16169 10700 21638 28 18 \n", + "1561 199124 7 16171 10071 22271 28 17 \n", + "1562 199123 7 11947 7671 16223 21 13 \n", + "1563 199122 7 15452 9953 20951 27 17 \n", + "1564 199121 7 14903 8975 20831 26 16 \n", + "1565 199120 7 19053 12742 25364 34 23 \n", + "1566 199119 7 16739 11246 22232 29 19 \n", + "1567 199118 7 21385 13882 28888 38 25 \n", + "1568 199117 7 13462 8877 18047 24 16 \n", + "1569 199116 7 14857 10068 19646 26 18 \n", + "1570 199115 7 13975 9781 18169 25 18 \n", + "1571 199114 7 12265 7684 16846 22 14 \n", + "1572 199113 7 9567 6041 13093 17 11 \n", + "1573 199112 7 10864 7331 14397 19 13 \n", + "1574 199111 7 15574 11184 19964 27 19 \n", + "1575 199110 7 16643 11372 21914 29 20 \n", + "1576 199109 7 13741 8780 18702 24 15 \n", + "1577 199108 7 13289 8813 17765 23 15 \n", + "1578 199107 7 12337 8077 16597 22 15 \n", + "1579 199106 7 10877 7013 14741 19 12 \n", + "1580 199105 7 10442 6544 14340 18 11 \n", + "1581 199104 7 7913 4563 11263 14 8 \n", + "1582 199103 7 15387 10484 20290 27 18 \n", + "1583 199102 7 16277 11046 21508 29 20 \n", + "1584 199101 7 15565 10271 20859 27 18 \n", + "1585 199052 7 19375 13295 25455 34 23 \n", + "1586 199051 7 19080 13807 24353 34 25 \n", + "1587 199050 7 11079 6660 15498 20 12 \n", + "1588 199049 7 1143 0 2610 2 0 \n", + "\n", + " inc100_up geo_insee geo_name \n", + "0 17 FR France \n", + "1 9 FR France \n", + "2 10 FR France \n", + "3 10 FR France \n", + "4 22 FR France \n", + "5 22 FR France \n", + "6 20 FR France \n", + "7 22 FR France \n", + "8 18 FR France \n", + "9 18 FR France \n", + "10 22 FR France \n", + "11 21 FR France \n", + "12 26 FR France \n", + "13 25 FR France \n", + "14 23 FR France \n", + "15 23 FR France \n", + "16 17 FR France \n", + "17 16 FR France \n", + "18 20 FR France \n", + "19 23 FR France \n", + "20 24 FR France \n", + "21 21 FR France \n", + "22 15 FR France \n", + "23 11 FR France \n", + "24 14 FR France \n", + "25 11 FR France \n", + "26 9 FR France \n", + "27 9 FR France \n", + "28 10 FR France \n", + "29 10 FR France \n", + "... ... ... ... \n", + "1559 42 FR France \n", + "1560 38 FR France \n", + "1561 39 FR France \n", + "1562 29 FR France \n", + "1563 37 FR France \n", + "1564 36 FR France \n", + "1565 45 FR France \n", + "1566 39 FR France \n", + "1567 51 FR France \n", + "1568 32 FR France \n", + "1569 34 FR France \n", + "1570 32 FR France \n", + "1571 30 FR France \n", + "1572 23 FR France \n", + "1573 25 FR France \n", + "1574 35 FR France \n", + "1575 38 FR France \n", + "1576 33 FR France \n", + "1577 31 FR France \n", + "1578 29 FR France \n", + "1579 26 FR France \n", + "1580 25 FR France \n", + "1581 20 FR France \n", + "1582 36 FR France \n", + "1583 38 FR France \n", + "1584 36 FR France \n", + "1585 45 FR France \n", + "1586 43 FR France \n", + "1587 28 FR France \n", + "1588 5 FR France \n", + "\n", + "[1589 rows x 10 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_data = pd.read_csv(\"syndrome-varicelle.csv\", skiprows=1)\n", + "raw_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Y a-t-il des points manquants dans ce jeux de données ?" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "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", + "
weekindicatorincinc_lowinc_upinc100inc100_lowinc100_upgeo_inseegeo_name
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [week, indicator, inc, inc_low, inc_up, inc100, inc100_low, inc100_up, geo_insee, geo_name]\n", + "Index: []" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_data[raw_data.isnull().any(axis=1)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pas de point manquants." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nos données utilisent une convention inhabituelle: le numéro de semaine est collé à l'année, donnant l'impression qu'il s'agit de nombre entier. C'est comme ça que Pandas les interprète.\n", + "Un deuxième problème est que Pandas ne comprend pas les numéros de semaine. Il faut lui fournir les dates de début et de fin de semaine. Nous utilisons pour cela la bibliothèque isoweek.\n", + "Comme la conversion des semaines est devenu assez complexe, nous écrivons une petite fonction Python pour cela. Ensuite, nous l'appliquons à tous les points de nos donnés. Les résultats vont dans une nouvelle colonne 'period'." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def convert_week(year_and_week_int):\n", + " year_and_week_str = str(year_and_week_int)\n", + " year = int(year_and_week_str[:4])\n", + " week = int(year_and_week_str[4:])\n", + " w = isoweek.Week(year, week)\n", + " return pd.Period(w.day(0), 'W')\n", + "\n", + "raw_data['period'] = [convert_week(yw) for yw in raw_data['week']]" + ] + }, { "cell_type": "code", "execution_count": null,