diff --git a/module3/exo2/exercice.ipynb b/module3/exo2/exercice.ipynb index a47a908ae821fce7decb417ac58afde932bfa9ce..898cf8b63426c77424434ff91362619187eeefa8 100644 --- a/module3/exo2/exercice.ipynb +++ b/module3/exo2/exercice.ipynb @@ -16,1040 +16,74 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 25, "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib inline\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import os\n", - "from isoweek import Week" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "data_url = \"https://www.sentiweb.fr/datasets/all/inc-7-RDD-ds2.csv\"\n", - "filename = \"incidence-chickenpox.csv\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "1. Download -> if there is not a local file already" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "if not os.path.exists(filename):\n", - " raw_data = pd.read_csv(data_url, skiprows=1)\n", - "else:\n", - " raw_data = pd.read_csv(filename)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "2. Remove rows with missing values" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "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", - "
weekgeo_inseeindicatorincinc100inc_upinc_lowinc100_upinc100_lowperiod
0201601447574108612871552016-01-04/2016-01-10
1201601757151325209992735152016-01-04/2016-01-10
22016018472363302958176837222016-01-04/2016-01-10
320160127768624105831436112016-01-04/2016-01-10
4201601537532168741902662016-01-04/2016-01-10
5201601247394156251632462016-01-04/2016-01-10
620160194738128202502016-01-04/2016-01-10
72016011173030253788227231192016-01-04/2016-01-10
82016017678421413073772262016-01-04/2016-01-10
92016013272100342711148944242016-01-04/2016-01-10
10201601287418126871492042016-01-04/2016-01-10
11201601527102927157748142132016-01-04/2016-01-10
12201601937105321145764929132016-01-04/2016-01-10
132016024477721411224222072016-01-11/2016-01-17
142016027576571110162981752016-01-11/2016-01-17
152016028471486191928104424132016-01-11/2016-01-17
16201602277442157271572552016-01-11/2016-01-17
17201602537444137441442242016-01-11/2016-01-17
18201602247402156271772472016-01-11/2016-01-17
192016029471244201302016-01-11/2016-01-17
202016021171745142317117319102016-01-11/2016-01-17
21201602767110119164455828102016-01-11/2016-01-17
22201602327124920172077828132016-01-11/2016-01-17
23201602287106431151960944182016-01-11/2016-01-17
24201602527408117081081932016-01-11/2016-01-17
252016029371570312099104142212016-01-11/2016-01-17
262016034479851714425282592016-01-18/2016-01-24
272016037572070342769137146232016-01-18/2016-01-24
282016038472258282810170635212016-01-18/2016-01-24
29201603277100935153848053172016-01-18/2016-01-24
.................................
63792025223273001950302025-05-26/2025-06-01
63802025222870000002025-05-26/2025-06-01
6381202522527198552801302025-05-26/2025-06-01
6382202522937125424309805902025-05-26/2025-06-01
63832025234474137109001902025-06-02/2025-06-08
63842025237574427111701802025-06-02/2025-06-08
638520252384711481421561402622025-06-02/2025-06-08
63862025232770000002025-06-02/2025-06-08
6387202523537143439401102025-06-02/2025-06-08
63882025232472721066702502025-06-02/2025-06-08
6389202523947371010402902025-06-02/2025-06-08
639020252311790571763471402025-06-02/2025-06-08
63912025237677514350702025-06-02/2025-06-08
63922025233275279122602002025-06-02/2025-06-08
639320252328710833210902025-06-02/2025-06-08
63942025235270000002025-06-02/2025-06-08
63952025239373366113002202025-06-02/2025-06-08
6396202524447196374101302025-06-09/2025-06-15
639720252475714425160802025-06-09/2025-06-15
639820252484782410174502102025-06-09/2025-06-15
63992025242770000002025-06-09/2025-06-15
6400202524537164543001202025-06-09/2025-06-15
640120252424771027142305402025-06-09/2025-06-15
64022025249472889402602025-06-09/2025-06-15
64032025241179137194601602025-06-09/2025-06-15
64042025247670000002025-06-09/2025-06-15
640520252432714625070802025-06-09/2025-06-15
6406202524287140444101302025-06-09/2025-06-15
64072025245270000002025-06-09/2025-06-15
6408202524937319699501902025-06-09/2025-06-15
\n", - "

6409 rows × 10 columns

\n", - "
" - ], - "text/plain": [ - " week geo_insee indicator inc inc100 inc_up inc_low inc100_up \\\n", - "0 201601 44 7 574 10 861 287 15 \n", - "1 201601 75 7 1513 25 2099 927 35 \n", - "2 201601 84 7 2363 30 2958 1768 37 \n", - "3 201601 27 7 686 24 1058 314 36 \n", - "4 201601 53 7 532 16 874 190 26 \n", - "5 201601 24 7 394 15 625 163 24 \n", - "6 201601 94 7 38 12 82 0 25 \n", - "7 201601 11 7 3030 25 3788 2272 31 \n", - "8 201601 76 7 842 14 1307 377 22 \n", - "9 201601 32 7 2100 34 2711 1489 44 \n", - "10 201601 28 7 418 12 687 149 20 \n", - "11 201601 52 7 1029 27 1577 481 42 \n", - "12 201601 93 7 1053 21 1457 649 29 \n", - "13 201602 44 7 772 14 1122 422 20 \n", - "14 201602 75 7 657 11 1016 298 17 \n", - "15 201602 84 7 1486 19 1928 1044 24 \n", - "16 201602 27 7 442 15 727 157 25 \n", - "17 201602 53 7 444 13 744 144 22 \n", - "18 201602 24 7 402 15 627 177 24 \n", - "19 201602 94 7 12 4 42 0 13 \n", - "20 201602 11 7 1745 14 2317 1173 19 \n", - "21 201602 76 7 1101 19 1644 558 28 \n", - "22 201602 32 7 1249 20 1720 778 28 \n", - "23 201602 28 7 1064 31 1519 609 44 \n", - "24 201602 52 7 408 11 708 108 19 \n", - "25 201602 93 7 1570 31 2099 1041 42 \n", - "26 201603 44 7 985 17 1442 528 25 \n", - "27 201603 75 7 2070 34 2769 1371 46 \n", - "28 201603 84 7 2258 28 2810 1706 35 \n", - "29 201603 27 7 1009 35 1538 480 53 \n", - "... ... ... ... ... ... ... ... ... \n", - "6379 202522 32 7 30 0 195 0 3 \n", - "6380 202522 28 7 0 0 0 0 0 \n", - "6381 202522 52 7 198 5 528 0 13 \n", - "6382 202522 93 7 1254 24 3098 0 59 \n", - "6383 202523 44 7 413 7 1090 0 19 \n", - "6384 202523 75 7 442 7 1117 0 18 \n", - "6385 202523 84 7 1148 14 2156 140 26 \n", - "6386 202523 27 7 0 0 0 0 0 \n", - "6387 202523 53 7 143 4 394 0 11 \n", - "6388 202523 24 7 272 10 667 0 25 \n", - "6389 202523 94 7 37 10 104 0 29 \n", - "6390 202523 11 7 905 7 1763 47 14 \n", - "6391 202523 76 7 75 1 435 0 7 \n", - "6392 202523 32 7 527 9 1226 0 20 \n", - "6393 202523 28 7 108 3 321 0 9 \n", - "6394 202523 52 7 0 0 0 0 0 \n", - "6395 202523 93 7 336 6 1130 0 22 \n", - "6396 202524 44 7 196 3 741 0 13 \n", - "6397 202524 75 7 144 2 516 0 8 \n", - "6398 202524 84 7 824 10 1745 0 21 \n", - "6399 202524 27 7 0 0 0 0 0 \n", - "6400 202524 53 7 164 5 430 0 12 \n", - "6401 202524 24 7 710 27 1423 0 54 \n", - "6402 202524 94 7 28 8 94 0 26 \n", - "6403 202524 11 7 913 7 1946 0 16 \n", - "6404 202524 76 7 0 0 0 0 0 \n", - "6405 202524 32 7 146 2 507 0 8 \n", - "6406 202524 28 7 140 4 441 0 13 \n", - "6407 202524 52 7 0 0 0 0 0 \n", - "6408 202524 93 7 319 6 995 0 19 \n", - "\n", - " inc100_low period \n", - "0 5 2016-01-04/2016-01-10 \n", - "1 15 2016-01-04/2016-01-10 \n", - "2 22 2016-01-04/2016-01-10 \n", - "3 11 2016-01-04/2016-01-10 \n", - "4 6 2016-01-04/2016-01-10 \n", - "5 6 2016-01-04/2016-01-10 \n", - "6 0 2016-01-04/2016-01-10 \n", - "7 19 2016-01-04/2016-01-10 \n", - "8 6 2016-01-04/2016-01-10 \n", - "9 24 2016-01-04/2016-01-10 \n", - "10 4 2016-01-04/2016-01-10 \n", - "11 13 2016-01-04/2016-01-10 \n", - "12 13 2016-01-04/2016-01-10 \n", - "13 7 2016-01-11/2016-01-17 \n", - "14 5 2016-01-11/2016-01-17 \n", - "15 13 2016-01-11/2016-01-17 \n", - "16 5 2016-01-11/2016-01-17 \n", - "17 4 2016-01-11/2016-01-17 \n", - "18 7 2016-01-11/2016-01-17 \n", - "19 0 2016-01-11/2016-01-17 \n", - "20 10 2016-01-11/2016-01-17 \n", - "21 10 2016-01-11/2016-01-17 \n", - "22 13 2016-01-11/2016-01-17 \n", - "23 18 2016-01-11/2016-01-17 \n", - "24 3 2016-01-11/2016-01-17 \n", - "25 21 2016-01-11/2016-01-17 \n", - "26 9 2016-01-18/2016-01-24 \n", - "27 23 2016-01-18/2016-01-24 \n", - "28 21 2016-01-18/2016-01-24 \n", - "29 17 2016-01-18/2016-01-24 \n", - "... ... ... \n", - "6379 0 2025-05-26/2025-06-01 \n", - "6380 0 2025-05-26/2025-06-01 \n", - "6381 0 2025-05-26/2025-06-01 \n", - "6382 0 2025-05-26/2025-06-01 \n", - "6383 0 2025-06-02/2025-06-08 \n", - "6384 0 2025-06-02/2025-06-08 \n", - "6385 2 2025-06-02/2025-06-08 \n", - "6386 0 2025-06-02/2025-06-08 \n", - "6387 0 2025-06-02/2025-06-08 \n", - "6388 0 2025-06-02/2025-06-08 \n", - "6389 0 2025-06-02/2025-06-08 \n", - "6390 0 2025-06-02/2025-06-08 \n", - "6391 0 2025-06-02/2025-06-08 \n", - "6392 0 2025-06-02/2025-06-08 \n", - "6393 0 2025-06-02/2025-06-08 \n", - "6394 0 2025-06-02/2025-06-08 \n", - "6395 0 2025-06-02/2025-06-08 \n", - "6396 0 2025-06-09/2025-06-15 \n", - "6397 0 2025-06-09/2025-06-15 \n", - "6398 0 2025-06-09/2025-06-15 \n", - "6399 0 2025-06-09/2025-06-15 \n", - "6400 0 2025-06-09/2025-06-15 \n", - "6401 0 2025-06-09/2025-06-15 \n", - "6402 0 2025-06-09/2025-06-15 \n", - "6403 0 2025-06-09/2025-06-15 \n", - "6404 0 2025-06-09/2025-06-15 \n", - "6405 0 2025-06-09/2025-06-15 \n", - "6406 0 2025-06-09/2025-06-15 \n", - "6407 0 2025-06-09/2025-06-15 \n", - "6408 0 2025-06-09/2025-06-15 \n", - "\n", - "[6409 rows x 10 columns]" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: isoweek in /opt/conda/lib/python3.6/site-packages (1.3.3)\r\n" + ] } ], "source": [ - "raw_data = raw_data.dropna()\n", - "raw_data" + "!pip install isoweek" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import os\n", + "from isoweek import Week\n", + "from datetime import datetime, timedelta" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "data_url = \"https://www.sentiweb.fr/datasets/all/inc-7-RDD-ds2.csv\"\n", + "filename = \"inc-7-PAY-ds2.csv\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "3. Convert 'week' to period " + "1. Download -> if there is not a local file already" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists(filename):\n", + " raw_data = pd.read_csv(data_url, skiprows=1)\n", + "else:\n", + " raw_data = pd.read_csv(filename)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. Remove rows with missing values" + ] + }, + { + "cell_type": "code", + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1082,7 +116,6 @@ " inc_low\n", " inc100_up\n", " inc100_low\n", - " period\n", " \n", " \n", " \n", @@ -1097,7 +130,6 @@ " 287\n", " 15\n", " 5\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 1\n", @@ -1110,7 +142,6 @@ " 927\n", " 35\n", " 15\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 2\n", @@ -1123,7 +154,6 @@ " 1768\n", " 37\n", " 22\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 3\n", @@ -1136,7 +166,6 @@ " 314\n", " 36\n", " 11\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 4\n", @@ -1149,7 +178,6 @@ " 190\n", " 26\n", " 6\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 5\n", @@ -1162,7 +190,6 @@ " 163\n", " 24\n", " 6\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 6\n", @@ -1175,7 +202,6 @@ " 0\n", " 25\n", " 0\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 7\n", @@ -1188,7 +214,6 @@ " 2272\n", " 31\n", " 19\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 8\n", @@ -1201,7 +226,6 @@ " 377\n", " 22\n", " 6\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 9\n", @@ -1214,7 +238,6 @@ " 1489\n", " 44\n", " 24\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 10\n", @@ -1227,7 +250,6 @@ " 149\n", " 20\n", " 4\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 11\n", @@ -1240,7 +262,6 @@ " 481\n", " 42\n", " 13\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 12\n", @@ -1253,7 +274,6 @@ " 649\n", " 29\n", " 13\n", - " 2016-01-04/2016-01-10\n", " \n", " \n", " 13\n", @@ -1266,7 +286,6 @@ " 422\n", " 20\n", " 7\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 14\n", @@ -1279,7 +298,6 @@ " 298\n", " 17\n", " 5\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 15\n", @@ -1292,7 +310,6 @@ " 1044\n", " 24\n", " 13\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 16\n", @@ -1305,7 +322,6 @@ " 157\n", " 25\n", " 5\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 17\n", @@ -1318,7 +334,6 @@ " 144\n", " 22\n", " 4\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 18\n", @@ -1331,7 +346,6 @@ " 177\n", " 24\n", " 7\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 19\n", @@ -1344,7 +358,6 @@ " 0\n", " 13\n", " 0\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 20\n", @@ -1357,7 +370,6 @@ " 1173\n", " 19\n", " 10\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 21\n", @@ -1370,7 +382,6 @@ " 558\n", " 28\n", " 10\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 22\n", @@ -1383,7 +394,6 @@ " 778\n", " 28\n", " 13\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 23\n", @@ -1396,7 +406,6 @@ " 609\n", " 44\n", " 18\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 24\n", @@ -1409,7 +418,6 @@ " 108\n", " 19\n", " 3\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 25\n", @@ -1422,7 +430,6 @@ " 1041\n", " 42\n", " 21\n", - " 2016-01-11/2016-01-17\n", " \n", " \n", " 26\n", @@ -1435,7 +442,6 @@ " 528\n", " 25\n", " 9\n", - " 2016-01-18/2016-01-24\n", " \n", " \n", " 27\n", @@ -1448,7 +454,6 @@ " 1371\n", " 46\n", " 23\n", - " 2016-01-18/2016-01-24\n", " \n", " \n", " 28\n", @@ -1461,7 +466,6 @@ " 1706\n", " 35\n", " 21\n", - " 2016-01-18/2016-01-24\n", " \n", " \n", " 29\n", @@ -1474,7 +478,6 @@ " 480\n", " 53\n", " 17\n", - " 2016-01-18/2016-01-24\n", " \n", " \n", " ...\n", @@ -1487,7 +490,6 @@ " ...\n", " ...\n", " ...\n", - " ...\n", " \n", " \n", " 6379\n", @@ -1500,7 +502,6 @@ " 0\n", " 3\n", " 0\n", - " 2025-05-26/2025-06-01\n", " \n", " \n", " 6380\n", @@ -1513,7 +514,6 @@ " 0\n", " 0\n", " 0\n", - " 2025-05-26/2025-06-01\n", " \n", " \n", " 6381\n", @@ -1526,7 +526,6 @@ " 0\n", " 13\n", " 0\n", - " 2025-05-26/2025-06-01\n", " \n", " \n", " 6382\n", @@ -1539,7 +538,6 @@ " 0\n", " 59\n", " 0\n", - " 2025-05-26/2025-06-01\n", " \n", " \n", " 6383\n", @@ -1552,7 +550,6 @@ " 0\n", " 19\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6384\n", @@ -1565,7 +562,6 @@ " 0\n", " 18\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6385\n", @@ -1578,7 +574,6 @@ " 140\n", " 26\n", " 2\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6386\n", @@ -1591,7 +586,6 @@ " 0\n", " 0\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6387\n", @@ -1604,7 +598,6 @@ " 0\n", " 11\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6388\n", @@ -1617,7 +610,6 @@ " 0\n", " 25\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6389\n", @@ -1630,7 +622,6 @@ " 0\n", " 29\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6390\n", @@ -1643,7 +634,6 @@ " 47\n", " 14\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6391\n", @@ -1656,7 +646,6 @@ " 0\n", " 7\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6392\n", @@ -1669,7 +658,6 @@ " 0\n", " 20\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6393\n", @@ -1682,7 +670,6 @@ " 0\n", " 9\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6394\n", @@ -1695,7 +682,6 @@ " 0\n", " 0\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6395\n", @@ -1708,7 +694,6 @@ " 0\n", " 22\n", " 0\n", - " 2025-06-02/2025-06-08\n", " \n", " \n", " 6396\n", @@ -1721,7 +706,6 @@ " 0\n", " 13\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6397\n", @@ -1734,7 +718,6 @@ " 0\n", " 8\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6398\n", @@ -1747,7 +730,6 @@ " 0\n", " 21\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6399\n", @@ -1760,7 +742,6 @@ " 0\n", " 0\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6400\n", @@ -1773,7 +754,6 @@ " 0\n", " 12\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6401\n", @@ -1786,7 +766,6 @@ " 0\n", " 54\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6402\n", @@ -1799,7 +778,6 @@ " 0\n", " 26\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6403\n", @@ -1812,7 +790,6 @@ " 0\n", " 16\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6404\n", @@ -1825,7 +802,6 @@ " 0\n", " 0\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6405\n", @@ -1838,7 +814,6 @@ " 0\n", " 8\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6406\n", @@ -1851,7 +826,6 @@ " 0\n", " 13\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6407\n", @@ -1864,7 +838,6 @@ " 0\n", " 0\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", " 6408\n", @@ -1877,11 +850,10 @@ " 0\n", " 19\n", " 0\n", - " 2025-06-09/2025-06-15\n", " \n", " \n", "\n", - "

6409 rows × 10 columns

\n", + "

6409 rows × 9 columns

\n", "" ], "text/plain": [ @@ -1948,86 +920,104 @@ "6407 202524 52 7 0 0 0 0 0 \n", "6408 202524 93 7 319 6 995 0 19 \n", "\n", - " inc100_low period \n", - "0 5 2016-01-04/2016-01-10 \n", - "1 15 2016-01-04/2016-01-10 \n", - "2 22 2016-01-04/2016-01-10 \n", - "3 11 2016-01-04/2016-01-10 \n", - "4 6 2016-01-04/2016-01-10 \n", - "5 6 2016-01-04/2016-01-10 \n", - "6 0 2016-01-04/2016-01-10 \n", - "7 19 2016-01-04/2016-01-10 \n", - "8 6 2016-01-04/2016-01-10 \n", - "9 24 2016-01-04/2016-01-10 \n", - "10 4 2016-01-04/2016-01-10 \n", - "11 13 2016-01-04/2016-01-10 \n", - "12 13 2016-01-04/2016-01-10 \n", - "13 7 2016-01-11/2016-01-17 \n", - "14 5 2016-01-11/2016-01-17 \n", - "15 13 2016-01-11/2016-01-17 \n", - "16 5 2016-01-11/2016-01-17 \n", - "17 4 2016-01-11/2016-01-17 \n", - "18 7 2016-01-11/2016-01-17 \n", - "19 0 2016-01-11/2016-01-17 \n", - "20 10 2016-01-11/2016-01-17 \n", - "21 10 2016-01-11/2016-01-17 \n", - "22 13 2016-01-11/2016-01-17 \n", - "23 18 2016-01-11/2016-01-17 \n", - "24 3 2016-01-11/2016-01-17 \n", - "25 21 2016-01-11/2016-01-17 \n", - "26 9 2016-01-18/2016-01-24 \n", - "27 23 2016-01-18/2016-01-24 \n", - "28 21 2016-01-18/2016-01-24 \n", - "29 17 2016-01-18/2016-01-24 \n", - "... ... ... \n", - "6379 0 2025-05-26/2025-06-01 \n", - "6380 0 2025-05-26/2025-06-01 \n", - "6381 0 2025-05-26/2025-06-01 \n", - "6382 0 2025-05-26/2025-06-01 \n", - "6383 0 2025-06-02/2025-06-08 \n", - "6384 0 2025-06-02/2025-06-08 \n", - "6385 2 2025-06-02/2025-06-08 \n", - "6386 0 2025-06-02/2025-06-08 \n", - "6387 0 2025-06-02/2025-06-08 \n", - "6388 0 2025-06-02/2025-06-08 \n", - "6389 0 2025-06-02/2025-06-08 \n", - "6390 0 2025-06-02/2025-06-08 \n", - "6391 0 2025-06-02/2025-06-08 \n", - "6392 0 2025-06-02/2025-06-08 \n", - "6393 0 2025-06-02/2025-06-08 \n", - "6394 0 2025-06-02/2025-06-08 \n", - "6395 0 2025-06-02/2025-06-08 \n", - "6396 0 2025-06-09/2025-06-15 \n", - "6397 0 2025-06-09/2025-06-15 \n", - "6398 0 2025-06-09/2025-06-15 \n", - "6399 0 2025-06-09/2025-06-15 \n", - "6400 0 2025-06-09/2025-06-15 \n", - "6401 0 2025-06-09/2025-06-15 \n", - "6402 0 2025-06-09/2025-06-15 \n", - "6403 0 2025-06-09/2025-06-15 \n", - "6404 0 2025-06-09/2025-06-15 \n", - "6405 0 2025-06-09/2025-06-15 \n", - "6406 0 2025-06-09/2025-06-15 \n", - "6407 0 2025-06-09/2025-06-15 \n", - "6408 0 2025-06-09/2025-06-15 \n", + " inc100_low \n", + "0 5 \n", + "1 15 \n", + "2 22 \n", + "3 11 \n", + "4 6 \n", + "5 6 \n", + "6 0 \n", + "7 19 \n", + "8 6 \n", + "9 24 \n", + "10 4 \n", + "11 13 \n", + "12 13 \n", + "13 7 \n", + "14 5 \n", + "15 13 \n", + "16 5 \n", + "17 4 \n", + "18 7 \n", + "19 0 \n", + "20 10 \n", + "21 10 \n", + "22 13 \n", + "23 18 \n", + "24 3 \n", + "25 21 \n", + "26 9 \n", + "27 23 \n", + "28 21 \n", + "29 17 \n", + "... ... \n", + "6379 0 \n", + "6380 0 \n", + "6381 0 \n", + "6382 0 \n", + "6383 0 \n", + "6384 0 \n", + "6385 2 \n", + "6386 0 \n", + "6387 0 \n", + "6388 0 \n", + "6389 0 \n", + "6390 0 \n", + "6391 0 \n", + "6392 0 \n", + "6393 0 \n", + "6394 0 \n", + "6395 0 \n", + "6396 0 \n", + "6397 0 \n", + "6398 0 \n", + "6399 0 \n", + "6400 0 \n", + "6401 0 \n", + "6402 0 \n", + "6403 0 \n", + "6404 0 \n", + "6405 0 \n", + "6406 0 \n", + "6407 0 \n", + "6408 0 \n", "\n", - "[6409 rows x 10 columns]" + "[6409 rows x 9 columns]" ] }, - "execution_count": 47, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "def convert_week(yearweek):\n", - " y, w = int(str(yearweek)[:4]), int(str(yearweek)[4:])\n", - " return pd.Period(Week(y, w).day(0), 'W')\n", - "\n", - "raw_data['period'] = [convert_week(x) for x in raw_data['week']]\n", + "raw_data[raw_data.isnull().any(axis=1)]\n", + "raw_data = raw_data.dropna()\n", "raw_data" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Convert 'week' to period " + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "def convert_week(yw):\n", + " y = int(str(yw)[:4])\n", + " w = int(str(yw)[4:])\n", + " return pd.Period(Week(y, w).monday(), 'W')\n", + "\n", + "raw_data['period'] = raw_data['week'].apply(convert_week)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2041,7 +1031,7 @@ "metadata": {}, "outputs": [], "source": [ - "data = raw_data.set_index('period').sort_index()\n" + "sorted_data = raw_data.set_index('period').sort_index()\n" ] }, { @@ -2057,8 +1047,7 @@ "metadata": {}, "outputs": [], "source": [ - "sept_start = [pd.Period(pd.Timestamp(y, 9, 1), 'W')\n", - " for y in range(2016, data.index[-1].year)]\n" + "start_weeks = [pd.Period(pd.Timestamp(y, 9, 1), 'W') for y in range(2016, 2025)]" ] }, { @@ -2080,7 +1069,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mincidence\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msept_start\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msept_start\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mseason\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'inc'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mend\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m# No need for -1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mseason\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m52\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mincidence\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mseason\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mtotals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mw1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mw2\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstart_weeks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart_weeks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mseason_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msorted_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'inc'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mw1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mw2\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mseason_data\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m52\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mtotals\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mseason_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 662\u001b[0m \u001b[0mkey\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcheck_bool_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 663\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 664\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_with\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 665\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 666\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_get_with\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36m_get_with\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 667\u001b[0m \u001b[0;31m# other: fancy integer or otherwise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 668\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mslice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 669\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_convert_slice_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkind\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'getitem'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 670\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_values\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 671\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mABCDataFrame\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36m_convert_slice_indexer\u001b[0;34m(self, key, kind)\u001b[0m\n\u001b[1;32m 1462\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1463\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1464\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mslice_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstop\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkind\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkind\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1465\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1466\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_index_slice\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", @@ -2099,14 +1088,97 @@ ], "source": [ "years = []\n", - "incidence = []\n", - "for start, end in zip(sept_start[:-1], sept_start[1:]):\n", - " season = data['inc'][start:end] # No need for -1\n", - " assert abs(len(season) - 52) < 3\n", - " incidence.append(season.sum())\n", - " years.append(end.year)\n", + "totals = []\n", + "for w1, w2 in zip(start_weeks[:-1], start_weeks[1:]):\n", + " season_data = sorted_data['inc'][w1:w2 - 1]\n", + " if abs(len(season_data) - 52) < 3:\n", + " totals.append(season_data.sum())\n", + " years.append(w2.year)\n", "\n", - "annual = pd.Series(data=incidence, index=years)\n" + "yearly_incidence = pd.Series(data=totals, index=years)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "Empty 'DataFrame': no numeric data to plot", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0myearly_incidence\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstyle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'o-'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtitle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'Annual Chickenpox Incidence'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Total incidence\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Year\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/plotting/_core.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, kind, ax, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, label, secondary_y, **kwds)\u001b[0m\n\u001b[1;32m 2501\u001b[0m \u001b[0mcolormap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcolormap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtable\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtable\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0myerr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2502\u001b[0m \u001b[0mxerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mxerr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msecondary_y\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msecondary_y\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2503\u001b[0;31m **kwds)\n\u001b[0m\u001b[1;32m 2504\u001b[0m \u001b[0m__call__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplot_series\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2505\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/plotting/_core.py\u001b[0m in \u001b[0;36mplot_series\u001b[0;34m(data, kind, ax, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, label, secondary_y, **kwds)\u001b[0m\n\u001b[1;32m 1925\u001b[0m \u001b[0myerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0myerr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mxerr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1926\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msecondary_y\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msecondary_y\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1927\u001b[0;31m **kwds)\n\u001b[0m\u001b[1;32m 1928\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1929\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/plotting/_core.py\u001b[0m in \u001b[0;36m_plot\u001b[0;34m(data, x, y, subplots, ax, kind, **kwds)\u001b[0m\n\u001b[1;32m 1727\u001b[0m \u001b[0mplot_obj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mklass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubplots\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubplots\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkind\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1728\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1729\u001b[0;31m \u001b[0mplot_obj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgenerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1730\u001b[0m \u001b[0mplot_obj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1731\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mplot_obj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/plotting/_core.py\u001b[0m in \u001b[0;36mgenerate\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 248\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgenerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 249\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 250\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compute_plot_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 251\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setup_subplots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 252\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_plot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/plotting/_core.py\u001b[0m in \u001b[0;36m_compute_plot_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 363\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_empty\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 364\u001b[0m raise TypeError('Empty {0!r}: no numeric data to '\n\u001b[0;32m--> 365\u001b[0;31m 'plot'.format(numeric_data.__class__.__name__))\n\u001b[0m\u001b[1;32m 366\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumeric_data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: Empty 'DataFrame': no numeric data to plot" + ] + } + ], + "source": [ + "yearly_incidence.plot(style='o-', title='Annual Chickenpox Incidence')\n", + "plt.ylabel(\"Total incidence\")\n", + "plt.xlabel(\"Year\")\n", + "plt.grid(True)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "yearly_incidence.hist()\n", + "plt.title(\"Distribution of Yearly Incidence\")\n", + "plt.xlabel(\"Incidence\")\n", + "plt.ylabel(\"Count\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "attempt to get argmax of an empty sequence", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mstrongest\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0myearly_incidence\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0midxmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mweakest\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0myearly_incidence\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0midxmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Strongest epidemic year: {strongest}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Weakest epidemic year: {weakest}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36midxmax\u001b[0;34m(self, axis, skipna, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1367\u001b[0m \"\"\"\n\u001b[1;32m 1368\u001b[0m \u001b[0mskipna\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_argmax_with_skipna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mskipna\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1369\u001b[0;31m \u001b[0mi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnanops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnanargmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_values_from_object\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskipna\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mskipna\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1370\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1371\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnan\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/nanops.py\u001b[0m in \u001b[0;36m_f\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merrstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minvalid\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ignore'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 77\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 78\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;31m# we want to transform an object array\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/nanops.py\u001b[0m in \u001b[0;36mnanargmax\u001b[0;34m(values, axis, skipna)\u001b[0m\n\u001b[1;32m 521\u001b[0m \"\"\"\n\u001b[1;32m 522\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_get_values\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskipna\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfill_value_typ\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'-inf'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 523\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 524\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_maybe_arg_null_out\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskipna\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 525\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: attempt to get argmax of an empty sequence" + ] + } + ], + "source": [ + "strongest = yearly_incidence.idxmax()\n", + "weakest = yearly_incidence.idxmin()\n", + "print(f\"Strongest epidemic year: {strongest}\")\n", + "print(f\"Weakest epidemic year: {weakest}\")" ] }, {