analyse-syndrome-grippal.org: Updated to use a local file and only download if needed

parent 0ba52827
...@@ -46,6 +46,10 @@ Les données de l'incidence du syndrome grippal sont disponibles du site Web du ...@@ -46,6 +46,10 @@ Les données de l'incidence du syndrome grippal sont disponibles du site Web du
#+NAME: data-url #+NAME: data-url
http://www.sentiweb.fr/datasets/incidence-PAY-3.csv http://www.sentiweb.fr/datasets/incidence-PAY-3.csv
Le jeu de données devrait déjà être dans un fichier local :
#+NAME: data-file
data.csv
Voici l'explication des colonnes donnée sur [[https://ns.sentiweb.fr/incidence/csv-schema-v1.json][le site d'origine:]] Voici l'explication des colonnes donnée sur [[https://ns.sentiweb.fr/incidence/csv-schema-v1.json][le site d'origine:]]
| Nom de colonne | Libellé de colonne | | Nom de colonne | Libellé de colonne |
...@@ -64,13 +68,22 @@ Voici l'explication des colonnes donnée sur [[https://ns.sentiweb.fr/incidence/ ...@@ -64,13 +68,22 @@ 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.) 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
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. Si le fichier de données local existe, on en extrait les données, sinon, on le créé à partir des données téléchargées depuis l'URL.
Après avoir récupéré 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 data_file=data-file
import os
from urllib.request import urlopen from urllib.request import urlopen
data = urlopen(data_url).read() data_file = data_file.strip() # We strip because emacs insert a '\n' in data-file
lines = data.decode('latin-1').strip().split('\n') if (os.path.isfile(data_file)) :
data = open(data_file, 'r').read()
else :
data = urlopen(data_url).read().decode('latin-1')
backup_data = open(data_file, 'w')
backup_data.write(str(data))
backup_data.close()
lines = data.strip().split('\n')
data_lines = lines[1:] data_lines = lines[1:]
table = [line.split(',') for line in data_lines] table = [line.split(',') for line in data_lines]
#+END_SRC #+END_SRC
......
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