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.
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
eleves.csv.lyon = [int(e["age"]) for e in table if e["ville"] == "Lyon"]
moyenne = sum(lyon) / len(lyon) # 17.0Attention · 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.
Vocabulaire
★☆☆Dans la table du cours, combien y a-t-il d'enregistrements et de descripteurs ?
Lire une ligne CSV
★☆☆Découper la ligne "Bilal,Lille,16" en liste.
Type des valeurs
★☆☆Quel est le type de table[0]["age"] après lecture avec DictReader ?
Sélection
★☆☆Écrire la compréhension qui sélectionne les élèves de $17$ ans.
Projection
★☆☆Obtenir la liste des villes.
Villes sans doublon
★★☆Obtenir l'ensemble des villes distinctes.
Compter
★★☆Compter le nombre d'élèves par ville dans un dictionnaire.
Tri par âge
★★☆Trier la table par âge décroissant.
Tri par nom
★☆☆Trier la table par ordre alphabétique des noms.
Tri stable
★★★On trie la table par ville. Dans quel ordre apparaissent Alice et Chloé ? Pourquoi ?
Moyenne
★★☆Calculer l'âge moyen de tous les élèves.
Recherche
★★☆Écrire une fonction chercher(table, nom) qui renvoie l'enregistrement de cet élève ou None.
Fusion simple
★★☆On ajoute à la table une seconde table de même structure contenant une ligne déjà présente. Quel problème ?
Supprimer les doublons
★★★Écrire une fonction qui supprime les doublons d'une liste de dictionnaires (même nom).
Jointure
★★★Une table notes contient {"nom":..., "note":...}. Associer à chaque élève de table sa note.
Délimiteur
★☆☆Pourquoi les CSV français utilisent-ils souvent le point-virgule ?
Valeur manquante
★★☆Une ligne vaut "Emma,,17". Que contient le champ ville ? Comment le traiter ?
Âge maximal
★★☆Trouver l'élève le plus âgé avec max.
Écrire un CSV
★★★Comment enregistrer une table (liste de dictionnaires) dans un fichier CSV ?
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.
Vérifier
Avez-vous bien compris ?
Répondez au quiz : la correction s'affiche immédiatement.