⌨ Spécialité NSI · Numérique et sciences informatiques Première Générale · Chapitre 4

Traitement de données en tables

Fichiers CSV, représentation d'une table par une liste de dictionnaires, recherche et sélection de lignes, tri selon une colonne, fusion de tables, contrôle de cohérence et doublons.

1. Données en table

Définition

Une table est un ensemble d'enregistrements (lignes) ayant les mêmes descripteurs (colonnes). Le format CSV (comma-separated values) stocke une table dans un fichier texte : une ligne par enregistrement, les valeurs séparées par un délimiteur (virgule ou point-virgule), la première ligne donnant souvent les descripteurs.

fichier eleves.csvnom,ville,ageAlice,Lyon,17Bilal,Lille,16Chloé,Lyon,17David,Nantes,18lecturenomvilleageAliceLyon17BilalLille16ChloéLyon17DavidNantes18ligne = enregistrement ; colonne = descripteur
Un fichier CSV (valeurs séparées par des virgules) et la table qu'il représente.

Exemple · Lire un CSV en Python

import csv
with open("eleves.csv", encoding="utf-8") as f:
    table = list(csv.DictReader(f))
# table[0] -> {'nom': 'Alice', 'ville': 'Lyon', 'age': '17'}

Attention : les valeurs lues sont des chaînes ; on convertit avec int(...) si besoin.

2. Recherche et sélection

Propriété · Sélectionner

Par compréhension : [e for e in table if e["ville"] == "Lyon"]. Projeter une colonne : [e["nom"] for e in table]. Tester l'existence : any(e["nom"] == "Bilal" for e in table).

3. Tri et fusion

Propriété · Trier selon une colonne

sorted(table, key=lambda e: int(e["age"])) trie par âge croissant ; reverse=True pour l'ordre décroissant. Le tri de Python est stable : deux lignes égales pour la clé gardent leur ordre.

Méthode · Fusionner deux tables

Si deux tables ont les mêmes descripteurs, on les concatène (t1 + t2) en surveillant les doublons. Si elles partagent une colonne commune (par exemple un identifiant), on associe les lignes correspondantes (jointure).

Activité · Statistiques sur un fichier

MatérielPython, fichier eleves.csv.
ConsigneCalculer l'âge moyen des élèves de Lyon.
Résultat
lyon = [int(e["age"]) for e in table if e["ville"] == "Lyon"]
moyenne = sum(lyon) / len(lyon)   # 17.0
BilanSélection, projection puis agrégation : c'est le schéma de base de l'analyse de données.

Attention · Qualité des données

Vérifier les valeurs manquantes, les formats (dates, nombres), les doublons et les incohérences avant toute analyse.

S'entraîner

Exercices corrigés

🎓 20 exercices corrigés et un quiz vous attendent dans ce chapitre.

Créez votre compte gratuit pour voir les corrections, faire les quiz et suivre votre progression.

1

Vocabulaire

★☆☆

Dans la table du cours, combien y a-t-il d'enregistrements et de descripteurs ?

🔒 Correction réservée aux membres Créer un compte gratuit →
2

Lire une ligne CSV

★☆☆

Découper la ligne "Bilal,Lille,16" en liste.

🔒 Correction réservée aux membres Créer un compte gratuit →
3

Type des valeurs

★☆☆

Quel est le type de table[0]["age"] après lecture avec DictReader ?

🔒 Correction réservée aux membres Créer un compte gratuit →
4

Sélection

★☆☆

Écrire la compréhension qui sélectionne les élèves de $17$ ans.

🔒 Correction réservée aux membres Créer un compte gratuit →
6

Villes sans doublon

★★☆

Obtenir l'ensemble des villes distinctes.

🔒 Correction réservée aux membres Créer un compte gratuit →
7

Compter

★★☆

Compter le nombre d'élèves par ville dans un dictionnaire.

🔒 Correction réservée aux membres Créer un compte gratuit →
9

Tri par nom

★☆☆

Trier la table par ordre alphabétique des noms.

🔒 Correction réservée aux membres Créer un compte gratuit →
10

Tri stable

★★★

On trie la table par ville. Dans quel ordre apparaissent Alice et Chloé ? Pourquoi ?

🔒 Correction réservée aux membres Créer un compte gratuit →
12

Recherche

★★☆

Écrire une fonction chercher(table, nom) qui renvoie l'enregistrement de cet élève ou None.

🔒 Correction réservée aux membres Créer un compte gratuit →
13

Fusion simple

★★☆

On ajoute à la table une seconde table de même structure contenant une ligne déjà présente. Quel problème ?

🔒 Correction réservée aux membres Créer un compte gratuit →
14

Supprimer les doublons

★★★

Écrire une fonction qui supprime les doublons d'une liste de dictionnaires (même nom).

🔒 Correction réservée aux membres Créer un compte gratuit →
15

Jointure

★★★

Une table notes contient {"nom":..., "note":...}. Associer à chaque élève de table sa note.

🔒 Correction réservée aux membres Créer un compte gratuit →
16

Délimiteur

★☆☆

Pourquoi les CSV français utilisent-ils souvent le point-virgule ?

🔒 Correction réservée aux membres Créer un compte gratuit →
17

Valeur manquante

★★☆

Une ligne vaut "Emma,,17". Que contient le champ ville ? Comment le traiter ?

🔒 Correction réservée aux membres Créer un compte gratuit →
19

Écrire un CSV

★★★

Comment enregistrer une table (liste de dictionnaires) dans un fichier CSV ?

🔒 Correction réservée aux membres Créer un compte gratuit →
20

Vrai ou faux

★★☆

a) Un CSV est un fichier texte. b) sorted modifie la table d'origine. c) La première ligne d'un CSV contient souvent les descripteurs.

🔒 Correction réservée aux membres Créer un compte gratuit →

Vérifier

Avez-vous bien compris ?

Répondez au quiz : la correction s'affiche immédiatement.