Commit ed0f1230 authored by Laurent Siksous's avatar Laurent Siksous

Stockage de la source des données

parent 7e4da5df
......@@ -10,7 +10,7 @@
#+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script>
#+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script>
#+PROPERTY: header-args :session :exports both
#+PROPERTY: header-args :session :exports both :file dummy
* Préface
......@@ -27,11 +27,14 @@ if sys.version_info.major < 3 or sys.version_info.minor < 6:
print("Veuillez utiliser Python 3.6 (ou plus) !")
#+END_SRC
#+RESULTS:
#+BEGIN_SRC emacs-lisp :results output
(unless (featurep 'ob-python)
(print "Veuillez activer python dans org-babel (org-babel-do-languages) !"))
#+END_SRC
#+RESULTS:
** R 3.4
Nous n'utilisons que des fonctionnalités de base du langage R, une version antérieure devrait suffire.
......@@ -40,9 +43,13 @@ 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) !"))
#+END_SRC
#+RESULTS:
:
: "Veuillez activer R dans org-babel (org-babel-do-languages) !"
* 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:
#+NAME: data-url
http://www.sentiweb.fr/datasets/incidence-PAY-3.csv
......@@ -64,22 +71,44 @@ Voici l'explication des colonnes donnée sur [[https://ns.sentiweb.fr/incidence/
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
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.
Nous commençons par l'extraction des données qui nous intéressent.
#+BEGIN_SRC python :results silent :var data_url=data-url
from urllib.request import urlopen
Celles ci sont téléchargées si elles ne le sont pas déjà.
data = urlopen(data_url).read()
lines = data.decode('latin-1').strip().split('\n')
data_lines = lines[1:]
table = [line.split(',') for line in data_lines]
#+END_SRC
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 output
import os.path
filename = "influenza.csv"
if os.path.isfile(filename):
f = open(filename, "r")
data = f.read()
else:
from urllib.request import urlopen
data = urlopen(data_url).read()
lines = data.decode("latin-1").strip().split("\n")
with open(filename, "w") as writer:
writer.writelines(lines)
data_lines = lines[1:]
table = [line.split(",") for line in data_lines]
#+end_src
Regardons ce que nous avons obtenu:
#+BEGIN_SRC python :results value
table[:5]
table[:5]
#+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
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.
......@@ -217,3 +246,8 @@ Enfin, un histogramme montre bien que les épidémies fortes, qui touchent envir
#+BEGIN_SRC R :results output graphics :file annual-inc-hist.png
hist(inc_annuelle$incidence, breaks=10, xlab="Incidence annuelle", ylab="Nb d'observations", main="")
#+END_SRC
* Local Variables
# Local Variables:
# indent-tabs-mode: nil
# org-src-preserve-indentation: nil
# End:
This diff is collapsed.
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