Tu as déjà manipulé un fichier Excel ou un tableau de notes ? En NSI, on fait la même chose… mais avec du code. Le traitement des données en tables est une compétence clé du programme, que ce soit en Seconde SNT ou en spécialité NSI en Première et Terminale. Dans cet article, on va voir comment lire, filtrer et analyser des données structurées en tables, notamment à partir de fichiers CSV. Prêt à devenir un as du data wrangling ? C'est parti !
Qu'est-ce qu'une table de données ?
Une table de données, c'est tout simplement un ensemble organisé en lignes et en colonnes. Chaque colonne représente un attribut (par exemple : nom, âge, note), et chaque ligne correspond à un enregistrement (une personne, un objet, un événement). En NSI, on représente souvent ces tables sous forme de listes de dictionnaires ou avec le module csv de Python.
Par exemple, une table d'élèves pourrait ressembler à ça en Python :
eleves = [
{"nom": "Alice", "age": 17, "note": 15},
{"nom": "Bob", "age": 16, "note": 12},
{"nom": "Charlie", "age": 18, "note": 18}
]Chaque dictionnaire est une ligne, et les clés sont les colonnes. Simple, non ?
Lire un fichier CSV en Python
Le format CSV (Comma-Separated Values) est le format le plus courant pour échanger des données en tables. Chaque ligne du fichier correspond à une ligne de la table, et les valeurs sont séparées par des virgules (ou d'autres séparateurs).
Pour lire un fichier CSV en Python, on utilise le module csv ou la bibliothèque pandas. Mais en NSI, on privilégie le module csv pour rester dans les bases. Voici comment faire :
import csv
with open('eleves.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for ligne in reader:
print(ligne['nom'], ligne['note'])Le DictReader est super pratique : il utilise la première ligne du fichier pour créer les clés des dictionnaires. Ainsi, chaque ligne devient un dictionnaire comme on l'a vu plus haut.
Et si le séparateur n'est pas une virgule ?
Parfois, le fichier utilise un point-virgule (surtout en français). Pas de panique : il suffit de préciser le délimiteur :
reader = csv.DictReader(f, delimiter=';')Tu vois, c'est flexible.
Manipuler les données d'une table
Une fois les données chargées en mémoire, tu peux les manipuler comme n'importe quelle liste de dictionnaires. Voici quelques opérations classiques :
Filtrer les lignes
Tu veux les élèves qui ont une note supérieure à 14 ? Facile :
bons_eleves = [e for e in eleves if e['note'] > 14]
print(bons_eleves)Tu obtiens une nouvelle table (liste) avec seulement les lignes qui satisfont la condition.
Calculer une statistique
Pour calculer la moyenne des notes :
notes = [e['note'] for e in eleves]
moyenne = sum(notes) / len(notes)
print(moyenne)Tu peux aussi compter le nombre d'élèves, trouver le maximum, etc.
Trier la table
Pour trier les élèves par ordre alphabétique :
eleves_tries = sorted(eleves, key=lambda e: e['nom'])Ou par note décroissante :
eleves_tries = sorted(eleves, key=lambda e: e['note'], reverse=True)La fonction sorted renvoie une nouvelle liste triée sans modifier l'originale.
Cas concret : analyser un fichier CSV de notes
Imaginons un fichier notes.csv avec les colonnes : nom, classe, note. Voici un programme complet qui lit le fichier, calcule la moyenne par classe et affiche les résultats.
import csv
# Lecture du fichier
with open('notes.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
donnees = list(reader) # on convertit en liste pour pouvoir la réutiliser
# Conversion des notes en float (car lues comme chaînes)
for ligne in donnees:
ligne['note'] = float(ligne['note'])
# Calcul de la moyenne par classe
classes = {}
for ligne in donnees:
classe = ligne['classe']
if classe not in classes:
classes[classe] = []
classes[classe].append(ligne['note'])
for classe, notes in classes.items():
moyenne = sum(notes) / len(notes)
print(f"Classe {classe} : moyenne = {moyenne:.2f}")Ce genre de script, tu pourrais le retrouver dans un exercice de bac NSI. Maîtrise-le !
Conseils pour le bac NSI et les révisions
Le traitement des données en tables est un thème récurrent en NSI, notamment dans l'épreuve pratique et l'épreuve écrite. Voici quelques conseils :
- Entraîne-toi à lire des fichiers CSV avec
csv.DictReaderet à gérer les erreurs (fichier inexistant, mauvais encodage). - Manipule des listes de dictionnaires : filtrage, tri, agrégation. C'est la base.
- Utilise les compréhensions de listes pour écrire du code concis.
- N'oublie pas de convertir les types : les nombres lus depuis un CSV sont des chaînes, pense à les convertir en
intoufloat. - Révise les fonctions
sorted,filter,map(même si on peut tout faire avec des boucles).
Pour approfondir, consulte le cours NSI et les exercices sur le site. Et si tu veux voir comment interroger une base de données relationnelle, jette un œil à la page sur SQL.
En complément, tu peux aussi trouver des fiches de révision sur AlloBac et AlloLycée.
Conclusion
Le traitement des données en tables est un super pouvoir en NSI. Avec Python et les fichiers CSV, tu peux analyser des données réelles, automatiser des calculs et même créer des visualisations. Continue à t'entraîner, et bientôt tu pourras manipuler des tables les yeux fermés. Et souviens-toi : en NSI, la pratique est la clé. Alors, ouvre ton IDE et code !
