logo Prof-TC.png
Des cours, des TP, des exercices corrigés pour les élèves du lycée
Recherche
SECONDE - PC
PREMIERE PC
SCIENCES PREMIERE
SCIENCES TERMINALE
ANCIENNES TS
CONCOURS

Différents types de données structurées

On trouve énormément de données sur internet. Une partie de ces données sont publiques, par exemple le site data.gouv.fr récence un grand nombre de données publiques.
Ces données sont librement réutilisables.

À faire vous-même 1

Afin de découvrir ce qu’est « l’open data », allez sur le site data.gouv.fr.
En haut de la page d’accueil, cliquez sur « Documentation ».
Résumez en quelques lignes ce que vous aurez appris en lisant cette page et en particulier la rubrique Découvrir l’open data.


À faire vous-même 2

Explorez pendant quelques minutes le site data.gouv.fr. Recherchez les données « Opérations coordonnées par les CROSS »
(Centres Régionaux Opérationnels de Surveillance et de Sauvetage) à l’aide du moteur de recherche proposé par le site

Vous pouvez constater que ces données sont au format csv.


Le format csv est très courant sur internet, nous allons l’étudier en premier.

Voici ce que nous dit Wikipédia sur le format CSV :

Comma-separated values, connu sous le sigle CSV, est un format informatique ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules.

Un fichier CSV est un fichier texte, par opposition aux formats dits « binaires ».
Chaque ligne du texte correspond à une ligne du tableau et les virgules correspondent aux séparations entre les colonnes.
Les portions de texte séparées par une virgule correspondent ainsi aux contenus des cellules du tableau.

Voici un exemple du contenu d’un fichier CSV :

nom,prenom,date_naissance
Durand,Jean-Pierre,23/05/1985
Dupont,Christophe,15/12/1967
Terta,Henry,12/06/1978 

Je pense qu’il est évident pour vous que nous avons ici 3 personnes :

  • Jean-Pierre Durand qui est né le 23/05/1985
  • Christophe Dupont qui est né le 15/12/1967
  • Henry Terta qui est né le 12/06/1978

« nom », « prenom » et « date_naissance » sont appelés des descripteurs.
On les appelle aussi les champs des données.
Sous Excel cela correspond dans la pratique aux en-tête des colonnes d’un fichier.
D’autre part, « Durand », « Dupont » et « Terta » sont les valeurs du descripteur « nom ».
On va les retrouver dans Excel sous l’en-tête de la colonne.

À faire vous-même 3

Donnez les différentes valeurs du descripteur « date_naissance »

ATTENTION :

La virgule est un standard pour les données anglo-saxonnes, mais pas pour les données aux normes françaises.
En effet, en français, la virgule est le séparateur des chiffres décimaux.
Il serait impossible de différencier les virgules des décimaux et les virgules de séparation des informations.
C’est pourquoi on utilise un autre séparateur : le point-virgule (;).
Dans certains cas cela peut engendrer quelques problèmes, vous devrez donc rester vigilants sur le type de séparateur utilisé.

Les tableurs, tels que « Calc » (Libre Office), sont normalement capables de lire les fichiers au format CSV.
J’ai précisé « normalement » car certains tableurs gèrent mal le séparateur CSV « point-virgule » et le séparateur des chiffres décimaux « virgule ».

À faire vous-même 4

Après avoir téléchargé le fichier ident_pointVirgule.csv, ouvrez ce dernier à l’aide d’un tableur.

Si par hasard votre tableur ne gère pas correctement le fichier avec le séparateur « point-virgule », voici une version « séparateur virgule » du fichier : ident_virgule.csv

Dans la suite, gardez toujours cet éventuel problème à l’esprit (surtout avec des données « made in France »)


Vous devriez obtenir ceci :

Vous pouvez constater que les données sont bien « rangées » dans un tableau avec des lignes et des colonnes (voilà pourquoi on parle de données tabulaires).

Il est possible de trouver sur le web des données beaucoup plus intéressantes à traiter que celles contenues dans le fichier « ident_pointVirgule.csv » (ou « ident_virgule.csv »). 
Par exemple, le site sql.sh, propose un fichier csv contenant des informations sur l’ensemble des communes françaises.

À faire vous-même 5

Ouvrez le fichier ville_point_virgule.csv à l’aide d’un tableur (c’est une version légèrement modifiée de celle disponible sur le site sql.sh, j’y ai notamment ajouté des entêtes).
En cas de problème avec votre tableur, voici une version « séparateur virgule » : ville_virgule.csv (attention le séparateur « décimal » est ici le point)


Comme vous pouvez le constater, nous avons 12 colonnes (et 36700 lignes si on ne compte pas l’entête !), voici la signification de ces colonnes :

  • dep : numéro de département
  • nom : nom de la commune
  • cp : code postal
  • nb_hab_2010 : nombre d’habitants en 2010
  • nb_hab_1999 : nombre d’habitants en 1999
  • nb_hab_2012 : nombre d’habitants en 2012 (approximatif)
  • dens : densité de la population (habitants par kilomètre carré)
  • surf : superficie de la commune en kilomètre carré
  • long : longitude
  • lat : latitude
  • alt_min : altitude minimale de la commune (il manque des données pour certains territoires d’outre-mer)
  • alt_max : altitude maximale de la commune (il manque des données pour certains territoires d’outre-mer)

À faire vous-même 6

En vous aidant du fichier ouvert dans le « À faire vous-même 4 », déterminez l’altitude maximale et l’altitude minimale de votre commune.

Autre format de données très courant sur le « web », le JSON (JavaScript Object Notation).
Le JSON fonctionne avec un système de paire clé/valeur.

Un « objet » est encadré par des accolades :

{cle_1 : val_1, cle_2 : val_2, cle_3 : val_3}

souvent, pour une question de lisibilité, on écrira :

{
cle_1 : val_1,
cle_2 : val_2,
cle_3 : val_3
}

Un fichier au format JSON peut regrouper un grand nombre d’objets :

[{
"nom" : "Durand",
"prenom" : "Jean-Pierre",
"date_naissance" : "23/05/1985"
},
{
"nom" : "Dupont",
"prenom" : "Christophe",
"date_naissance" : "15/12/1967"
},
{
"nom" : "Terta",
"prenom" : "Henry",
"date_naissance" : "12/06/1978"
}] 

Ci-dessus, nous avons une liste (délimité par [ ]) contenant des objets.

La « valeur » d’une paire « clé/valeur » peut être une liste :

{
"nom" : "Durand",
"prenom" : "Jean-Pierre",
"date_naissance" : "23/05/1985"
"sport" : ["tennis", "football", "pétanque"]

ou même un autre objet :

{
"nom" : "Durand",
"prenom" : "Jean-Pierre",
"date_naissance" : "23/05/1985"
"adresse" : {"num":6, "rue":"impasse du rossignol", "ville":"Nogent-le-Rotrou", "cp":"28400"}
}  

Comme vous pouvez le constater, il est possible d’obtenir des structures de données très complexes avec le format JSON.

À faire vous-même 7

Téléchargez le fichier ident.json et ouvrez-le à l’aide d’un éditeur de texte.


De nombreux sites web proposent des services basés sur des API (Application Programming Interface).
Ces sites sont capables de fournir des données aux formats JSON sur « simple demande ».
Souvent, ces « demandes » sont effectuées par l’intermédiaire d’une url (si vous avez besoin de vous rafraichir la mémoire à propos de la notion d’url, n’hésitez pas à reconsulter ce document).

Nous allons illustrer ce propos en utilisant l’API d’un site qui fournit des informations météo au format JSON. Vous trouverez ce site à l’adresse suivante : openweathermap.org/api

Pour profiter de ce service, il est nécessaire d’obtenir une clé (API key). Cette clé vous sera fournie par votre enseignant.

À faire vous-même 8

Ouvrez votre navigateur préféré et copiez-collez l’url suivante dans la barre d’adresse du navigateur :

http://api.openweathermap.org/data/2.5/weather?q=bonneville,fr&lang=fr&units=metric&APPID=XXXXXXXXXXXXX 

ATTENTION : il faut remplacer les « X » par la clé (API key) qui vous aura été fournie


Au lieu d’obtenir, comme d’habitude, une page web, vous devriez obtenir uniquement quelque chose qui ressemblera à ceci :

{"coord":{"lon":6.41,"lat":46.08},"weather":[{"id":800,"main":"Clear","description":"ciel dégagé","icon":"01d"}],
"base":"stations","main":{"temp":12.31,"pressure":1026,"humidity":58,"temp_min":11,"temp_max":14},
"visibility":10000,"wind":{"speed":2.6,"deg":200},"clouds":{"all":0},"dt":1540373400,"sys":{"type":1,"id":5570,
"message":0.0046,"country":"FR","sunrise":1540361039,"sunset":1540398737},"id":3031679,"name":"Bonneville",
"cod":200} 

Comme les données sont réactualisées relativement souvent, vous n’obtiendrez pas la même chose que moi !

Avec une simple url, le site open weather renvoie des informations météo sous forme de données JSON.

Détaillons l’url :

http://api.openweathermap.org/data/2.5/weather

Cette partie de l’url ne changera pas (sauf si vous désirez autre chose que les conditions météo actuelles, à ce moment-là, il faudra remplacer « weather » par autre chose
consulter le site open weather pour plus d’informations)).

?q=bonneville,fr&lang=fr&units=metric&APPID=XXXXXXXXXXXXX	

À partir du point d’interrogation, vous devez renseigner les différents paramètres qui permettront à open weather de vous renvoyer les bonnes informations.
Ces paramètres sont séparés par le caractère « & ».

  • « q=bonneville,fr » le paramètre « q » correspond au nom de la ville suivi du pays (fr dans notre cas)
  • « lang=fr » la langue utilisée sera le français
  • « units=metric » on désire avoir les longueurs en mètres (et les vitesses en mètre par seconde).
  • « APPID » correspond à l’API key

Il est possible de construire des requêtes beaucoup plus complexes, encore une fois, veuillez consulter le site open weather pour plus d’informations.

Intéressons-nous maintenant aux données JSON renvoyées (nous n’allons pas tout détailler) :

  • « coord »:{« lon »:6.41, »lat »:46.08} latitude et longitude du lieu
  • « weather »:[{« id »:800, »main »: »Clear », »description »: »ensoleillé », »icon »: »01d »}] « weather » correspond à un tableau qui contient un seul objet.
  • « main »:{« temp »:17.35, »pressure »:1016, »humidity »:59, »temp_min »:16, »temp_max »:19} « main » correspond à un objet qui contient différents types d’informations
  • « dt »:1443975257 « dt » nous donne l’heure et la date de diffusion du bulletin au format « timestamp » (voir en bas de cette page pour plus d’informations sur le format « timestamp »)
  • « sunrise »:1443937018, »sunset »:144397849 : respectivement heure de lever et de coucher du soleil au format timestamp

Dernier format de données que nous verrons aujourd’hui le geoJSON.
Le geoJSON est un format (http://geojson.org/) qui permet d’encoder des données à « caractère géographique ».
Voici ce que dit Wikipédia à propos de ce format :

GeoJSON (de l’anglais Geographic JSON, signifiant littéralement JSON géographique) est un format ouvert d’encodage d’ensemble de données géospatiales simples utilisant la norme JSON (JavaScript Object Notation).
Il permet de décrire des données de type point, ligne, chaîne de caractères, polygone, ainsi que des ensembles et sous-ensembles de ces types de données et d’y ajouter des attributs d’information qui ne sont pas spatiale.
Le format GeoJSON, contrairement à la majorité des standards de systèmes d’informations géographiques, n’est pas écrit par l’Open Geospatial Consortium, mais par un groupe de travail de développeurs au travers d’internet.

Comme indiqué dans Wikipédia, le geoJSON est avant tout du JSON, nous retrouverons donc les mêmes caractéristiques que le JSON (système de clé/valeur).

À faire vous-même 9

Dans la barre d’adresse de votre navigateur, tapez l’adresse suivante :

https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2019-07-31&endtime=2019-08-01 


Vous avez obtenu des informations au format geoJSON, sur les tremblements de Terre ayant eu lieu entre le 31 juillet 2019 et le 01 août 2019, partout dans le monde.

Le site « earthquake.usgs.gov », comme le site « http://openweathermap.org/ », propose une API qui renvoie des données à partir d’une simple url. Le site vous propose différentes options pour la requête, vous trouverez une description complète de ces options ici

Attention, vous aurez un message d’erreur si votre requête renvoie plus de 20000 événements

À faire vous-même 10

En vous aidant de la documentation présente sur le site http://earthquake.usgs.gov, écrivez une requête sous forme d’url qui permettra d’obtenir des données (au format geoJSON) sur les tremblements de terre, d’une magnitude supérieure à 5, ayant eu lieu ces 30 derniers jours partout dans le monde.

Testez votre requête en la copiant dans la barre d’adresse de votre navigateur. Une fois les données obtenues, étudiez-les afin de comprendre la structure de ces données.

ATTENTION : les dates et les heures sont fournies au format « timestamp ». Le « timestamp » désigne le nombre de secondes écoulé depuis le 1er janvier 1970 à minuit UTC précise. Au lieu de donner une date et une heure pour un événement donné, il est possible de donner son « timestamp ». Par exemple, au lieu de dire l’événement A à eu lieu le 24 octobre 2018 à 13h 11 minutes et 10 secondes, on pourra dire que l’événement A à pour « timestamp » 1540379470 (durée qui s’est écoulé en seconde entre le 1er janvier 1970 à minuit UTC et le 24 octobre 2018 à 13h 11 minutes et 10 secondes). Vous trouverez un convertisseur de timestamp sur ce site. Attention, dans le JSON renvoyé par le site « earthquake.usgs.gov » le timestamp est donné en milliseconde, il est donc nécessaire de diviser par 1000 la valeur que vous allez trouver dans le JSON (et garder uniquement la partie entière du résultat de votre division).   


Date de création : 10/01/2021 14:37
Dernière modification : 10/01/2021 14:37
Catégorie : - Les données
Page lue 2918 fois

SECONDE - SNT
PYTHON - ARDUINO
SCIENCES & LABO
COURS DU SUPERIEUR
KHOLLES MPSI