Données et jeux de données

1.3 Données et jeux de données

Objectifs d'apprentissage

À la fin de cette section, vous devriez être en mesure de :

  • 1.3.1 Définir une donnée et un jeu de données.
  • 1.3.2 Différencier les divers types de données utilisés en science des données.
  • 1.3.3 Identifier le type de données utilisé dans un jeu de données.
  • 1.3.4 Décrire un élément et un attribut d'un jeu de données.
  • 1.3.5 Identifier les différents formats et structures de données utilisés en science des données.

Qu'est-ce que la science des données ? et La science des données en pratique ont présenté les nombreuses facettes et applications de la science des données dans le monde actuel. La science des données nous permet d'extraire des connaissances et des perspectives à partir des données, orientant ainsi la prise de décision et l'innovation dans les entreprises, la santé, le divertissement, etc. Comme nous l'avons vu, cette discipline puise ses racines dans les mathématiques, les statistiques et l'informatique, mais elle n'a véritablement émergé en tant que domaine à part entière qu'au début des années 2000, avec la prolifération des données numériques et les progrès de la puissance de calcul et de la technologie. Elle a pris un essor considérable vers le milieu et la fin des années 2000 avec l'avènement des mégadonnées et le besoin de techniques sophistiquées pour analyser et valoriser des jeux de données volumineux et complexes. Son évolution a depuis été fulgurante, et comme en témoignent les échanges précédents, elle s'impose désormais comme une composante essentielle de nombreux secteurs et domaines d'activité.

Pourtant, les données ne datent pas d'hier ! L'humanité collecte des données et produit des jeux de données depuis la nuit des temps. Cela a commencé dès l'âge de pierre, lorsque les humains gravaient des formes et des représentations sur la roche, appelées pétroglyphes. Ces pétroglyphes renseignent sur l'apparence des animaux et sur le mode de vie des populations de l'époque, ce qui constitue pour nous de précieuses « données ». Les Égyptiens de l'Antiquité ont inventé une première forme de papier — le papyrus — afin de consigner leurs données. Le papyrus a également facilité le stockage massif d'informations, qu'il s'agisse de dresser des inventaires, d'enregistrer des transactions financières ou de transmettre un récit aux générations futures.

Données

Le mot « data » est le pluriel du terme latin « datum », qui signifie quelque chose de donné ou d'utilisé, et désigne fréquemment un élément d'information individuel ou un point de référence unique dans un jeu de données. En entendant le terme « données », vous pensez sans doute à des « nombres ». Il est vrai que les nombres sont généralement considérés comme des données, mais il existe de nombreuses autres formes de données tout autour de nous. Tout ce que nous pouvons analyser pour produire de l'information — des éclairages de haut niveau — est considéré comme des données (data).

Supposons que vous hésitiez à vous inscrire à un cours particulier le semestre prochain. Quel processus suivez-vous pour prendre votre décision ? Vous pourriez d'abord consulter les évaluations du cours, comme le montre le Tableau 1.1.

Semestre Enseignant Taille de la classe Évaluation
Automne 2020 A 100 Pas du tout recommandé
Printemps 2021 A 50 Fortement recommandé
Automne 2021 B 120 Pas vraiment recommandé
Printemps 2022 B 40 Fortement recommandé
Automne 2022 A 110 Recommandé
Printemps 2023 B 50 Fortement recommandé
Tableau 1.1 Registres d'évaluation des cours

Ce registre d'évaluation comprend quatre types de données, regroupées dans les colonnes du tableau : Semestre, Enseignant, Taille de la classe et Évaluation. Chaque colonne comporte six valeurs distinctes, situées sur chaque ligne. Par exemple, la colonne Semestre contient six données textuelles : « Automne 2020 », « Printemps 2021 », « Automne 2021 », « Printemps 2022 », « Automne 2022 » et « Printemps 2023 ».

Les mentions d'évaluation en elles-mêmes ne vous indiquent pas directement s'il faut ou non suivre ce cours au semestre prochain. Ces évaluations ne sont qu'une formulation (par ex., « Fortement recommandé » ou « Pas vraiment recommandé ») qui encode le degré de recommandation du cours pour le semestre concerné. Vous devez les analyser pour parvenir à une décision !

Réfléchissons maintenant à la façon d'extraire des informations de ces évaluations. Vous examinerez sans doute l'ensemble des données, notamment la période du semestre où le cours a été dispensé, l'identité de l'enseignant et l'effectif de la classe. Ces enregistrements vous permettront de tirer des informations qui vous aideront à déterminer « s'il convient ou non de vous inscrire à ce cours le semestre prochain ».

Exemple 1.1

Problème

Supposons que vous souhaitiez décider si vous devez mettre une veste aujourd'hui. Vous recherchez les températures maximales des cinq derniers jours et notez si vous avez eu besoin d'une veste chacun de ces jours. Dans ce scénario, quelles données utilisez-vous ? Et quelle information essayez-vous d'en tirer ?

Solution

Les relevés de température et le fait que vous ayez eu besoin ou non d'une veste chacun des cinq derniers jours constituent deux types de données auxquels vous vous référez. Là encore, ils n'indiquent rien en soi sur le port d'une veste aujourd'hui. Il s'agit simplement de cinq paires de nombres (température) et d'enregistrements oui/non (besoin d'une veste), chaque paire représentant un jour. En vous servant de ces données, vous dégagez une information que vous pouvez analyser pour décider de porter ou non une veste aujourd'hui.

Types de données

Les sections précédentes ont montré à quel point notre vie quotidienne est entourée de données, produit elle-même constamment de nouvelles données et nous amène souvent à prendre des décisions fondées sur les données sans même que nous nous en rendions compte. Vous avez peut-être remarqué que les données se présentent sous des formes très variées. Certaines données sont quantitatives, ce qui signifie qu'elles sont mesurées et exprimées à l'aide de nombres. Les données quantitatives (quantitative data) traitent de quantités et de grandeurs, et sont généralement analysées à l'aide de méthodes statistiques. Les mesures numériques telles que la taille, le poids, la température, la fréquence cardiaque et les chiffres de vente en sont des exemples. Les données qualitatives (qualitative data) sont des données non numériques qui décrivent généralement des attributs ou des caractéristiques subjectifs et qui sont analysées au moyen de méthodes telles que l'analyse thématique ou l'analyse de contenu. Parmi les exemples, on compte les descriptions, les observations, les entretiens et les réponses à des questions ouvertes dans des enquêtes (comme nous le verrons dans Conception et réalisation d'enquêtes) portant sur des éléments non quantifiables (par ex., des photos, des publications sur Reddit). Les types de données dictent souvent les méthodes d'analyse à appliquer ; il est donc indispensable de savoir identifier le type d'une donnée. Cette section approfondit donc les différents types de données.

Revenons à notre exemple précédent concernant le choix de suivre ou non un cours au prochain semestre. Dans cet exemple, nous avons fait référence à quatre éléments de données. Ils sont encodés sous différents formats tels que des nombres, des mots et des symboles.

  1. Le semestre durant lequel le cours a été proposé — Automne 2020, Printemps 2021, …, Automne 2022, Printemps 2023
  2. L'enseignant — A et B
  3. La taille de la classe — 100, 50, 120, 40, 110, 50
  4. L'évaluation du cours — « Pas du tout recommandé », …, « Fortement recommandé »

Il existe deux grandes catégories de données quantitatives — numériques et catégorielles — et chacune peut se subdiviser en sous-types. Les données numériques (numeric data) sont représentées par des nombres qui indiquent des quantités mesurables. Elles peuvent être accompagnées de symboles indiquant des unités. Les données numériques se divisent elles-mêmes en données continues et données discrètes. Avec les données continues (continuous data), les valeurs peuvent être n'importe quel nombre. Autrement dit, une valeur est choisie au sein d'un ensemble infini de nombres. Avec les données discrètes (discrete data), les valeurs suivent une précision déterminée, ce qui rend fini l'ensemble des valeurs possibles.

Dans l'exemple précédent, les effectifs de 100, 150, etc. sont des nombres dont l'unité implicite est le « nombre d'étudiants ». Ils indiquent également des grandeurs mesurables puisqu'il s'agit de comptages d'individus. Par conséquent, la taille de la classe correspond à des données numériques. Il s'agit également de données continues dans la mesure où les effectifs semblent pouvoir être n'importe quel nombre naturel pris dans un ensemble infini de nombres, l'ensemble des entiers naturels. Notons que le caractère continu (ou discret) d'une donnée dépend également du contexte. Par exemple, ces mêmes données d'effectif peuvent devenir discrètes si l'établissement impose que toutes les classes comptent 200 places au maximum. Une telle contrainte restreint alors le choix des valeurs d'effectif à un ensemble fini de 200 nombres : 1, 2, 3, …, 198, 199, 200.

Les données catégorielles (categorical data) sont représentées sous différentes formes telles que des mots, des symboles et même des nombres. Une valeur catégorielle est choisie dans un ensemble fini de valeurs, et la valeur n'indique pas nécessairement une grandeur mesurable. Les données catégorielles peuvent être réparties en données nominales et données ordinales. Pour les données nominales (nominal data), l'ensemble des valeurs possibles ne comporte aucune notion d'ordre, tandis que pour les données ordinales (ordinal data), l'ensemble des valeurs possibles intègre une notion d'ordonnancement.

Les autres éléments — semestre, enseignant et évaluations — sont des données catégorielles. Ils sont représentés par des symboles (par ex., « Automne 2020 », « A ») ou des mots (par ex., « Fortement recommandé »), et ces valeurs sont choisies dans l'ensemble fini de ces symboles et mots (par ex., A par rapport à B). Les deux premières données sont nominales car le semestre et l'enseignant ne répondent pas à un ordre intrinsèque, tandis que la dernière est ordinale car il existe une notion de degré (Pas du tout recommandé ~ Fortement recommandé). Vous pourriez objecter que les semestres présentent un ordre chronologique : Automne 2020 précède Printemps 2021, et Automne 2021 succède à Automne 2020. Si vous souhaitez valoriser cette notion dans votre analyse, vous pouvez également considérer la donnée du semestre comme ordinale — l'ordre chronologique est d'ailleurs essentiel lors de l'étude d'un jeu de séries temporelles. Vous en apprendrez davantage à ce sujet dans Séries temporelles et prévisions.

Exemple 1.2

Problème

Reprenons le scénario de la veste dans l'Exemple 1.1. Dans cet exemple, nous avons fait référence à deux types de données :

  1. La température au cours des trois derniers jours — 90 °F, 85 °F, …
  2. Pour chacun de ces jours, la nécessité ou non de porter une veste — Oui, Non, …

Quel est le type de chacune de ces données ?

Solution

Les températures sont des nombres suivis de l'unité degré Fahrenheit (°F). Elles indiquent également des grandeurs mesurables, car il s'agit de relevés précis issus d'un thermomètre. Par conséquent, la température est une donnée numérique. Il s'agit également de données continues, car elles peuvent prendre n'importe quelle valeur réelle, et l'ensemble des nombres réels est infini.

L'autre type de données — le fait d'avoir eu besoin ou non d'une veste — est une donnée catégorielle. Ces données catégorielles sont représentées par des symboles (Oui/Non), et les valeurs sont choisies dans l'ensemble fini formé par ces symboles. Elles sont également nominales, car Oui/Non ne suit aucun ordre particulier.

Jeux de données

Un jeu de données (dataset) est un ensemble d'observations ou d'entités de données organisé à des fins d'analyse et d'interprétation, comme le montre le Tableau 1.1. De nombreux jeux de données peuvent être représentés sous forme de tableau, où chaque ligne correspond à une entité de données unique et chaque colonne définit la structure de ces entités.

Notez que le jeu de données utilisé dans le Tableau 1.1 compte six entités (également appelées éléments (items), entrées ou instances), distinguées par le semestre. Chaque entité est définie par la combinaison de quatre attributs (attributes) ou caractéristiques (également appelés features ou variables) — Semestre, Enseignant, Taille de la classe et Évaluation. La combinaison de ces variables caractérise une entrée d'un jeu de données.

Bien que les valeurs effectives des attributs diffèrent d'une entité à l'autre, remarquons que toutes les entités possèdent des valeurs pour ces mêmes quatre attributs, ce qui en fait un jeu de données structuré (structured dataset). En tant que jeu de données structuré, ces éléments peuvent être présentés dans un tableau où chaque élément correspond à une ligne.

En revanche, un jeu de données non structuré (unstructured dataset) est un ensemble qui ne dispose pas d'un modèle de données prédéfini ou organisé. Alors que les jeux de données structurés sont organisés sous un format tabulaire avec des champs et des relations clairement définis, les données non structurées sont dépourvues de schéma fixe. Les données non structurées se présentent souvent sous la forme de textes, d'images, de vidéos, d'enregistrements audio ou d'autres contenus dont les informations ne s'insèrent pas aisément dans des lignes et des colonnes.

Les jeux de données non structurés abondent. Certains soutiennent même qu'ils sont plus nombreux que les jeux de données structurés. On peut citer par exemple les avis Amazon sur une gamme de produits, les publications Twitter de l'année écoulée, les images publiques sur Instagram, les courtes vidéos populaires sur TikTok, etc. Ces jeux de données non structurés sont fréquemment transformés en jeux structurés afin que les scientifiques des données puissent les analyser. Nous aborderons différentes techniques de traitement de données dans Collecte et préparation des données.

Exemple 1.3

Problème

Revenons à l'exemple de la veste : décider de porter ou non une veste pour aller en cours. Supposons que le jeu de données se présente comme indiqué dans le Tableau 1.2 :

Date Température Veste nécessaire ?
10 oct. 80 °F Non
11 oct. 60 °F Oui
12 oct. 65 °F Oui
13 oct. 75 °F Non
Tableau 1.2 Jeu de données sur le port de la veste

Ce jeu de données est-il structuré ou non structuré ?

Solution

Il s'agit d'un jeu de données structuré car 1) chaque élément individuel présente la même structure avec les trois mêmes attributs — Date, Température et Veste nécessaire ? — et 2) chaque valeur s'insère strictement dans une cellule d'un tableau.

Exemple 1.4

Problème

Combien d'entrées et d'attributs le jeu de données de l'exemple précédent contient-il ?

Solution

Le jeu de données compte quatre entrées, chacune étant identifiée par une date précise (10 oct., 11 oct., 12 oct., 13 oct.). Le jeu de données possède trois attributs — Date, Température, Veste nécessaire ?.

Exemple 1.5

Problème

Un jeu de données rassemble la liste des mots-clés recherchés sur un moteur de recherche web au cours de la semaine écoulée. Ce jeu de données est-il structuré ou non structuré ?

Solution

Ce jeu de données est non structuré car chaque entrée peut être un texte libre : un mot unique, plusieurs mots ou même plusieurs phrases.

Exemple 1.6

Problème

Le jeu de données de l'exemple précédent est traité de sorte que chaque recherche soit désormais résumée par trois mots au maximum, accompagnés de l'horodatage (c'est-à-dire le moment où la recherche a eu lieu). Ce jeu de données est-il structuré ou non structuré ?

Solution

Il s'agit d'un jeu de données structuré car chaque entrée possède désormais la même structure avec deux attributs : un mot-clé court accompagné de son horodatage.

Formats et structures de jeux de données (CSV, JSON, XML)

Les jeux de données peuvent être stockés sous différents formats, et il est important d'être en mesure de reconnaître les plus couramment employés. Cette section aborde trois des formats les plus utilisés pour les jeux de données structurés — les valeurs séparées par des virgules (CSV) (comma-separated values (CSV)), JavaScript Object Notation (JSON) et le langage de balisage extensible (XML) (Extensible Markup Language (XML)). Si le format CSV constitue la manière la plus intuitive d'encoder un jeu de données tabulaire, une grande partie des données collectées sur le web (par ex., sites web, applications mobiles) est stockée au format JSON ou XML. En effet, JSON se prête parfaitement à l'échange de données entre un utilisateur et un serveur, tandis qu'XML convient particulièrement aux jeux de données complexes en raison de son organisation hiérarchique naturelle. Étant donné que ces formats enregistrent les données sous forme de texte brut, vous pouvez les ouvrir à l'aide de n'importe quel éditeur de texte classique comme Bloc-notes, Visual Studio Code, Sublime Text ou l'éditeur VI.

Le Tableau 1.3 résume les avantages et les inconvénients des formats de jeux de données CSV, JSON et XML. Chacun d'entre eux est décrit plus en détail ci-dessous.

Format de jeu de données Avantages Inconvénients Utilisation typique
CSV
  • Simple
  • Difficile d'ajouter des métadonnées
  • Difficile à analyser syntaxiquement en présence de caractères spéciaux
  • Structure plate
  • Données tabulaires
JSON
  • Simple
  • Compatible avec de nombreux langages
  • Facile à analyser syntaxiquement
  • Difficile d'ajouter des métadonnées
  • Impossible d'insérer des commentaires
  • Données devant être échangées entre un utilisateur et un serveur
XML
  • Structuré (donc plus lisible)
  • Possibilité d'ajouter des métadonnées
  • Verbeux
  • Structure complexe avec balises
  • Structures de données hiérarchiques
Tableau 1.3 Résumé des formats CSV, JSON et XML

Pour aller plus loin

Bases de données populaires et fiables pour rechercher des jeux de données publics

Plusieurs bases de données en ligne proposent gratuitement des jeux de données publics. Lorsque vous recherchez un jeu de données spécifique, les sources suivantes peuvent constituer un point de départ idéal.

Parmi les sources de données gouvernementales, on compte :

Data.gov

Bureau of Labor Statistics (BLS)

National Oceanic and Atmospheric Administration (NOAA)

Organisation mondiale de la Santé (OMS) (World Health Organization (WHO))

Quelques sources réputées de données non gouvernementales :

Kaggle

Statista

Pew Research Center

Valeurs séparées par des virgules (CSV)

Le format CSV stocke chaque élément du jeu de données sur une seule ligne. Les valeurs des variables de chaque élément sont listées sur cette ligne, séparées par des virgules (« , »). L'exemple précédent concernant l'inscription à un cours peut être enregistré sous la forme d'un fichier CSV. La Figure 1.4 montre à quoi ressemble ce jeu de données lorsqu'il est ouvert avec un éditeur de texte (par ex., Bloc-notes, TextEdit, MS Word, Google Docs) ou avec un outil de programmation sous la forme d'un éditeur de code (par ex., Sublime Text, Visual Studio Code, Xcode). Remarquez que des virgules séparent les valeurs des attributs sur une même ligne (voir la Figure 1.4).

Capture d'écran d'un document CSV ouvert dans Visual Studio Code avec les en-têtes de données semester, instructor, class size et rating. Les six semestres vont de l'automne 2020 au printemps 2023. Les enseignants sont A ou B. La taille de la classe varie de 40 à 120. Les évaluations comprennent not recommended at all, highly recommended, not quite recommended et recommended.
Figure 1.4 ch1-courseEvaluations.csv ouvert avec Visual Studio Code

Une virgule pour un saut de ligne ?

La fin d'une ligne offre une certaine souplesse dans les fichiers CSV. Il est possible de terminer la ligne avec ou sans virgule, car certains logiciels ou langages de programmation ajoutent automatiquement une virgule lors de la création d'un jeu de données CSV.

Les fichiers CSV peuvent être ouverts à l'aide de tableurs tels que MS Excel et Google Sheets. Ces logiciels permettent de visualiser les fichiers CSV de façon plus intuitive sous forme de tableau (voir la Figure 1.5). Nous aborderons l'utilisation de base de Python pour l'analyse des fichiers CSV dans La science des données avec Python.

Capture d'écran d'un document CSV ouvert dans Microsoft Excel avec les en-têtes de colonnes semester, instructor, class size et rating. Les six semestres vont de l'automne 2020 au printemps 2023. Les enseignants sont A ou B. La taille de la classe varie de 40 à 120. Les évaluations comprennent not recommended at all, highly recommended, not quite recommended et recommended.
Figure 1.5 ch1-courseEvaluations.csv ouvert avec Microsoft Excel (Utilisé avec l'autorisation de Microsoft)

Comment télécharger et ouvrir un jeu de données à partir du tableur Ch1-Data de cet ouvrage

Un fichier tableur accompagne chaque chapitre de cet ouvrage. Ces fichiers comportent plusieurs onglets correspondant chacun à un jeu de données abordé dans le chapitre. Par exemple, le fichier tableur pour ce chapitre est illustré à la Figure 1.6. Vous remarquerez qu'il comprend plusieurs onglets intitulés « ch1-courseEvaluations.csv », « ch1-cancerdoc.csv » et « ch1-riris.csv », qui sont les noms respectifs de chaque jeu de données.

Capture d'écran d'un document Excel. Le tableau mis en évidence est intitulé ch1-courseEvaluations.cvs. Les en-têtes de colonnes sont semester, instructor, class size et rating. Les six semestres vont de l'automne 2020 au printemps 2023. Les enseignants sont A ou B. La taille de la classe varie de 40 à 120. Les évaluations comprennent not recommended at all, highly recommended, not quite recommended et recommended.
Figure 1.6 Le fichier tableur du jeu de données pour le chapitre 1 (Utilisé avec l'autorisation de Microsoft)

Pour enregistrer chaque jeu de données dans un fichier CSV distinct, sélectionnez l'onglet souhaité, puis cliquez sur Fichier > Enregistrer sous… > Format de fichier CSV. Cette opération enregistrera uniquement l'onglet actif au format CSV. Veillez à ce que le nom du fichier soit correctement défini ; il est possible qu'il reprenne le nom du fichier tableur global — « ch1-data.xlsx » dans ce cas. Vous devez nommer le fichier CSV généré d'après le nom de l'onglet correspondant. Par exemple, si vous avez extrait un fichier CSV à partir du premier onglet de « ch1-data.xlsx », assurez-vous que le fichier produit porte bien le nom « ch1-courseEvaluations.csv ». Cela évitera toute confusion lors du suivi des instructions fournies dans cet ouvrage.

JavaScript Object Notation (JSON)

JSON utilise la syntaxe d'un langage de programmation appelé JavaScript. Plus précisément, il s'appuie sur la syntaxe des objets JavaScript. Rassurez-vous cependant : il n'est nullement nécessaire de maîtriser JavaScript pour comprendre le format JSON.

La Figure 1.7 présente un exemple de représentation JSON du même jeu de données que celui décrit à la Figure 1.6.

Capture d'écran d'un fichier .json ouvert dans Visual Studio Code. Les en-têtes de données sont semester, instructor, class size et rating. Les six semestres vont de l'automne 2020 au printemps 2023. Les enseignants sont A ou B. La taille de la classe varie de 40 à 120. Les évaluations comprennent not recommended at all, highly recommended, not quite recommended et recommended.
Figure 1.7 CourseEvaluations.json ouvert avec Visual Studio Code

Notez que la structure JSON commence et se termine par une paire d'accolades ({}). À l'intérieur figurent plusieurs couples de deux champs séparés par un deux-points (:). Ces deux champs placés à gauche et à droite du deux-points sont appelés respectivement une clé et une valeur — key : value. Par exemple, le jeu de données de la Figure 1.7 contient cinq paires clé-valeur avec la clé "Semester": "Fall 2020", "Semester": "Spring 2021", "Semester": "Fall 2021", "Semester": "Spring 2022", "Semester": "Fall 2022" et "Semester": "Spring 2023".

CourseEvaluations.json comporte une paire clé-valeur au niveau racine : "Members": [...]. Vous pouvez constater que chaque élément du jeu de données est répertorié sous forme de tableau ou de liste sous la clé "Members". Au sein du tableau, chaque élément est lui-même délimité par des accolades et contient une liste de paires clé-valeur séparées par des virgules. Les clés permettent de nommer les attributs du jeu de données, tandis que les valeurs définissent les données associées. Par exemple, le premier élément du jeu de données JSON ci-dessus possède quatre clés, chacune correspondant à un attribut — Semester, Instructor, Class Size et Rating. Leurs valeurs respectives sont "Fall 2020", "A", 100 et "Not recommended at all".

Langage de balisage extensible (XML)

Le format XML est comparable à JSON, mais il structure chaque élément du jeu de données à l'aide de symboles appelés balises. Une balise XML (XML tag) est un bloc de texte composé d'une paire de chevrons (< >) renfermant du texte. Examinons l'exemple de représentation XML du même jeu de données à la Figure 1.8. Notez que la capture d'écran de CourseEvaluations.xml ci-dessous ne présente que les trois premiers éléments du jeu de données d'origine.

Capture d'écran d'un fichier XML ouvert dans Visual Studio Code. Il contient des évaluations pour trois semestres, Fall 2020, Spring 2021 et Fall 2021 en fonction de l'enseignant et de la taille de la classe.
Figure 1.8 ch1-courseEvaluations.xml avec les trois premières entrées seulement, ouvert avec Visual Studio Code

CourseEvaluations.xml délimite chaque élément du jeu de données entre deux balises, <members> et </members>. Sous <members>, chaque élément est encadré par <evaluation> et </evaluation>. Comme le jeu de données de la Figure 1.8 contient trois éléments, on observe trois blocs <evaluation> … </evaluation>. Chaque élément possède quatre attributs, également définis par des balises XML distinctes — <semester>, <instructor>, <classsize> et <rating>. Celles-ci sont ensuite fermées par leurs balises correspondantes telles que </semester>, </instructor>, </classsize> et </rating>.

La plateforme PubMed datasets met à disposition une liste d'articles publiés dans la National Library of Medicine au format XML. Cliquez sur Annual Baseline, puis téléchargez et ouvrez n'importe quel fichier .xml. Vous constaterez que tous ces fichiers .xml sont si volumineux qu'ils sont compressés au format .gz. Cependant, une fois le fichier téléchargé, un double-clic permet de le décompresser et de l'ouvrir automatiquement. Vous y découvrirez un ensemble de balises XML accompagnées d'informations sur de nombreuses publications, comme la revue de parution, le titre, la date de publication, etc.

XML et données d'images

Le format XML est également très répandu pour accompagner des données d'images. Il sert alors à consigner des informations complémentaires sur l'image. Par exemple, le Small Traffic Light Dataset de la Figure 1.9 est fourni avec un ensemble d'images de feux de circulation réparties dans l'un des trois répertoires : JPEGImages, train_images et valid_images. Chaque répertoire d'images est associé à un autre répertoire dédié aux annotations, à savoir Annotations, train_annotations et valid_annotations.

Structure de répertoires pour un jeu de données.
Figure 1.9 La structure de répertoires du Small Traffic Light Dataset

Les répertoires d'annotations regroupent une liste de fichiers XML, dont chacun correspond à un fichier image portant le même nom dans le répertoire d'images associé (Figure 1.10). La Figure 1.11 montre que le premier fichier XML du répertoire Annotations contient des informations relatives au fichier .jpg portant le même nom.

Capture d'écran d'une liste de huit fichiers XML. Ils commencent tous par la date 2020-03-30 et se terminent par .xml.
Figure 1.10 Liste des fichiers XML du répertoire Annotations dans le Small Traffic Light Dataset
(source : « Small Traffic Light Dataset », https://www.kaggle.com/datasets/sovitrath/small-traffic-light-dataset-xml-format)
Capture d'écran d'un extrait de code affichant les métadonnées d'une image au format XML, notamment le nom de fichier, les dimensions et les coordonnées du cadre de délimitation d'un objet vert dans l'image.
Figure 1.11 2020-03-30 11_30_03.690871079.xml, un exemple de fichier XML au sein du Small Traffic Light Dataset (Source : « Small Traffic Light Dataset », https://www.kaggle.com/datasets/sovitrath/small-traffic-light-dataset-xml-format)

Descriptions de jeux de données en JSON et XML

Les fichiers JSON comme XML contiennent souvent une description du jeu de données lui-même (appelée métadonnées), qui apparaît sous la forme d'une entrée distincte dans le fichier ({} ou <>). Sur la Figure 1.12 et la Figure 1.13, les données proprement dites sont répertoriées respectivement dans « itemData » et <data>. Les autres champs fournissent des informations contextuelles sur le jeu de données. Par exemple :

  • « creationDateTime » : précise la date de création du jeu de données.
  • <name> sert à indiquer le nom de ce jeu de données.
  • <metadata> est utilisé pour décrire le nom de chaque colonne du jeu de données ainsi que son type de données.
Capture d'écran d'un extrait de code affichant des données au format JSON avec des champs pour la date de création, la version du jeu de données, l'identifiant du fichier, la version du système source et les données cliniques. Les données cliniques comprennent des éléments avec les informations OID, nom, étiquette et type.
Figure 1.12 Un exemple de fichier JSON avec métadonnées
Capture d'écran d'un extrait de code XML définissant un jeu de données de céréales. Le jeu de données comprend des métadonnées avec le nom, la version, la date et les descriptions de colonnes, suivies de lignes de données sur les céréales avec le nom, le fabricant et les calories par portion.
Figure 1.13 Un exemple de jeu de données XML avec métadonnées

Le jeu de données Face Mask Detection comprend un ensemble d'images de visages humains portant des masques. Il s'organise selon un principe similaire. Ce jeu de données se compose de deux répertoires — annotations et images. Le premier est au format XML. Le nom de chaque fichier XML renvoie à la description textuelle de l'image de même nom. Par exemple, « maksssksksss0.xml » renferme des informations sur « maksssksksss0.png ».

Exemple 1.7

Problème

Le jeu de données Iris Flower (ch1-iris.csv) est un grand classique dans le domaine de l'analyse de données.1 Téléchargez ce jeu de données et ouvrez-le avec un éditeur de code (par ex., Sublime Text, Xcode, Visual Studio Code). (Si aucun éditeur de code n'est installé sur votre machine, nous vous recommandons d'en installer un. Ces trois éditeurs sont tous rapides et simples à installer.) Répondez ensuite aux questions suivantes :

  • Combien d'éléments le jeu de données compte-t-il ?
  • Combien d'attributs le jeu de données comporte-t-il ?
  • Quel est le deuxième attribut du jeu de données ?

Solution

Le jeu de données compte 151 lignes, ligne d'en-tête comprise, soit un total de 150 éléments. Cinq attributs sont répartis sur les colonnes : sepal_length, sepal_width, petal_length, petal_width, species. Le deuxième attribut est sepal_width.

Exemple 1.8

Problème

Le jeu de données Jeopardy (ch1-jeopardy.json) est au format JSON. Téléchargez-le et ouvrez-le avec un éditeur de code (par ex., Bloc-notes, Sublime Text, Xcode, Visual Studio Code).

  • Combien d'éléments le jeu de données compte-t-il ?
  • Combien d'attributs le jeu de données comporte-t-il ?
  • Quel est le troisième élément du jeu de données ?

Solution

Le jeu de données comporte 409 éléments, et chaque élément possède sept attributs : « category », « air_date », « question », « value », « answer », « round » et « show_number ». Le troisième élément est situé à l'indice 2 de la première liste, comme l'illustre la Figure 1.14.

Extrait de code affichant des données au format JSON concernant une question de Jeopardy!. Les données comprennent la catégorie, la date de diffusion, la question, la valeur, la réponse, la manche et le numéro de l'émission.
Figure 1.14 Le troisième élément du jeu de données Jeopardy