Replace analyse-syndrome-grippal.org

parent 1870b298
...@@ -27,6 +27,12 @@ if sys.version_info.major < 3 or sys.version_info.minor < 6: ...@@ -27,6 +27,12 @@ if sys.version_info.major < 3 or sys.version_info.minor < 6:
print("Veuillez utiliser Python 3.6 (ou plus) !") print("Veuillez utiliser Python 3.6 (ou plus) !")
#+END_SRC #+END_SRC
#+RESULTS:
: Python 3.6.10 (default, Dec 19 2019, 23:04:32)
: [GCC 5.4.0 20160609] on linux
: Type "help", "copyright", "credits" or "license" for more information.
: >>> python.el: native completion setup loaded
#+BEGIN_SRC emacs-lisp :results output #+BEGIN_SRC emacs-lisp :results output
(unless (featurep 'ob-python) (unless (featurep 'ob-python)
(print "Veuillez activer python dans org-babel (org-babel-do-languages) !")) (print "Veuillez activer python dans org-babel (org-babel-do-languages) !"))
...@@ -40,9 +46,16 @@ Nous n'utilisons que des fonctionnalités de base du langage R, une version ant ...@@ -40,9 +46,16 @@ Nous n'utilisons que des fonctionnalités de base du langage R, une version ant
(print "Veuillez activer R dans org-babel (org-babel-do-languages) !")) (print "Veuillez activer R dans org-babel (org-babel-do-languages) !"))
#+END_SRC #+END_SRC
#+RESULTS:
* Préparation des données * Préparation des données
Les données de l'incidence du syndrome grippal sont disponibles du site Web du [[http://www.sentiweb.fr/][Réseau Sentinelles]]. Nous les récupérons sous forme d'un fichier en format CSV dont chaque ligne correspond à une semaine de la période d'observation. Nous téléchargeons toujours le jeu de données complet (rien d'autre n'est proposé), qui commence en 1984 et se termine avec une semaine récente. L'URL est: Les données de l'incidence du syndrome grippal sont disponibles du site Web du [[http://www.sentiweb.fr/][Réseau
Sentinelles]]. Nous les récupérons sous forme d'un fichier en format CSV dont chaque ligne correspond
à une semaine de la période d'observation. Nous téléchargeons toujours le jeu de données complet
(rien d'autre n'est proposé), qui commence en 1984 et se termine avec une semaine récente. L'URL
est:
#+NAME: data-url #+NAME: data-url
http://www.sentiweb.fr/datasets/incidence-PAY-3.csv http://www.sentiweb.fr/datasets/incidence-PAY-3.csv
...@@ -61,9 +74,28 @@ Voici l'explication des colonnes donnée sur [[https://ns.sentiweb.fr/incidence/ ...@@ -61,9 +74,28 @@ Voici l'explication des colonnes donnée sur [[https://ns.sentiweb.fr/incidence/
| ~geo_insee~ | Code de la zone géographique concernée (Code INSEE) http://www.insee.fr/fr/methodes/nomenclatures/cog/ | | ~geo_insee~ | Code de la zone géographique concernée (Code INSEE) http://www.insee.fr/fr/methodes/nomenclatures/cog/ |
| ~geo_name~ | Libellé de la zone géographique (ce libellé peut être modifié sans préavis) | | ~geo_name~ | Libellé de la zone géographique (ce libellé peut être modifié sans préavis) |
L'indication d'une semaine calendaire en format [[https://en.wikipedia.org/wiki/ISO_8601][ISO-8601]] est populaire en Europe, mais peu utilisée aux Etats-Unis. Ceci explique peut-être que peu de logiciels savent gérer ce format. Le langage Python le fait depuis la version 3.6. Nous utilisons donc ce langage pour la préparation de nos données, ce qui a l'avantage de ne nécessiter aucune bibliothèque supplémentaire. (Note: nous expliquerons dans le module 4 pourquoi il est avantageux pour la réproductibilité de se limiter à un minimum de bibliothèques.) L'indication d'une semaine calendaire en format [[https://en.wikipedia.org/wiki/ISO_8601][ISO-8601]] est populaire en Europe, mais peu utilisée
aux Etats-Unis. Ceci explique peut-être que peu de logiciels savent gérer ce format. Le langage
Python le fait depuis la version 3.6. Nous utilisons donc ce langage pour la préparation de nos
données, ce qui a l'avantage de ne nécessiter aucune bibliothèque supplémentaire. (Note: nous
expliquerons dans le module 4 pourquoi il est avantageux pour la réproductibilité de se limiter à un
minimum de bibliothèques.)
** Téléchargement ** Téléchargement
Pour nous protéger contre une éventuelle disparition ou modification du serveur du Réseau Sentinelles, nous faisons une copie locale de ce jeu de données que nous préservons avec notre analyse. Il est inutile, et même risqué, de télécharger les données à chaque exécution car, dans le cas d'une panne, nous pourrions remplacer nos données par un fichier défectueux. Pour cette raison, nous téléchargeons les données seulement si la copie locale n'existe pas.
#+begin_src python :results output :var data_url=data-url
data_file = "incidence_grippe.csv"
import os
import urllib.request
if not os.path.exists(data_file):
urllib.request.urlretrieve(data_url, data_file)
#+end_src
#+RESULTS:
Après avoir téléchargé les données, nous commençons par l'extraction des données qui nous intéressent. D'abord nous découpons le contenu du fichier en lignes, dont nous jetons la première qui ne contient qu'un commentaire. Les autres lignes sont découpées en colonnes. Après avoir téléchargé les données, nous commençons par l'extraction des données qui nous intéressent. D'abord nous découpons le contenu du fichier en lignes, dont nous jetons la première qui ne contient qu'un commentaire. Les autres lignes sont découpées en colonnes.
#+BEGIN_SRC python :results silent :var data_url=data-url #+BEGIN_SRC python :results silent :var data_url=data-url
...@@ -80,6 +112,13 @@ Regardons ce que nous avons obtenu: ...@@ -80,6 +112,13 @@ Regardons ce que nous avons obtenu:
table[:5] table[:5]
#+END_SRC #+END_SRC
#+RESULTS:
| week | indicator | inc | inc_low | inc_up | inc100 | inc100_low | inc100_up | geo_insee | geo_name |
| 202011 | 3 | 101704 | 93652 | 109756 | 154 | 142 | 166 | FR | France |
| 202010 | 3 | 104977 | 96650 | 113304 | 159 | 146 | 172 | FR | France |
| 202009 | 3 | 110696 | 102066 | 119326 | 168 | 155 | 181 | FR | France |
| 202008 | 3 | 143753 | 133984 | 153522 | 218 | 203 | 233 | FR | France |
** Recherche de données manquantes ** Recherche de données manquantes
Il y a malheureusement beaucoup de façon d'indiquer l'absence d'un point de données. Nous testons ici seulement pour la présence de champs vides. Il faudrait aussi rechercher des valeurs non-numériques dans les colonnes à priori numériques. Nous ne le faisons pas ici, mais une vérification ultérieure capterait des telles anomalies. Il y a malheureusement beaucoup de façon d'indiquer l'absence d'un point de données. Nous testons ici seulement pour la présence de champs vides. Il faudrait aussi rechercher des valeurs non-numériques dans les colonnes à priori numériques. Nous ne le faisons pas ici, mais une vérification ultérieure capterait des telles anomalies.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment