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",
- " week | \n",
- " geo_insee | \n",
- " indicator | \n",
- " inc | \n",
- " inc100 | \n",
- " inc_up | \n",
- " inc_low | \n",
- " inc100_up | \n",
- " inc100_low | \n",
- " period | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " 201601 | \n",
- " 44 | \n",
- " 7 | \n",
- " 574 | \n",
- " 10 | \n",
- " 861 | \n",
- " 287 | \n",
- " 15 | \n",
- " 5 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " 201601 | \n",
- " 75 | \n",
- " 7 | \n",
- " 1513 | \n",
- " 25 | \n",
- " 2099 | \n",
- " 927 | \n",
- " 35 | \n",
- " 15 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " 201601 | \n",
- " 84 | \n",
- " 7 | \n",
- " 2363 | \n",
- " 30 | \n",
- " 2958 | \n",
- " 1768 | \n",
- " 37 | \n",
- " 22 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " 201601 | \n",
- " 27 | \n",
- " 7 | \n",
- " 686 | \n",
- " 24 | \n",
- " 1058 | \n",
- " 314 | \n",
- " 36 | \n",
- " 11 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " 201601 | \n",
- " 53 | \n",
- " 7 | \n",
- " 532 | \n",
- " 16 | \n",
- " 874 | \n",
- " 190 | \n",
- " 26 | \n",
- " 6 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 5 | \n",
- " 201601 | \n",
- " 24 | \n",
- " 7 | \n",
- " 394 | \n",
- " 15 | \n",
- " 625 | \n",
- " 163 | \n",
- " 24 | \n",
- " 6 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 6 | \n",
- " 201601 | \n",
- " 94 | \n",
- " 7 | \n",
- " 38 | \n",
- " 12 | \n",
- " 82 | \n",
- " 0 | \n",
- " 25 | \n",
- " 0 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 7 | \n",
- " 201601 | \n",
- " 11 | \n",
- " 7 | \n",
- " 3030 | \n",
- " 25 | \n",
- " 3788 | \n",
- " 2272 | \n",
- " 31 | \n",
- " 19 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 8 | \n",
- " 201601 | \n",
- " 76 | \n",
- " 7 | \n",
- " 842 | \n",
- " 14 | \n",
- " 1307 | \n",
- " 377 | \n",
- " 22 | \n",
- " 6 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 9 | \n",
- " 201601 | \n",
- " 32 | \n",
- " 7 | \n",
- " 2100 | \n",
- " 34 | \n",
- " 2711 | \n",
- " 1489 | \n",
- " 44 | \n",
- " 24 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 10 | \n",
- " 201601 | \n",
- " 28 | \n",
- " 7 | \n",
- " 418 | \n",
- " 12 | \n",
- " 687 | \n",
- " 149 | \n",
- " 20 | \n",
- " 4 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 11 | \n",
- " 201601 | \n",
- " 52 | \n",
- " 7 | \n",
- " 1029 | \n",
- " 27 | \n",
- " 1577 | \n",
- " 481 | \n",
- " 42 | \n",
- " 13 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 12 | \n",
- " 201601 | \n",
- " 93 | \n",
- " 7 | \n",
- " 1053 | \n",
- " 21 | \n",
- " 1457 | \n",
- " 649 | \n",
- " 29 | \n",
- " 13 | \n",
- " 2016-01-04/2016-01-10 | \n",
- "
\n",
- " \n",
- " | 13 | \n",
- " 201602 | \n",
- " 44 | \n",
- " 7 | \n",
- " 772 | \n",
- " 14 | \n",
- " 1122 | \n",
- " 422 | \n",
- " 20 | \n",
- " 7 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 14 | \n",
- " 201602 | \n",
- " 75 | \n",
- " 7 | \n",
- " 657 | \n",
- " 11 | \n",
- " 1016 | \n",
- " 298 | \n",
- " 17 | \n",
- " 5 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 15 | \n",
- " 201602 | \n",
- " 84 | \n",
- " 7 | \n",
- " 1486 | \n",
- " 19 | \n",
- " 1928 | \n",
- " 1044 | \n",
- " 24 | \n",
- " 13 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 16 | \n",
- " 201602 | \n",
- " 27 | \n",
- " 7 | \n",
- " 442 | \n",
- " 15 | \n",
- " 727 | \n",
- " 157 | \n",
- " 25 | \n",
- " 5 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 17 | \n",
- " 201602 | \n",
- " 53 | \n",
- " 7 | \n",
- " 444 | \n",
- " 13 | \n",
- " 744 | \n",
- " 144 | \n",
- " 22 | \n",
- " 4 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 18 | \n",
- " 201602 | \n",
- " 24 | \n",
- " 7 | \n",
- " 402 | \n",
- " 15 | \n",
- " 627 | \n",
- " 177 | \n",
- " 24 | \n",
- " 7 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 19 | \n",
- " 201602 | \n",
- " 94 | \n",
- " 7 | \n",
- " 12 | \n",
- " 4 | \n",
- " 42 | \n",
- " 0 | \n",
- " 13 | \n",
- " 0 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 20 | \n",
- " 201602 | \n",
- " 11 | \n",
- " 7 | \n",
- " 1745 | \n",
- " 14 | \n",
- " 2317 | \n",
- " 1173 | \n",
- " 19 | \n",
- " 10 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 21 | \n",
- " 201602 | \n",
- " 76 | \n",
- " 7 | \n",
- " 1101 | \n",
- " 19 | \n",
- " 1644 | \n",
- " 558 | \n",
- " 28 | \n",
- " 10 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 22 | \n",
- " 201602 | \n",
- " 32 | \n",
- " 7 | \n",
- " 1249 | \n",
- " 20 | \n",
- " 1720 | \n",
- " 778 | \n",
- " 28 | \n",
- " 13 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 23 | \n",
- " 201602 | \n",
- " 28 | \n",
- " 7 | \n",
- " 1064 | \n",
- " 31 | \n",
- " 1519 | \n",
- " 609 | \n",
- " 44 | \n",
- " 18 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 24 | \n",
- " 201602 | \n",
- " 52 | \n",
- " 7 | \n",
- " 408 | \n",
- " 11 | \n",
- " 708 | \n",
- " 108 | \n",
- " 19 | \n",
- " 3 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 25 | \n",
- " 201602 | \n",
- " 93 | \n",
- " 7 | \n",
- " 1570 | \n",
- " 31 | \n",
- " 2099 | \n",
- " 1041 | \n",
- " 42 | \n",
- " 21 | \n",
- " 2016-01-11/2016-01-17 | \n",
- "
\n",
- " \n",
- " | 26 | \n",
- " 201603 | \n",
- " 44 | \n",
- " 7 | \n",
- " 985 | \n",
- " 17 | \n",
- " 1442 | \n",
- " 528 | \n",
- " 25 | \n",
- " 9 | \n",
- " 2016-01-18/2016-01-24 | \n",
- "
\n",
- " \n",
- " | 27 | \n",
- " 201603 | \n",
- " 75 | \n",
- " 7 | \n",
- " 2070 | \n",
- " 34 | \n",
- " 2769 | \n",
- " 1371 | \n",
- " 46 | \n",
- " 23 | \n",
- " 2016-01-18/2016-01-24 | \n",
- "
\n",
- " \n",
- " | 28 | \n",
- " 201603 | \n",
- " 84 | \n",
- " 7 | \n",
- " 2258 | \n",
- " 28 | \n",
- " 2810 | \n",
- " 1706 | \n",
- " 35 | \n",
- " 21 | \n",
- " 2016-01-18/2016-01-24 | \n",
- "
\n",
- " \n",
- " | 29 | \n",
- " 201603 | \n",
- " 27 | \n",
- " 7 | \n",
- " 1009 | \n",
- " 35 | \n",
- " 1538 | \n",
- " 480 | \n",
- " 53 | \n",
- " 17 | \n",
- " 2016-01-18/2016-01-24 | \n",
- "
\n",
- " \n",
- " | ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " | 6379 | \n",
- " 202522 | \n",
- " 32 | \n",
- " 7 | \n",
- " 30 | \n",
- " 0 | \n",
- " 195 | \n",
- " 0 | \n",
- " 3 | \n",
- " 0 | \n",
- " 2025-05-26/2025-06-01 | \n",
- "
\n",
- " \n",
- " | 6380 | \n",
- " 202522 | \n",
- " 28 | \n",
- " 7 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 2025-05-26/2025-06-01 | \n",
- "
\n",
- " \n",
- " | 6381 | \n",
- " 202522 | \n",
- " 52 | \n",
- " 7 | \n",
- " 198 | \n",
- " 5 | \n",
- " 528 | \n",
- " 0 | \n",
- " 13 | \n",
- " 0 | \n",
- " 2025-05-26/2025-06-01 | \n",
- "
\n",
- " \n",
- " | 6382 | \n",
- " 202522 | \n",
- " 93 | \n",
- " 7 | \n",
- " 1254 | \n",
- " 24 | \n",
- " 3098 | \n",
- " 0 | \n",
- " 59 | \n",
- " 0 | \n",
- " 2025-05-26/2025-06-01 | \n",
- "
\n",
- " \n",
- " | 6383 | \n",
- " 202523 | \n",
- " 44 | \n",
- " 7 | \n",
- " 413 | \n",
- " 7 | \n",
- " 1090 | \n",
- " 0 | \n",
- " 19 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6384 | \n",
- " 202523 | \n",
- " 75 | \n",
- " 7 | \n",
- " 442 | \n",
- " 7 | \n",
- " 1117 | \n",
- " 0 | \n",
- " 18 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6385 | \n",
- " 202523 | \n",
- " 84 | \n",
- " 7 | \n",
- " 1148 | \n",
- " 14 | \n",
- " 2156 | \n",
- " 140 | \n",
- " 26 | \n",
- " 2 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6386 | \n",
- " 202523 | \n",
- " 27 | \n",
- " 7 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6387 | \n",
- " 202523 | \n",
- " 53 | \n",
- " 7 | \n",
- " 143 | \n",
- " 4 | \n",
- " 394 | \n",
- " 0 | \n",
- " 11 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6388 | \n",
- " 202523 | \n",
- " 24 | \n",
- " 7 | \n",
- " 272 | \n",
- " 10 | \n",
- " 667 | \n",
- " 0 | \n",
- " 25 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6389 | \n",
- " 202523 | \n",
- " 94 | \n",
- " 7 | \n",
- " 37 | \n",
- " 10 | \n",
- " 104 | \n",
- " 0 | \n",
- " 29 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6390 | \n",
- " 202523 | \n",
- " 11 | \n",
- " 7 | \n",
- " 905 | \n",
- " 7 | \n",
- " 1763 | \n",
- " 47 | \n",
- " 14 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6391 | \n",
- " 202523 | \n",
- " 76 | \n",
- " 7 | \n",
- " 75 | \n",
- " 1 | \n",
- " 435 | \n",
- " 0 | \n",
- " 7 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6392 | \n",
- " 202523 | \n",
- " 32 | \n",
- " 7 | \n",
- " 527 | \n",
- " 9 | \n",
- " 1226 | \n",
- " 0 | \n",
- " 20 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6393 | \n",
- " 202523 | \n",
- " 28 | \n",
- " 7 | \n",
- " 108 | \n",
- " 3 | \n",
- " 321 | \n",
- " 0 | \n",
- " 9 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6394 | \n",
- " 202523 | \n",
- " 52 | \n",
- " 7 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6395 | \n",
- " 202523 | \n",
- " 93 | \n",
- " 7 | \n",
- " 336 | \n",
- " 6 | \n",
- " 1130 | \n",
- " 0 | \n",
- " 22 | \n",
- " 0 | \n",
- " 2025-06-02/2025-06-08 | \n",
- "
\n",
- " \n",
- " | 6396 | \n",
- " 202524 | \n",
- " 44 | \n",
- " 7 | \n",
- " 196 | \n",
- " 3 | \n",
- " 741 | \n",
- " 0 | \n",
- " 13 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6397 | \n",
- " 202524 | \n",
- " 75 | \n",
- " 7 | \n",
- " 144 | \n",
- " 2 | \n",
- " 516 | \n",
- " 0 | \n",
- " 8 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6398 | \n",
- " 202524 | \n",
- " 84 | \n",
- " 7 | \n",
- " 824 | \n",
- " 10 | \n",
- " 1745 | \n",
- " 0 | \n",
- " 21 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6399 | \n",
- " 202524 | \n",
- " 27 | \n",
- " 7 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6400 | \n",
- " 202524 | \n",
- " 53 | \n",
- " 7 | \n",
- " 164 | \n",
- " 5 | \n",
- " 430 | \n",
- " 0 | \n",
- " 12 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6401 | \n",
- " 202524 | \n",
- " 24 | \n",
- " 7 | \n",
- " 710 | \n",
- " 27 | \n",
- " 1423 | \n",
- " 0 | \n",
- " 54 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6402 | \n",
- " 202524 | \n",
- " 94 | \n",
- " 7 | \n",
- " 28 | \n",
- " 8 | \n",
- " 94 | \n",
- " 0 | \n",
- " 26 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6403 | \n",
- " 202524 | \n",
- " 11 | \n",
- " 7 | \n",
- " 913 | \n",
- " 7 | \n",
- " 1946 | \n",
- " 0 | \n",
- " 16 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6404 | \n",
- " 202524 | \n",
- " 76 | \n",
- " 7 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6405 | \n",
- " 202524 | \n",
- " 32 | \n",
- " 7 | \n",
- " 146 | \n",
- " 2 | \n",
- " 507 | \n",
- " 0 | \n",
- " 8 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6406 | \n",
- " 202524 | \n",
- " 28 | \n",
- " 7 | \n",
- " 140 | \n",
- " 4 | \n",
- " 441 | \n",
- " 0 | \n",
- " 13 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6407 | \n",
- " 202524 | \n",
- " 52 | \n",
- " 7 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- " | 6408 | \n",
- " 202524 | \n",
- " 93 | \n",
- " 7 | \n",
- " 319 | \n",
- " 6 | \n",
- " 995 | \n",
- " 0 | \n",
- " 19 | \n",
- " 0 | \n",
- " 2025-06-09/2025-06-15 | \n",
- "
\n",
- " \n",
- "
\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}\")"
]
},
{