Les données météo

Contexte

Les données stockées dans un fichier texte sont généralement structurées et peuvent être lues et encapsulées dans une liste en utilisant le module csv comme on l’a vu avec l’exercice Lecture d’un fichier texte structuré.

Cette façon de faire est plus intéressante qu’une méthode naïve car elle évite une étape de traitement. Elle présente cependant l’inconvénient de dissocier la nature des données (stockée généralement dans la première ligne du fichier) et les données elles mêmes.

On va chercher ici à structurer les données dans des dictionnaires.

Environnement de travail

Pour cet exercice, vous devez utiliser en priorité le fichier squelette ex10-meteo.py. IMPORTANT : Enregistrez le avec Right Click + Save Link As... pour conserver l’encodage.

Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :

  1. Imports et définition des variables globales ;
  2. Définition des fonctions secondaires ;
  3. Définition de la fonction principale ;
  4. Appel protégé de la fonction principale.

Les données sont stockées dans le fichier ex08-zip-data-meteo-france-synop.2015110112.csv

Objectifs

Lecture exhaustive

L’objectif est d’écrire une fonction read_data_to_dicts() :

- qui prend en argument un fichier ``csv`` de données météo structurées ;
- et retourne une liste de dictionnaires (un par ligne de données):
    - dont les clés sont les champs de la première ligne du fichier ;
    - et les valeurs les données correspondantes.

Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main() et en affichant la valeur de retour (les doctests de la fonction donnent des exemples d’appel et les valeurs de retour correspondantes).

Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal.

Filtrage des données

Le plus souvent seule une partie des données est utilisée pour l’analyse. La fonction read_data_to_dicts() retourne une liste de dictionnaires comprenant l’ensemble des données.

Ecrire une fonction filter_data() :

- qui prend en argument un dictionnaire de données météo du type de ceux retournés par ``read_data_to_dicts()`` ;
- et retourne un dictionnaire simplifié avec uniquement les champs suivants :
    - ``numer_sta`` ;
    - ``date`` ;
    - ``t``.

Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main() et en affichant la valeur de retour (les doctests de la fonction donnent des exemples d’appel et les valeurs de retour correspondantes).

Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal.

Informations complémentaires

Le DictReader est une classe adaptée pour stocker les données dans des dictionnaires :

Ainsi un fichier comportant :

produira une séquence de n-1 dictionnaires comportant chacun m paires clé-valeur.