{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.dsi.universite-paris-saclay.fr%2Fbruno.denis%2Fintro_jupyter/HEAD?labpath=notebooks%2Fcovid_19.ipynb)\n", "[![NbViewer](https://badgen.net/static/render/NbViewer/orange)](https://nbviewer.org/urls/gitlab.dsi.universite-paris-saclay.fr/bruno.denis/intro_jupyter/-/raw/main/notebooks/covid_19.ipynb)\n", "\n", "# Analyse des cas de COVID-19\n", "\n", "Ce carnet Jupyter, analyse de données ouvertes disponibles en ligne mises à jour quotidiennement. Il identifie les 10 pays ayant le plus grand nombre total de cas de COVID-19 déclarés depuis 2020.\n", "\n", "- Les données sont lues sur un site de partage de données ouvertes (mise à jour quotidienne).\n", "- Les données relatives à des emplacements qui ne sont pas des pays sont supprimées.\n", "- Les données restantes sont analysées, elles sont regroupées par emplacement (`location`), sommées et triées par ordre décroissant de leur somme. \n", "\n", "Ensuite les 10 premiers pays en nombre total de cas sont affichés sous la forme d'une table, pour sous la forme d'un histogramme." ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Les fonctionnalités majeures de ce carnet sont :\n", "\n", "- **Reproductivité** par utilisation de données en ligne au format CSV avec le module `panda`\n", "- **Affichage tabulaire et graphique** par utilisation du module `pandas`" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "outputs": [], "source": [ "import pandas\n", "import datetime" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Lecture des données depuis le site \"*Our World in Data*\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "# Load the dataset from open data source\n", "data_set_url = \"https://covid.ourworldindata.org/data/owid-covid-data.csv\"\n", "covid_dataset = pandas.read_csv(data_set_url)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Suppression des données non liées à un pays" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "# Name of location column that is not a country\n", "not_country_location = [\n", " \"World\",\n", " \"Asia\", \n", " \"Europe\",\n", " \"North America\",\n", " \"South America\",\n", " \"European Union\",\n", " \"Africa\",\n", " \"Oceania\",\n", " \"Upper middle income\",\n", " \"High income\",\n", " \"Lower middle income\",\n", "]\n", "# Drop rows with location not a country\n", "covid_dataset = covid_dataset[\n", " ~covid_dataset['location'].isin(not_country_location)\n", "]\n", "# set location column as index\n", "covid_dataset = covid_dataset.set_index('location')" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Analyse des données" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "world_covid_cases = covid_dataset.filter(\n", " [\"total_cases\"]\n", ").groupby(\"location\").max().sort_values(\"total_cases\", ascending=False)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Affichage tabulaire du résultat de l'analyse" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Analyse du 2024-05-31\n" ] }, { "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", "
total_cases
location
United States103436829.0
China99356481.0
India45038518.0
France38997490.0
Germany38437756.0
Brazil37519960.0
South Korea34571873.0
Japan33803572.0
Italy26722507.0
United Kingdom24927820.0
\n", "
" ], "text/plain": [ " total_cases\n", "location \n", "United States 103436829.0\n", "China 99356481.0\n", "India 45038518.0\n", "France 38997490.0\n", "Germany 38437756.0\n", "Brazil 37519960.0\n", "South Korea 34571873.0\n", "Japan 33803572.0\n", "Italy 26722507.0\n", "United Kingdom 24927820.0" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(\"Analyse du {}\".format(datetime.datetime.today().strftime('%Y-%m-%d')))\n", "world_covid_cases.head(10)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Affichage graphique du résultat de l'analyse" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Analyse du 2024-05-31\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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+jKZTFq1apXt89WrV9WtWzf5+flp3759ebINAAAAo4rNU9idO3fW1atX9dFHH6lixYr6888/tWHDBp05c6agS7srFy9eVOfOnXXw4EH9+OOPqlSpkuE+rFarsrKy5ORUbH7tAAAgHxSLEcizZ8/qxx9/1MyZM9W8eXNVqFBBDRo00Pjx49Wu3f+98iM1NVUdOnSQu7u7PD091aVLF/3555+25ZGRkerYsWO2vkeMGKHw8HDb8i1btmjOnDkymUwymUxKSUmxtd21a5dCQ0Pl5uamRo0a6ddff73r+h9//HH98ccf2cJjZmamhg0bprJly6pEiRJ67LHHFB8fb1vvxqXzmJgYhYaGymw2KzY2VlarVbNmzVLFihXl6uqqOnXq6Msvv7Stl5WVpb59+yooKEiurq6qWrWq5syZc7eHGwAAFHHFIkC6u7vL3d1dq1atUmZm5i3bWK1WdezYUWfOnNGWLVu0fv16JScnq2vXrne9nTlz5igsLEz9+/fXiRMndOLECQUEBNiWT5gwQbNnz1ZCQoKcnJzUp0+fO/Z58uRJNWvWTBaLRVu2bJGfn59t2dixY/XVV1/po48+0u7duxUcHKyIiIibRlXHjh2r6dOnKykpSbVr19bEiRO1ZMkSzZ8/Xz///LNGjhyp559/Xlu2bJEkWSwW+fv7Kzo6WgcOHNArr7yil19+WdHR0TnWmZmZqYyMjGwTAAAomorFtUwnJydFRUWpf//+WrBggerXr69mzZqpW7duql27tiTp+++/1759+3T06FFb6Fu2bJlq1Kih+Ph4PfLII3fcjpeXl1xcXOTm5iZfX9+blr/xxhtq1qyZJOmll15Su3btdPnyZZUoUSLHPocPH66KFStq+/btcnP7vxdyX7hwQfPnz1dUVJSeeOIJSdLChQu1fv16LVq0SGPGjLG1fe2119S6dWvbem+//bY2btyosLAwSVLFihX1448/6sMPP1SzZs3k7OysKVOm2NYPCgrStm3bFB0drS5dutyyzunTp2dbBwAAFF3FYgRSun4P5PHjx/X1118rIiJCmzdvVv369RUVFSVJSkpKUkBAQLYRw5CQEHl7eyspKSlPargRViXZRhLT0tJuu0779u118OBBffjhh9nmJycn6+rVq2rcuLFtnrOzsxo0aHBTvaGhobafDxw4oMuXL6t169a2kVl3d3ctXbpU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t2rVKplMJkN9rVixQq+//rrt8/0MfRcuXNC4ceNUsWJFlShRQmXKlFF4eLhWr159z/XkZzAGAADFD6/x+ZtSpUoV2LYHDhyonTt3at68eQoJCdHp06e1bds2nT59usBqAgAAuBW7H4G8W5MnT1bdunW1bNkyBQYGysvLS926ddO5c+dsbf4+UhceHq7ffvtNI0eOlMlkyjaauW3bNjVt2lSurq4KCAjQsGHDdOHCBdvytLQ0tW/fXq6urgoKCtLy5cvvWN8333yjl19+WW3btlVgYKAefvhhDR06VL17975tPadPn1b37t3l7+8vNzc31apVS59++qmt38jISG3ZskVz5syxrZeSkiJJOnDggNq2bSt3d3eVK1dOPXv21KlTp2zrfvnll6pVq5ZcXV3l4+OjVq1aZdtPAABQPBWbAClJycnJWrVqlVavXq3Vq1dry5YtmjFjxi3brlixQv7+/nrttdd04sQJnThxQpK0f/9+RUREqFOnTtq3b58+//xz/fjjjxoyZIht3cjISKWkpGjjxo368ssv9cEHHygtLe22tfn6+mrNmjXZAu3d1HP58mU9/PDDWr16tX766ScNGDBAPXv2VFxcnCRpzpw5CgsLU//+/W3rBQQE6MSJE2rWrJnq1q2rhIQErV27Vn/++ae6dOkiSTpx4oS6d++uPn36KCkpSZs3b1anTp1ktVpvWV9mZqYyMjKyTQAAoGgqVpewLRaLoqKi5OHhIUnq2bOnNmzYoDfeeOOmtqVKlZKjo6M8PDzk6+trm//mm2/queees41UVq5cWXPnzlWzZs00f/58paam6rvvvtOOHTvUsGFDSdKiRYtUvXr129b2n//8Rz169JCPj4/q1Kmjxx57TM8884waN25823oefPBBjR492vZ56NChWrt2rb744gs1bNhQXl5ecnFxkZubW7b15s+fr/r162vatGm2eYsXL1ZAQIAOHjyo8+fP69q1a+rUqZMqVKggSapVq1aO9U+fPl1Tpky57T4CAICioViNQAYGBtrCoyT5+fndcWTwn3bt2qWoqCi5u7vbpoiICFksFh09elRJSUlycnJSaGiobZ1q1arJ29v7tv02bdpUR44c0YYNG9S5c2f9/PPPatKkSbaHem4lKytLb7zxhmrXri0fHx+5u7tr3bp1Sk1NveN+bNq0Kdt+VKtWTdL1kdo6deqo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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"Analyse du {}\".format(datetime.datetime.today().strftime('%Y-%m-%d')))\n", "world_covid_cases.head(10).plot.barh()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.9" } }, "nbformat": 4, "nbformat_minor": 4 }