Activité 2 Données structurées et traitement / Formats

Les données structurées provenant, soit des métadonnées soit de bases de données, doivent pouvoir être échangées pour ensuite être traitées automatiquement.

Différents formats existent et nous allons découvrir les 3 plus répandus.

À faire vous-même 1 :

  • Utilisez un navigateur internet pour aller sur le site de l’INSEE puis recherchez les données concernant par exemple « l’indicateur conjoncturel de fécondité » par département (carte puis tableau chiffré)

  • Téléchargez les données structurées pour exploitation sous le tableur Excel (extension .xls)

  • Ouvrez le fichier avec un tableur puis dans la feuille « REG » pour région sélectionnez la collection constituée des données chiffrées et de leurs descripteurs :

  • Copiez puis collez le tout sur une nouvelle feuille de calcul puis complétez le descripteur manquant (remplissez la cellule première colonne première ligne par « Régions » en gras)

  • Activez le filtrage (menu « Données » / « Filtrer ») :

  • Triez semi-automatiquement de manière à classer les régions de plus fort taux de fécondité au plus faible taux… comment se situe la Guadeloupe ?

  • Enregistrez le fichier

  • Enregistrez le fichier sous le format CSV UTF-8 avec séparateur des points-virgules

  • Ouvrez ce fichier au format CSV avec le logiciel de texte « Bloc-notes » afin d’observer le résultat :

Le format CSV (pour Comma Separated Values) est un des formats les plus utilisés pour permettre des échanges de données structurées et leur traitement automatiquement.

Chaque ligne du fichier CSV correspond à une ligne du tableau et chaque valeur séparée par un point-virgule (ou simple virgule) correspond à une colonne du tableau.

 

Le second format étudié est l’eXtensible Markup Language (XML) ; il est un format basé sur l’utilisation de balises pour structurer les données. Les balises sont utilisées pour encadrer un contenu ; à chaque balise ouvrante correspond une balise fermante ; exemple à la balise ouvrante <row> pour indiquer une nouvelle ligne (rangée), sera associée la balise fermante </row>.

Ça ne vous rappelle rien ? Le thème « Web » et le langage de description « HTML » … non ?

À faire vous-même 2 :

  • Testez un service en ligne (sur navigateur) qui convertit le format CSV en XML en copiant tout le contenu du fichier CSV (Ctrl A puis Ctrl C) : http://www.convertcsv.com/csv-to-xml.htm

  • Observez en détail (notamment les balises ouvrantes et fermantes) le résultat qui devrait être le suivant :

<?xml version="1.0" encoding="UTF-8"?>

<root>

  <row>

    <Régions>Mayotte</Régions>

    <Ensemble>479</Ensemble>

    <_15 à 24 ans>151</_15 à 24 ans>

    <_25 à 34 ans>222</_25 à 34 ans>

    <_35 à 49 ans>106</_35 à 49 ans>

  </row>

  <row>

    <Régions>Guyane</Régions>

    <Ensemble>356</Ensemble>

    <_15 à 24 ans>110</_15 à 24 ans>

    <_25 à 34 ans>171</_25 à 34 ans>

    <_35 à 49 ans>74</_35 à 49 ans>

  </row>

  <row>

    <Régions>La Réunion</Régions>

    <Ensemble>248</Ensemble>

    <_15 à 24 ans>66</_15 à 24 ans>

    <_25 à 34 ans>133</_25 à 34 ans>

    <_35 à 49 ans>49</_35 à 49 ans>

  </row>

  <row>

    <Régions>Guadeloupe</Régions>

    <Ensemble>203</Ensemble>

    <_15 à 24 ans>45</_15 à 24 ans>

    <_25 à 34 ans>110</_25 à 34 ans>

    <_35 à 49 ans>48</_35 à 49 ans>

  </row> …

Le troisième et dernier format JavaScript Object Notation (JSON) est un format plus récent utilisé pour représenter des objets qui dérive de la notation des objets du langage JavaScript. Un document JSON est essentiellement un ensemble de paires constituées d'une étiquette et d'une valeur ou d'une liste de valeurs. Les paires sont placées entres accolades et séparées par des virgules. Les valeurs des listes sont placées entre crochets et séparées par des virgules :

{"nom1":valeur1,"nom2":valeur2}

À faire vous-même 3 :

  • Testez un service en ligne (sur navigateur) qui convertit le format CSV en JSON : http://www.convertcsv.com/csv-to-json.htm

  • Observez en détail (notamment les parenthèses) le résultat qui devrait être le suivant :

[

 {

   "Régions": "Mayotte",

   "Ensemble": 479,

   "15 à 24 ans": 151,

   "25 à 34 ans": 222,

   "35 à 49 ans": 106

 },

 {

   "Régions": "Guyane",

   "Ensemble": 356,

   "15 à 24 ans": 110,

   "25 à 34 ans": 171,

   "35 à 49 ans": 74

 },

{

   "Régions": "Corse",

   "Ensemble": 137,

   "15 à 24 ans": 17,

   "25 à 34 ans": 87,

   "35 à 49 ans": 33

 }

]

Il existe bien d’autres formats mais les plus fréquents sont les trois cités précédemment.

Voyons maintenant comment un fichier JSON peut être traité en langage informatique Python. L’objectif est de lire puis de compléter la fiche de renseignements l’un des pères de l’informatique… MONSIEUR Alan TURING » ; il a été mis à l’honneur dans pas moins de 6 films.

À faire vous-même 4 :

  • Ouvrez et observez le fichier « Alan TURING.json »

  • Ouvrez et observez le fichier en langage Python « Traitement fichier JSON.py »

  • Exécutez ce programme et observez le résultat au niveau de la console Python

Ce programme ne fait pour le moment que lire le fichier JSON ; voyons maintenant comment ce programme pourra compléter sa fiche en y ajoutant sa nationalité et son année de naissance.

À faire vous-même 5 :

  • Recherchez sur Wikipédia ces deux informations (nationalité et année de naissance) sur Monsieur Alan TURING tout en prenant un peu de temps de découvrir son histoire

  • Ajoutez en fin de programme une première ligne de code « données['Nationalité'] = 'Britannique' » qui va permettre de commencer à compléter sa fiche

  • Ajoutez à la suite la ligne de code permettant d’afficher le résultat une deuxième fois puis testez

  • Ajoutez au bon emplacement la ligne de code qui va ajouter maintenant son année de naissance (remarque : la date va être considérée comme un nombre et non une chaine de caractères et pour cela les « ‘ » ne sont pas à placer de part et d’autre du nombre) puis testez

  • Ajoutez en fin de programme les lignes de code suivante pour enregistrer le résultat dans un nouveau fichier :

       with codecs.open('Alan TURING Complété.json','w','utf-8') as fichier:

                 fichier.write(json.dumps(données, ensure_ascii=False))

     

  • Exécutez le programme puis vérifiez en l’ouvrant la présence d’un nouveau fichier dans le dossier de l’activité nommé « FicheComplétée.json »

En programmation, il est préférable de créer une fonction qui va compléter les fichiers JSON en lui donnant des paramètres comme le nom du fichier à lire, celui à écrire et la donnée à ajouter.

À faire vous-même 6 :

  • Ouvrez et observez le fichier en langage Python « Traitement fichier JSON par fonction.py »

  • Exécutez le programme et constatez que rien ne se passe !

  • Ajoutez à la suite du code l’instruction « completer("Alan TURING.json", "Alan TURING complété 2.json", "Sexe","Homme") » , exécutez pas à pas puis constatez qu’un nouveau fichier a été créé contenant l’information sur le sexe de ce monsieur

  • Dans la console, saisissez « help(completer) » et méditez sur le résultat !