Aller au contenu

Les données structurées - Exercices

Exercice 1 - Définitions

Répondre en une phrase à chaque question.

a. Qu'est-ce qu'une donnée ? Donner un exemple.

Solution

Une donnée est une information se rapportant à un objet, une personne ou un événement. Exemple : l'âge d'un élève (16), le titre d'un morceau de musique ("Imagine"), la température d'une ville (22,5 °C).

b. Qu'est-ce qu'un descripteur ? Donner un exemple.

Solution

Un descripteur (ou attribut, champ) est une propriété utilisée pour décrire un objet au sein d'une collection. Par exemple, pour une collection de livres, les descripteurs pourraient être : titre, auteur, année de publication, nombre de pages, genre.

c. Quelle est la différence entre une collection et une base de données ?

Solution

Une collection regroupe des objets partageant les mêmes descripteurs (par exemple une liste de films). Une base de données regroupe plusieurs collections reliées entre elles (par exemple une collection de films, une collection de réalisateurs et une collection d'acteurs, reliées par des identifiants communs).

d. Qu'est-ce qu'une métadonnée ? Donner un exemple.

Solution

Une métadonnée est une « donnée sur les données » : elle décrit les caractéristiques d'un fichier sans faire partie de son contenu. Par exemple, les métadonnées d'une photo incluent la date de prise de vue, les coordonnées GPS, le modèle d'appareil et la résolution.

e. Qu'est-ce qu'une donnée personnelle selon le RGPD ?

Solution

Selon l'article 4 du RGPD, une donnée personnelle est « toute information se rapportant à une personne physique identifiée ou identifiable », directement (nom, photo) ou indirectement (adresse IP, numéro de téléphone, donnée biométrique).


Exercice 2 - Identifier les descripteurs

On considère la table suivante qui répertorie des villes :

Ville Région Population Superficie (km²) Code postal
Lyon Auvergne-Rhône-Alpes 516 092 47,87 69000
Marseille Provence-Alpes-Côte d'Azur 870 018 240,62 13000
Toulouse Occitanie 493 465 118,3 31000

1. Combien y a-t-il de descripteurs ? Les nommer.

2. Combien y a-t-il d'enregistrements (objets) ?

3. Quelle est la valeur du descripteur « Région » pour l'objet « Toulouse » ?

4. Proposer deux opérations de traitement que l'on pourrait effectuer sur cette table.

Solution

1. Il y a 5 descripteurs : Ville, Région, Population, Superficie (km²), Code postal.

2. Il y a 3 enregistrements (Lyon, Marseille, Toulouse).

3. La valeur est « Occitanie ».

4. Exemples d'opérations :

  • Tri : trier les villes par population décroissante → Marseille, Lyon, Toulouse.
  • Filtre : sélectionner les villes de plus de 500 000 habitants → Lyon et Marseille.
  • Calcul : calculer la densité de population (population / superficie) pour chaque ville.

Exercice 3 - Format CSV

1. Écrire la table de l'exercice 2 au format CSV avec le point-virgule comme séparateur.

2. Pourquoi utilise-t-on le point-virgule plutôt que la virgule en France ?

3. On ajoute la ville de Bordeaux (Nouvelle-Aquitaine, 257 068 habitants, 49,36 km², code postal 33000). Écrire la ligne CSV correspondante.

Solution

1.

Ville;Region;Population;Superficie;Code postal
Lyon;Auvergne-Rhone-Alpes;516092;47.87;69000
Marseille;Provence-Alpes-Cote d'Azur;870018;240.62;13000
Toulouse;Occitanie;493465;118.3;31000

2. En France, la virgule est utilisée comme séparateur décimal (par exemple 47,87). Si on l'utilisait aussi comme séparateur de champs, le fichier serait ambigu : le programme ne saurait pas si 47,87 est un seul nombre décimal ou deux valeurs séparées.

3. Bordeaux;Nouvelle-Aquitaine;257068;49.36;33000


Exercice 4 - Format JSON

1. Écrire la fiche de Lyon (exercice 2) au format JSON.

2. Quel est le principal avantage du JSON par rapport au CSV ?

3. Quel est le principal inconvénient du JSON par rapport au CSV ?

Solution

1.

{
    "Ville": "Lyon",
    "Région": "Auvergne-Rhône-Alpes",
    "Population": 516092,
    "Superficie": 47.87,
    "Code postal": "69000"
}

2. Le JSON permet des structures hiérarchiques (imbriquées) : un champ peut contenir un objet ou une liste, ce qui est impossible en CSV. Il est aussi plus lisible car chaque valeur est associée à son descripteur.

3. Le JSON est plus volumineux que le CSV car il répète les noms des descripteurs pour chaque enregistrement, alors que le CSV ne les écrit qu'une seule fois en première ligne.


Exercice 5 - Métadonnées

1. Vous prenez une photo avec votre smartphone. Citer au moins cinq métadonnées qui sont automatiquement enregistrées avec cette photo.

2. En quoi les métadonnées d'une photo peuvent-elles poser un problème de vie privée ?

3. Comment peut-on supprimer les métadonnées d'une photo avant de la partager en ligne ?

Solution

1. Métadonnées enregistrées : date et heure de la prise de vue, coordonnées GPS (latitude et longitude), modèle du smartphone, résolution de l'image (en pixels), taille du fichier, orientation (portrait/paysage), paramètres de l'appareil (ouverture, temps d'exposition, sensibilité ISO).

2. Les métadonnées GPS permettent de localiser précisément l'endroit où la photo a été prise. Si on partage régulièrement des photos en ligne sans supprimer les métadonnées, quelqu'un pourrait déterminer son adresse, ses lieux de travail, ses habitudes de déplacement.

3. On peut supprimer les métadonnées via les propriétés du fichier (clic droit > Propriétés > Détails > « Supprimer les propriétés et informations personnelles » sous Windows), ou en utilisant des outils en ligne ou des applications dédiées. Certains réseaux sociaux suppriment automatiquement les métadonnées GPS des photos publiées.


Exercice 6 - Open Data et RGPD

1. Qu'est-ce que l'Open Data ? Citer un site français de données ouvertes.

2. Donner deux exemples de données qui peuvent être ouvertes et deux exemples de données qui ne peuvent pas l'être.

3. Citer trois droits garantis par le RGPD aux citoyens européens.

4. Quelle est l'institution française chargée de veiller au respect du RGPD ?

Solution

1. L'Open Data (données ouvertes) désigne des données mises à disposition du public, librement accessibles et réutilisables. Le principal site français est data.gouv.fr.

2. Données ouvrables : horaires des transports en commun, résultats des élections, données météorologiques, statistiques de population. Données non ouvrables : dossiers médicaux (secret médical), données personnelles des citoyens, informations classifiées défense, secrets industriels.

3. Trois droits parmi : droit d'accès (obtenir une copie de ses données), droit de rectification (corriger des erreurs), droit à l'effacement (droit à l'oubli), droit à la portabilité (récupérer ses données), droit d'opposition (refuser certains usages).

4. La CNIL (Commission Nationale de l'Informatique et des Libertés).


Exercice 7 - Le Cloud

1. Qu'est-ce que le Cloud ? Donner deux exemples de services.

2. Citer deux avantages et deux inconvénients du Cloud par rapport au stockage local.

3. Qu'est-ce qu'un data center ? Pourquoi consomme-t-il beaucoup d'énergie ?

4. Proposer trois gestes concrets pour réduire son impact numérique.

Solution

1. Le Cloud est un système de stockage et de traitement de données à distance, accessible via Internet. Exemples : Google Drive, iCloud, OneDrive, Dropbox.

2. Avantages : accessibilité depuis n'importe quel appareil connecté, sauvegarde automatique évitant la perte de données. Inconvénients : nécessite une connexion Internet, questions de confidentialité (nos fichiers sont sur les serveurs d'une entreprise tierce).

3. Un data center est une infrastructure physique regroupant des milliers de serveurs informatiques fonctionnant 24h/24. Il consomme beaucoup d'énergie car : les serveurs eux-mêmes consomment de l'électricité en permanence, et ils dégagent énormément de chaleur, ce qui nécessite des systèmes de refroidissement (climatisation) très coûteux en énergie.

4. Gestes : supprimer les fichiers inutiles stockés dans le Cloud et les emails obsolètes, limiter le streaming vidéo en haute définition (préférer la définition standard), compresser les fichiers avant de les envoyer par email.


Exercice 8 - QCM

Pour chaque question, indiquer la ou les bonnes réponses.

1. Une donnée peut être :

  • a) un nombre
  • b) un texte
  • c) une date
  • d) toutes les réponses précédentes

2. Quels sont des formats de fichiers de données structurées ?

  • a) HTML
  • b) CSV
  • c) JPG
  • d) JSON

3. Une donnée à caractère personnel peut être :

  • a) une adresse IP
  • b) un nom
  • c) une empreinte digitale
  • d) toutes les réponses précédentes

4. Qu'est-ce que le Cloud ?

  • a) un nuage de mots
  • b) un support de stockage virtuel
  • c) un support de stockage distant
  • d) un disque dur interne

5. La consommation énergétique des data centers double tous les :

  • a) 10 ans
  • b) 2 ans
  • c) 4 ans
  • d) 8 ans
Solution

1. d) toutes les réponses précédentes

2. b) CSV et d) JSON

3. d) toutes les réponses précédentes - une adresse IP, un nom et une empreinte digitale permettent tous d'identifier une personne.

4. c) un support de stockage distant - le Cloud repose sur des serveurs physiques réels situés dans des data centers, accessibles via Internet.

5. c) 4 ans


Exercice 9 - Lire un fichier CSV en Python

On dispose du fichier meteo.csv suivant :

Ville;Temperature;Humidite;Vent
Paris;18;65;12
Lyon;22;45;8
Marseille;26;40;15
Bordeaux;20;55;10
Lille;15;75;20

1. Écrire un programme Python qui lit ce fichier et affiche toutes les données.

2. Modifier le programme pour afficher uniquement les villes où la température dépasse 20 °C.

3. Ajouter une fonctionnalité qui calcule et affiche la température moyenne de toutes les villes.

Solution
import csv

# 1. Lire et afficher toutes les données
with open("meteo.csv", "r", encoding="utf-8") as fichier:
    lecteur = csv.DictReader(fichier, delimiter=";")
    donnees = list(lecteur)

print("Toutes les données :")
for ligne in donnees:
    print(f"  {ligne['Ville']} : {ligne['Temperature']} °C, "
          f"{ligne['Humidite']}% humidité, vent {ligne['Vent']} km/h")

# 2. Filtre : villes où la température dépasse 20 °C
print("\nVilles avec température > 20 °C :")
for ligne in donnees:
    if int(ligne["Temperature"]) > 20:
        print(f"  {ligne['Ville']} : {ligne['Temperature']} °C")

# 3. Calcul : température moyenne
temperatures = [int(ligne["Temperature"]) for ligne in donnees]
moyenne = sum(temperatures) / len(temperatures)
print(f"\nTempérature moyenne : {moyenne} °C")

Résultat attendu :

Villes avec température > 20 °C :
  Lyon : 22 °C
  Marseille : 26 °C

Température moyenne : 20,2 °C


Exercice 10 - Tri et croisement de données (Python)

On dispose de deux tables représentées en Python :

eleves = [
    {"Nom": "Dupont", "Prenom": "Marie", "Classe": "2A", "Moyenne": 14.5},
    {"Nom": "Martin", "Prenom": "Lucas", "Classe": "2B", "Moyenne": 12.0},
    {"Nom": "Leroy", "Prenom": "Emma", "Classe": "2A", "Moyenne": 16.5},
    {"Nom": "Durand", "Prenom": "Hugo", "Classe": "2B", "Moyenne": 11.0},
    {"Nom": "Moreau", "Prenom": "Lea", "Classe": "2A", "Moyenne": 15.0},
]

classes = [
    {"Classe": "2A", "Professeur": "M. Bernard", "Salle": "B204"},
    {"Classe": "2B", "Professeur": "Mme Petit", "Salle": "A102"},
]

1. Écrire un programme qui trie les élèves par moyenne décroissante et affiche le classement.

2. Écrire une fonction eleves_de_classe(eleves, classe) qui renvoie la liste des élèves d'une classe donnée.

3. Écrire un programme qui croise les deux tables pour afficher, pour chaque élève, son nom, sa classe, son professeur et sa salle.

Solution
eleves = [
    {"Nom": "Dupont", "Prenom": "Marie", "Classe": "2A", "Moyenne": 14.5},
    {"Nom": "Martin", "Prenom": "Lucas", "Classe": "2B", "Moyenne": 12.0},
    {"Nom": "Leroy", "Prenom": "Emma", "Classe": "2A", "Moyenne": 16.5},
    {"Nom": "Durand", "Prenom": "Hugo", "Classe": "2B", "Moyenne": 11.0},
    {"Nom": "Moreau", "Prenom": "Lea", "Classe": "2A", "Moyenne": 15.0},
]

classes = [
    {"Classe": "2A", "Professeur": "M. Bernard", "Salle": "B204"},
    {"Classe": "2B", "Professeur": "Mme Petit", "Salle": "A102"},
]

# 1. Tri par moyenne décroissante
classement = sorted(eleves, key=lambda e: e["Moyenne"], reverse=True)
print("Classement par moyenne :")
for i, e in enumerate(classement, 1):
    print(f"  {i}. {e['Prenom']} {e['Nom']} - {e['Moyenne']}")

# 2. Élèves d'une classe
def eleves_de_classe(eleves, classe):
    return [e for e in eleves if e["Classe"] == classe]

print("\nÉlèves de 2A :")
for e in eleves_de_classe(eleves, "2A"):
    print(f"  {e['Prenom']} {e['Nom']}")

# 3. Croisement des deux tables
print("\nInformations croisées :")
for e in eleves:
    for c in classes:
        if e["Classe"] == c["Classe"]:
            print(f"  {e['Prenom']} {e['Nom']} | "
                  f"{e['Classe']} | "
                  f"{c['Professeur']} | "
                  f"Salle {c['Salle']}")

Le croisement fonctionne grâce au descripteur commun Classe présent dans les deux tables. Pour chaque élève, on cherche la ligne de la table classes ayant la même valeur de « Classe » pour récupérer le professeur et la salle.


Activités


🧪 Activité 1 - Explorer des données ouvertes sur data.gouv.fr

Objectif

Découvrir l'Open Data en explorant un jeu de données réel et en répondant à des questions à partir des données brutes.

Déroulement

1. Rendez-vous sur data.gouv.fr et recherchez un jeu de données sur un thème qui vous intéresse (par exemple : « prénoms », « accidents de la route », « qualité de l'air », « résultats du baccalauréat »).

2. Téléchargez le fichier CSV correspondant et ouvrez-le dans un tableur (LibreOffice Calc, Excel) ou dans un éditeur de texte.

3. Répondez aux questions suivantes :

  • Combien de descripteurs (colonnes) contient ce jeu de données ?
  • Combien d'enregistrements (lignes) contient-il ?
  • Quel est le séparateur utilisé (virgule, point-virgule, tabulation) ?
  • Donnez un exemple de valeur pour chaque descripteur.

4. Formulez et répondez à deux questions que l'on peut résoudre en traitant ces données (tri, filtre, calcul).

5. Y a-t-il des données personnelles dans ce fichier ? Ce jeu de données respecte-t-il le RGPD ? Justifiez.


🧪 Activité 2 - Créer et manipuler un fichier CSV en Python

Objectif

Savoir créer, lire et traiter un fichier CSV avec le module csv de Python.

Partie A - Créer un fichier CSV

1. Écrire un programme Python qui crée un fichier eleves.csv contenant les données suivantes :

Nom Prenom Classe Moyenne
Dupont Marie 2A 14.5
Martin Lucas 2B 12.0
Leroy Emma 2A 16.5
Durand Hugo 2B 11.0
Moreau Lea 2A 15.0

Partie B - Lire et traiter

2. Écrire un programme qui lit eleves.csv et affiche les élèves dont la moyenne est supérieure à 13.

3. Ajouter le calcul de la moyenne générale de la classe.

4. Modifier le programme pour écrire dans un nouveau fichier resultats.csv uniquement les élèves de la classe 2A.

Correction
import csv

# Partie A - Créer le fichier
with open("eleves.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f, delimiter=";")
    writer.writerow(["Nom", "Prenom", "Classe", "Moyenne"])
    writer.writerow(["Dupont", "Marie", "2A", "14.5"])
    writer.writerow(["Martin", "Lucas", "2B", "12.0"])
    writer.writerow(["Leroy", "Emma", "2A", "16.5"])
    writer.writerow(["Durand", "Hugo", "2B", "11.0"])
    writer.writerow(["Moreau", "Lea", "2A", "15.0"])

# Partie B - Lire et traiter
with open("eleves.csv", "r", encoding="utf-8") as f:
    lecteur = csv.DictReader(f, delimiter=";")
    eleves = list(lecteur)

# 2. Moyenne > 13
print("Eleves avec moyenne > 13 :")
for e in eleves:
    if float(e["Moyenne"]) > 13:
        print(f"  {e['Prenom']} {e['Nom']} : {e['Moyenne']}")

# 3. Moyenne generale
moyennes = [float(e["Moyenne"]) for e in eleves]
print(f"\nMoyenne generale : {sum(moyennes) / len(moyennes):.1f}")

# 4. Ecrire les eleves de 2A
eleves_2a = [e for e in eleves if e["Classe"] == "2A"]
with open("resultats.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["Nom", "Prenom", "Classe", "Moyenne"], delimiter=";")
    writer.writeheader()
    writer.writerows(eleves_2a)

🧪 Activité 3 - Vos droits numériques (RGPD)

Objectif

Comprendre les droits garantis par le RGPD à travers des mises en situation concrètes.

Mises en situation

Pour chaque situation, indiquez quel droit du RGPD est concerné et quelle action la personne peut entreprendre.

a. Lina découvre que son ancien club de sport a toujours ses coordonnées et lui envoie des publicités.

b. Mehdi veut savoir quelles données Instagram possède sur lui.

c. Sarah remarque que son année de naissance est erronée sur un site d'inscription.

d. Tom souhaite quitter un réseau social et récupérer toutes ses photos et ses messages.

e. Un site marchand a été piraté et les données personnelles de ses clients ont fuité. Quelles obligations a ce site ?

Correction

a. Droit d'opposition et droit à l'effacement : Lina peut demander au club de cesser d'utiliser ses données et de les supprimer définitivement.

b. Droit d'accès : Mehdi peut demander à Instagram une copie de toutes les données personnelles stockées (via les paramètres du compte : « Télécharger vos données »).

c. Droit de rectification : Sarah peut demander au site de corriger l'information erronée.

d. Droit à la portabilité : Tom peut demander au réseau social de lui fournir ses données dans un format exploitable (ex : archive ZIP), puis exercer son droit à l'effacement pour supprimer son compte.

e. Obligation de notification : le site doit prévenir la CNIL dans les 72 heures et informer les personnes concernées si la fuite présente un risque élevé pour leurs droits. Il risque des sanctions (jusqu'à 4 % du chiffre d'affaires mondial ou 20 millions d'euros).


🎯 Projet final - Analyser un jeu de données réel

Objectif

Mener une analyse complète d'un jeu de données ouvert : de la collecte à la visualisation des résultats.

Consignes

1. Choisissez un jeu de données sur data.gouv.fr (au moins 50 enregistrements et 4 descripteurs).

2. Écrivez un programme Python qui :

  • lit le fichier CSV ;
  • affiche le nombre d'enregistrements et de descripteurs ;
  • effectue au moins un tri, un filtre et un calcul (somme, moyenne, comptage) ;
  • affiche les résultats de manière claire.

3. Rédigez un court rapport (10 lignes max) expliquant :

  • la source des données et leur thème ;
  • les questions posées et les résultats obtenus ;
  • si les données contiennent des informations personnelles et comment le RGPD s'applique.

Barème indicatif

Critère Points
Choix pertinent du jeu de données /3
Programme Python fonctionnel (lecture CSV) /4
Tri, filtre et calcul correctement implémentés /6
Affichage clair des résultats /3
Rapport : analyse critique et lien avec le RGPD /4
Total /20