{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Autour du SARS-CoV-2 (Covid-19)\n", "\n", "Le but est ici de reproduire des graphes semblables à ceux du [South China Morning Post](https://www.scmp.com/) (SCMP), sur la page [The Coronavirus Pandemic](https://www.scmp.com/coronavirus?src=homepage_covid_widget) et qui montrent pour différents pays le nombre cumulé (c’est-à-dire le nombre total de cas depuis le début de l’épidémie) de personnes atteintes de la [maladie à coronavirus 2019](https://fr.wikipedia.org/wiki/Maladie_%C3%A0_coronavirus_2019).\n", "\n", "Les données que nous utiliserons dans un premier temps sont compilées par le [Johns Hopkins University Center for Systems Science and Engineering (JHU CSSE)](https://systems.jhu.edu/) et sont mises à disposition sur [GitHub](https://github.com/CSSEGISandData/COVID-19). C'est plus particulièrement sur les données `time_series_covid19_confirmed_global.csv` (des suites chronologiques au format csv) disponibles [ici](https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv) que nous allons nous concentrer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Téléchargement et traitement des données\n", "\n", "Les données relevées sont stockées dans un fichier. Celles-ci sont à la date du 22 juin 2021." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'time_series_covid19_confirmed_global.csv'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_file = \"time_series_covid19_confirmed_global.csv\"\n", "data_url = \"https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv\"\n", "\n", "import os\n", "import urllib.request\n", "if not os.path.exists(data_file):\n", " urllib.request.urlretrieve(data_url, data_file)\n", "data_file" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "raw_data = pd.read_csv(data_file, sep=',')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On s'intéressera ici spécifiquement aux données de la **Belgique**, la **Chine** (en traitant **Hong-Kong** à part), la **France métroploitaine**, l'**Allemagne**, l'**Iran**, l'**Italie**, le **Japon**, la **Corée du Sud**, les **Pays-Bas** (*hors colonies*), le **Portugal**, l'**Espagne**, le **Royaume-Uni** (*hors colonies*) et les **États-Unis**.\n", "\n", "[//]: # \"Initialement, il est demandé de tenir compte également de la **Chine** (en traitant **Hong-Kong** à part). Cependant, et comme on peut le voir juste au dessus, le format utilisé pour le fichier `.csv` traite chacune des 34 provinces chinoises à part, avec aucune donnée générale sur la Chine. Plusieurs choix s'offrent à nous : reconstituer une ligne *globale* pour ce pays en mélangeant **toutes** ses provinces, faire la même chose en gardant de côté **Hong-Kong** pour coller à la consigne ou se simplifier la vie en mettant de côté les données chinoises.\"\n", "\n", "[//]: # \"Je choisis cette dernière options pour plusieurs raisons. La première, et plus évidente, est la facilité : je ne pense pas parvenir à mélanger toutes les provinces de la Chine efficacement/élégamment, et suis presque certain d'effectuer une erreur en m'y frottant. Par ailleurs, on remarque en lisant l'énoncé de cet exercice :\"\n", "\n", "[//]: # \"> Les données de la Chine apparaissent par province et nous avons séparé Hong-Kong, non pour prendre parti dans les différences entre cette province et l’état chinois, mais parce que c’est ainsi qu’apparaissent les données sur le site du SCMP.\"\n", "\n", "[//]: # \"Ce qui laisse penser que cette difficulté n'est pas initialement prévue, et que la consigne initiale est tournée de manière à ne pas devoir réaliser de fusion de lignes. Pour toutes ces raisons, laisser de côté les données pour la **Chine** me semble à la fois bien plus judicieux en terme de temps, mais aussi plus proche de l'intention initiale de la consigne.\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "selectedCountries = ['Belgium', 'France', 'China', 'Germany', 'Iran', 'Italy',\n", " 'Japan', 'Korea,South', 'Netherlands', 'Portugal', 'Spain',\n", " 'United Kingdom', 'US']\n", "\n", "selectedData = raw_data[raw_data['Country/Region'].isin(selectedCountries)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pour tous les pays - sauf la Chine - les données hors provinces/colonies présentent `NaN` dans leur colonne `Province/State`. On peut donc récupérer d'une part toutes les données chinoises, et d'autre part les données des autres pays." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "dataChina = selectedData[selectedData['Country/Region'] == 'China']" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "dataOther = selectedData[selectedData['Province/State'] != selectedData['Province/State']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut finalement concaténer ces deux jeux de données." ] }, { "cell_type": "code", "execution_count": 6, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Province/StateCountry/RegionLatLong1/22/201/23/201/24/201/25/201/26/201/27/20...6/12/216/13/216/14/216/15/216/16/216/17/216/18/216/19/216/20/216/21/21
23NaNBelgium50.8333004.469936000000...1075765107633810765791077087107775810782511078251107908410794151079640
58AnhuiChina31.825700117.2264001915396070...1004100410041004100410041004100410041004
59BeijingChina40.182400116.414200142236416880...1069107010711071107210721073107310751075
60ChongqingChina30.057200107.87400069275775110...598598598598598598598598598598
61FujianChina26.078900117.9874001510183559...637637638638641646650651652659
62GansuChina35.751800104.2861000224714...194194194194194194194194194194
63GuangdongChina23.341700113.42440026325378111151...2618262526352650265726662680269226992706
64GuangxiChina23.829800108.7881002523233646...275275275275275275275275275275
65GuizhouChina26.815400106.874800133457...147147147147147147147147147147
66HainanChina19.195900109.745300458192233...188188188188188188188188188188
67HebeiChina39.549000116.13060011281318...1317131713171317131713171317131713171317
68HeilongjiangChina47.862000127.76150002491521...1612161216121612161216121612161216121612
69HenanChina37.895700114.9042005593283128...1316131613161316131613161316131613171317
70Hong KongChina22.300000114.200000022588...11877118771187811880118811188111884118851188611889
71HubeiChina30.975600112.27070044444454976110581423...68159681596815968159681606816068160681606816068160
72HunanChina27.610400111.70880049244369100...1051105110511051105110511051105110511051
73Inner MongoliaChina44.093500113.9448000017711...390393393393393393393393393394
74JiangsuChina32.971100119.455000159183347...735736736738739739739739740740
75JiangxiChina27.614000115.7221002718183672...937937937937937937937937937937
76JilinChina43.666100126.192300013446...573573573573573573573573573573
77LiaoningChina41.295600122.608500234172127...426426426426426426426426426426
78MacauChina22.166700113.550000122256...52525252525253535353
79NingxiaChina37.269200106.165500112347...76767676767676767676
80QinghaiChina35.74520095.995600000116...18181818181818181818
81ShaanxiChina35.191700108.870100035152235...622622622622622622624624624624
82ShandongChina36.342700118.1498002615274675...883883883883883883883883883883
83ShanghaiChina31.202000121.44910091620334053...2155216021652168217021732179218221832184
84ShanxiChina37.577700112.2922001116913...253253253253253253253253253253
85SichuanChina30.617100102.7103005815284469...1050105410551056105710571057105810591064
86TianjinChina39.305400117.323000448101423...398398398398398399399399399399
87TibetChina31.69270088.092400000000...1111111111
88UnknownChinaNaNNaN000000...0000000000
89XinjiangChina41.11290085.240100022345...980980980980980980980980980980
90YunnanChina24.974000101.487000125111626...374376377377380382384388391391
91ZhejiangChina29.183200120.09340010274362104128...1372137213731373137313761377137913791383
130NaNFrance46.2276002.213700002333...5675604567820956788935681846568353656853875688557569118156929965692968
134NaNGermany51.16569110.451526000001...3722295372329537241683725328372676737276683728601372959737301263730619
149NaNIran32.42790853.688046000000...3020522302871730394323049648306013530704263080526308697430951353105620
153NaNItaly41.87194012.567380000000...4243482424487242457794247032424843242497554250902425209542529764253460
155NaNJapan36.204824138.252924222244...774240775624776565777979779696781241782877784384785702786566
197NaNNetherlands52.1326005.291300000000...1671703167274416735961674628167564416767081677596167828216789831679542
214NaNPortugal39.399900-8.224500000000...856740857447858072859045860395861628862926864109865050865806
237NaNSpain40.463667-3.749220000000...3733600373360037417673745199374903137532283757442375744237574423764651
253NaNUS40.000000-100.000000112255...33457228334620033347473433486038334984683350886733529475335379953354188733554275
268NaNUnited Kingdom55.378100-3.436000000000...4558494456581345734194581006458981446006234610893462096846300404640507
\n", "

45 rows × 521 columns

\n", "
" ], "text/plain": [ " Province/State Country/Region Lat Long 1/22/20 1/23/20 \\\n", "23 NaN Belgium 50.833300 4.469936 0 0 \n", "58 Anhui China 31.825700 117.226400 1 9 \n", "59 Beijing China 40.182400 116.414200 14 22 \n", "60 Chongqing China 30.057200 107.874000 6 9 \n", "61 Fujian China 26.078900 117.987400 1 5 \n", "62 Gansu China 35.751800 104.286100 0 2 \n", "63 Guangdong China 23.341700 113.424400 26 32 \n", "64 Guangxi China 23.829800 108.788100 2 5 \n", "65 Guizhou China 26.815400 106.874800 1 3 \n", "66 Hainan China 19.195900 109.745300 4 5 \n", "67 Hebei China 39.549000 116.130600 1 1 \n", "68 Heilongjiang China 47.862000 127.761500 0 2 \n", "69 Henan China 37.895700 114.904200 5 5 \n", "70 Hong Kong China 22.300000 114.200000 0 2 \n", "71 Hubei China 30.975600 112.270700 444 444 \n", "72 Hunan China 27.610400 111.708800 4 9 \n", "73 Inner Mongolia China 44.093500 113.944800 0 0 \n", "74 Jiangsu China 32.971100 119.455000 1 5 \n", "75 Jiangxi China 27.614000 115.722100 2 7 \n", "76 Jilin China 43.666100 126.192300 0 1 \n", "77 Liaoning China 41.295600 122.608500 2 3 \n", "78 Macau China 22.166700 113.550000 1 2 \n", "79 Ningxia China 37.269200 106.165500 1 1 \n", "80 Qinghai China 35.745200 95.995600 0 0 \n", "81 Shaanxi China 35.191700 108.870100 0 3 \n", "82 Shandong China 36.342700 118.149800 2 6 \n", "83 Shanghai China 31.202000 121.449100 9 16 \n", "84 Shanxi China 37.577700 112.292200 1 1 \n", "85 Sichuan China 30.617100 102.710300 5 8 \n", "86 Tianjin China 39.305400 117.323000 4 4 \n", "87 Tibet China 31.692700 88.092400 0 0 \n", "88 Unknown China NaN NaN 0 0 \n", "89 Xinjiang China 41.112900 85.240100 0 2 \n", "90 Yunnan China 24.974000 101.487000 1 2 \n", "91 Zhejiang China 29.183200 120.093400 10 27 \n", "130 NaN France 46.227600 2.213700 0 0 \n", "134 NaN Germany 51.165691 10.451526 0 0 \n", "149 NaN Iran 32.427908 53.688046 0 0 \n", "153 NaN Italy 41.871940 12.567380 0 0 \n", "155 NaN Japan 36.204824 138.252924 2 2 \n", "197 NaN Netherlands 52.132600 5.291300 0 0 \n", "214 NaN Portugal 39.399900 -8.224500 0 0 \n", "237 NaN Spain 40.463667 -3.749220 0 0 \n", "253 NaN US 40.000000 -100.000000 1 1 \n", "268 NaN United Kingdom 55.378100 -3.436000 0 0 \n", "\n", " 1/24/20 1/25/20 1/26/20 1/27/20 ... 6/12/21 6/13/21 \\\n", "23 0 0 0 0 ... 1075765 1076338 \n", "58 15 39 60 70 ... 1004 1004 \n", "59 36 41 68 80 ... 1069 1070 \n", "60 27 57 75 110 ... 598 598 \n", "61 10 18 35 59 ... 637 637 \n", "62 2 4 7 14 ... 194 194 \n", "63 53 78 111 151 ... 2618 2625 \n", "64 23 23 36 46 ... 275 275 \n", "65 3 4 5 7 ... 147 147 \n", "66 8 19 22 33 ... 188 188 \n", "67 2 8 13 18 ... 1317 1317 \n", "68 4 9 15 21 ... 1612 1612 \n", "69 9 32 83 128 ... 1316 1316 \n", "70 2 5 8 8 ... 11877 11877 \n", "71 549 761 1058 1423 ... 68159 68159 \n", "72 24 43 69 100 ... 1051 1051 \n", "73 1 7 7 11 ... 390 393 \n", "74 9 18 33 47 ... 735 736 \n", "75 18 18 36 72 ... 937 937 \n", "76 3 4 4 6 ... 573 573 \n", "77 4 17 21 27 ... 426 426 \n", "78 2 2 5 6 ... 52 52 \n", "79 2 3 4 7 ... 76 76 \n", "80 0 1 1 6 ... 18 18 \n", "81 5 15 22 35 ... 622 622 \n", "82 15 27 46 75 ... 883 883 \n", "83 20 33 40 53 ... 2155 2160 \n", "84 1 6 9 13 ... 253 253 \n", "85 15 28 44 69 ... 1050 1054 \n", "86 8 10 14 23 ... 398 398 \n", "87 0 0 0 0 ... 1 1 \n", "88 0 0 0 0 ... 0 0 \n", "89 2 3 4 5 ... 980 980 \n", "90 5 11 16 26 ... 374 376 \n", "91 43 62 104 128 ... 1372 1372 \n", "130 2 3 3 3 ... 5675604 5678209 \n", "134 0 0 0 1 ... 3722295 3723295 \n", "149 0 0 0 0 ... 3020522 3028717 \n", "153 0 0 0 0 ... 4243482 4244872 \n", "155 2 2 4 4 ... 774240 775624 \n", "197 0 0 0 0 ... 1671703 1672744 \n", "214 0 0 0 0 ... 856740 857447 \n", "237 0 0 0 0 ... 3733600 3733600 \n", "253 2 2 5 5 ... 33457228 33462003 \n", "268 0 0 0 0 ... 4558494 4565813 \n", "\n", " 6/14/21 6/15/21 6/16/21 6/17/21 6/18/21 6/19/21 6/20/21 \\\n", "23 1076579 1077087 1077758 1078251 1078251 1079084 1079415 \n", "58 1004 1004 1004 1004 1004 1004 1004 \n", "59 1071 1071 1072 1072 1073 1073 1075 \n", "60 598 598 598 598 598 598 598 \n", "61 638 638 641 646 650 651 652 \n", "62 194 194 194 194 194 194 194 \n", "63 2635 2650 2657 2666 2680 2692 2699 \n", "64 275 275 275 275 275 275 275 \n", "65 147 147 147 147 147 147 147 \n", "66 188 188 188 188 188 188 188 \n", "67 1317 1317 1317 1317 1317 1317 1317 \n", "68 1612 1612 1612 1612 1612 1612 1612 \n", "69 1316 1316 1316 1316 1316 1316 1317 \n", "70 11878 11880 11881 11881 11884 11885 11886 \n", "71 68159 68159 68160 68160 68160 68160 68160 \n", "72 1051 1051 1051 1051 1051 1051 1051 \n", "73 393 393 393 393 393 393 393 \n", "74 736 738 739 739 739 739 740 \n", "75 937 937 937 937 937 937 937 \n", "76 573 573 573 573 573 573 573 \n", "77 426 426 426 426 426 426 426 \n", "78 52 52 52 52 53 53 53 \n", "79 76 76 76 76 76 76 76 \n", "80 18 18 18 18 18 18 18 \n", "81 622 622 622 622 624 624 624 \n", "82 883 883 883 883 883 883 883 \n", "83 2165 2168 2170 2173 2179 2182 2183 \n", "84 253 253 253 253 253 253 253 \n", "85 1055 1056 1057 1057 1057 1058 1059 \n", "86 398 398 398 399 399 399 399 \n", "87 1 1 1 1 1 1 1 \n", "88 0 0 0 0 0 0 0 \n", "89 980 980 980 980 980 980 980 \n", "90 377 377 380 382 384 388 391 \n", "91 1373 1373 1373 1376 1377 1379 1379 \n", "130 5678893 5681846 5683536 5685387 5688557 5691181 5692996 \n", "134 3724168 3725328 3726767 3727668 3728601 3729597 3730126 \n", "149 3039432 3049648 3060135 3070426 3080526 3086974 3095135 \n", "153 4245779 4247032 4248432 4249755 4250902 4252095 4252976 \n", "155 776565 777979 779696 781241 782877 784384 785702 \n", "197 1673596 1674628 1675644 1676708 1677596 1678282 1678983 \n", "214 858072 859045 860395 861628 862926 864109 865050 \n", "237 3741767 3745199 3749031 3753228 3757442 3757442 3757442 \n", "253 33474734 33486038 33498468 33508867 33529475 33537995 33541887 \n", "268 4573419 4581006 4589814 4600623 4610893 4620968 4630040 \n", "\n", " 6/21/21 \n", "23 1079640 \n", "58 1004 \n", "59 1075 \n", "60 598 \n", "61 659 \n", "62 194 \n", "63 2706 \n", "64 275 \n", "65 147 \n", "66 188 \n", "67 1317 \n", "68 1612 \n", "69 1317 \n", "70 11889 \n", "71 68160 \n", "72 1051 \n", "73 394 \n", "74 740 \n", "75 937 \n", "76 573 \n", "77 426 \n", "78 53 \n", "79 76 \n", "80 18 \n", "81 624 \n", "82 883 \n", "83 2184 \n", "84 253 \n", "85 1064 \n", "86 399 \n", "87 1 \n", "88 0 \n", "89 980 \n", "90 391 \n", "91 1383 \n", "130 5692968 \n", "134 3730619 \n", "149 3105620 \n", "153 4253460 \n", "155 786566 \n", "197 1679542 \n", "214 865806 \n", "237 3764651 \n", "253 33554275 \n", "268 4640507 \n", "\n", "[45 rows x 521 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.concat([dataOther, dataChina]).sort_index()\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On remarque d'ailleurs, pour la Chine (`index 88`), une ligne vide sans intérêt pour la suit de nos travaux car pleine de *zéros* ; on la supprime." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "data = data.drop([88])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualisation des données\n", "\n", "On cherche à visualiser le nombre cumulé de cas à chaque date disponible.\n", "Présentons dans un premier temps les données telles qu'elles." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "\n", "# Extraction des dates, lieux et nombre de cas cumulés\n", "dates = data.keys()[4:] # Dates\n", "place = data.get_values()[:,:2] # [Province , Country]\n", "cases = data.get_values()[:,4:] # Cas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reformattons les noms des différents pays/régions pour plus de lisibilité. Passons ainsi du format\n", " `[Province, Country]`\n", "au format\n", " `[Country (-Province?)]`\n", "où l'on ne précise la province que si c'est nécessaire." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def convert_location_names(place) :\n", " places = []\n", " for i in range(len(place)) :\n", " newDate = place[i,1]\n", " # Cas où la province est spécifiée (non- 'NaN')\n", " if not place[i,0] != place[i,0] :\n", " newDate = newDate + \" - \" + place[i,0]\n", " places.append(newDate)\n", " return places\n", "place = convert_location_names(place) # Attention à ne pas réexécuter plusieurs fois cette cellule" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i,p in enumerate(place) :\n", " plt.plot(dates, cases[i,:], label=p)\n", "# On ne montre pas toutes les dates pour plus de lisibilité\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }