TP 4: Open Data

Open Data

Le Web est aussi une source importante de données numériques. Certaines personnes font une comparaison entre l'Open Data et la recherche du pétrole à la fin du XIX ième siècle et parle de l'Open Data comme l'or noir du XXI ième siècle

Peut on cependant utiliser les données "n'importe comment ?"

Pour permettre une meilleure utilisation des données un mouvement appelé "Open Data" a fait son apparition ces dernières années

Le terme "Open Data" fait référence à des données "numériques accessibles en ligne ". Il y a des lois qui encadrent l'utilisation de ces données. Elles ne doivent être ni personnelles, ni propriétaires et ni sensibles.

Aller voir les sites suivants , puis répondre aux questions de l'exercice 1

Exercice 1

  1. Aller sur le site de la ville de Paris , sous quelle type de licence puis je utiliser les données publiques fournies par la ville de Paris
  2. Puis je m'approprier ces données et les diffuser sur Internet ?
  3. Puis je vendre ces données ?

  4. Aller dans données et trouver l'arbre le plus vieux de Paris. Où se trouve -t-il et quel est son âge?Auriez vous pu répondre à cette question s'il y avait un grand nombre d'arbres ? Comment faire dans ce cas ?
  5. Différents usages sont possibles:
    • Simple utilisateur: je peux consulter le budget de ma commune, ou avoir accès aux bornes de recharge pour voiture électrique
    • Fournisseur de données: Quel genre de données pourrait on fournir ?
    • Créateur d'une application: créer une application qui traite des données "ouvertes":

      Voir ici un exemple de réutilisation des données. En zoomant chercher des réalisations dans la transition énergétique dans la région parisienne

      Voici un autre exemple d'application qui répertorie les lieux gratuits autour de soi (parkings par exemple)

      Réfléchir à une application que vous aimeriez créer.
  6. Que signifie API ? Voici un exemple d'utilisation par la caisse d'assurance maladie d'une API fournie par l'I.G.N (pour cartographier des données) (IGN = Institut national de l'information géographique)

Traitement d'un grand nombre de données (Observations en mer)

Nous allons nous intéresser aux données publiques fournies par Météo-France concernant les observations en mer faites par des balises Voir ici

Le but du T.P est d'exploiter un fichier .csv fourni par Météo-France, contenant un certain nombre de mesures en mer, Température, Pression, Hauteur de la Houle etc...

Ce traitement informatique se fera par un programme ...Python

Dans un premier temps nous allons faire connaissance avec le format de fichier .csv pour comma separated values.

Pour simplifier ce sont des données séparées par des séparateurs comme des point-virgules par exemple

Beaucoup d'administrations (par exemple celle du lycée) échangent leurs informations sous cette forme

Ouvrir le tableur Libre Office, et dans la cellule A1 entrer Noms, puis dans B1 entrer Prénoms, puis dans C1 entrer année de naissance

Puis compléter les champs ainsi crées par deux écrivains français: Hugo Victor né en 1802 et Camus Albert né en 1913

Enregistrer le fichier avec le nom ecrivains.ods puis faire enregistrer sous au format .csv

Ouvrir le fichier .csv avec un éditeur de texte comme NotePad++ qu'observez vous ?

Comparer les tailles en octets des fichiers. Qu'observez vous ?

Chaines de caractères

Le traitement informatique d'un fichier .csv est essentiellement le traitement d'un type de données appelée chaîne de caractères (string en anglais)

Nous allons découvrir dans le contexte ce type de données

Télécharger sur la page de Météo-France ci-dessus un fichier .csv contenant des mesures de température , de pression et autres caractéristiques en haute mer, pour le mois de décembre 2018

Pour voir ce qu'il contient l'ouvrir par exemple avec NotePad++

Cependant on aimerait traiter ces informations par exemple faire la moyenne des températures sur un mois ou prendre la plus grande hauteur de la houle sur le mois de décembre 2018, pour cela il faut un langage de programmation

Copier le code Python ci-dessous et l'enregistrer dans le fichier traiter_data.py

Placer le fichier .py et le fichier .csv au même endroit. Exécuter le fichier .py


import csv

with open("marine.201812.csv","r") as fichier: 
#Création du ''lecteur'' CSV.
    reader = csv.reader(fichier)

#On affiche les 100 premières lignes du fichier
    compteur = 0
    for ligne in reader:
        compteur = compteur + 1
        print(ligne)
        if compteur == 100:
            break

A l'exécution vous observez un défilement de lignes de la forme

['n°balise;date+heure;etc....'], chaque ligne est une liste Python concernant une balise particulière

entre crochet [] contenant un seul élément entre '' ,une chaîne de caractères.

Modifier print(ligne) par print(ligne[0]) puis exécuter.

ligne[0] est le seul élément de la liste ligne, et c'est une chaine de caractères. On observe alors des lignes du type n°balise;date+heure;etc..., c'est à dire des données séparées par des points virgules

Méthodes pour les chaînes de caractères

Python fournit des outils ou méthodes pour traiter les chaînes de caractères

Par exemple on veut extraire les données d'une ligne en enlevant les ;

Pour cela si on fait ligne[0].split(";") on "casse" la chaîne ligne[0] en une liste des données sans les ;

Maintenant nous allons uniquement nous intéresser à la bouée au large de la Bretagne appelée BRITTANY, c'est la quatrième bouée de la liste et son numéro d'identification est 62163

Il nous faut donc repérer les chaînes qui commencent par 62163. Or une chaîne est une liste de caractères ce qui signifie que chaque caractère de la liste est repéré par un numéro par exemple le caractère 6 par 0 c'est le premier caractère,puis le 2 est repéré par 1 etc...

On se rend compte qu' avoir un caractère en position 0 étant égal à 6 et un caractère en position 2 étant égal à 1 caractérise parfaitement cette bouée d'où le programme suivant qui donnent uniquement les données de la bouée BRITTANY

ligne[0] est le premier élément de la liste donc une chaîne de caractères qui identifie une bouée

ligne[0][0] est le premier caractère du premier élément de la liste


import csv

with open("marine.201812.csv","r") as fichier: 
#Création du ''lecteur'' CSV.
    reader = csv.reader(fichier)

#On affiche chaque ligne du fichier
    compteur = 0
    for ligne in reader:
 
        if ligne[0][0] == "6" and ligne[0][2] == "1":
            compteur = compteur + 1
            print(ligne[0].split(";"))
        if compteur == 100:
            break

Exercice 2

  1. Chaque ligne est maintenant une liste de données concernant la bouée 62163, que faut il faire pour avoir uniquement la température de la mer tmer?
  2. Quelle est l'unité utilisée ?
  3. Améliorer le programme pour calculer la température moyenne (attention à certaines heures la donnée peut être manquante (symbole mq)

Hauteur de vagues et tempêtes

Le programme suivant affiche pour le mois de Décembre 2018 , les hauteurs de vagues de la mer au vent ainsi que les périodes


import csv

with open("marine.201812.csv","r") as fichier: 
#Création du ''lecteur'' CSV.
    reader = csv.reader(fichier)

#On affiche chaque ligne du fichier
    
    for ligne in reader:
 
        if ligne[0][0] == "6" and ligne[0][2] == "1":
            listeBalise = ligne[0].split(";")
            print("Hauteur de vague = ",listeBalise[11])

Exercice 3

  1. Modifier le programme pour faire afficher la plus haute hauteur de vague mesurée sur le mois de Décembre 2018
  2. Modifier le programme pour qu'il affiche en plus le jour et l'heure où a été mesuré la vague la plus haute
  3. Au cours du mois de Février 2011 la tempête Quirin a engendré des vagues "record" voir ici Comparer avec le mois de décembre 2015
  4. Télécharger sur le site de la ville de Paris le fichier .csv des arbres remarquables et faire un programme Python permettant de trouver l'arbre le plus haut de Paris, l'arbre ayant la plus grande circonférence
  5. Comparer les tailles des fichiers .csv sur les arbres remarquables et sur les données de la balise