NSI · premiere speGratuit
Chapitre 3 — Traitement de données en tables
L'essentiel en 30 secondes
Les données tabulaires sont stockées dans des fichiers CSV (valeurs séparées par des virgules). En Python, on les manipule avec le module csv. Chaque ligne devient un dictionnaire. On sait rechercher, filtrer, trier et fusionner des tables. Le tri se fait avec sorted() et une clé (key).
Notions clés
- Fichier CSV
- Fichier texte où chaque ligne est un enregistrement et les valeurs sont séparées par un délimiteur (virgule, point-virgule…).
- Table (liste de dictionnaires)
- En Python, une table est représentée par une liste de dictionnaires, chaque dictionnaire étant une ligne.
- Recherche / Filtrage
- Sélectionner les lignes qui vérifient un critère. Se fait par compréhension de liste.
- Tri
- Ordonner les lignes selon un critère avec sorted(table, key=...) ou table.sort(key=...).
- Fusion de tables
- Combiner deux tables partageant un attribut commun (équivalent d'une jointure en base de données).
Formules
Lecture d'un CSV avec csv.DictReader
Condition : Chaque ligne est un dictionnaire {en-tête: valeur}
Filtrage par compréhension
Condition : Attention : les valeurs CSV sont des chaînes, penser à convertir avec int()
Tri par attribut
Condition : Renvoie une nouvelle liste triée. reverse=True pour l'ordre décroissant.
Fusion (jointure)
Condition : Fusionne deux tables sur un attribut commun. Complexité .
A retenir
- Les valeurs lues dans un CSV sont TOUJOURS des chaînes de caractères. Il faut convertir explicitement avec int() ou float().
- sorted() renvoie une NOUVELLE liste triée ; .sort() trie EN PLACE (modifie la liste originale).
- Une fusion de tables revient à croiser deux tables sur un attribut commun : c'est une double boucle.
Erreurs classiques
Erreur : Comparer des chaînes comme des nombres : '9' > '10' vaut True (ordre lexicographique)
Correction : Convertir en int avant de comparer : int(ligne['age']) > 10
Erreur : Oublier de fermer le fichier CSV après ouverture
Correction : Toujours utiliser with open(...) as f: qui ferme automatiquement le fichier
Erreur : Trier sans key : sorted(table) plante sur une liste de dictionnaires
Correction : Toujours spécifier key=lambda l: l['attribut'] pour indiquer le critère de tri
Astuce méthode
Au , écris d'abord ta compréhension de liste EN FRANÇAIS avant de coder : 'Je veux toutes les lignes où l'âge est supérieur for table .