💻sciences

Comprendre le traitement des données en tables en NSI

9 juin 2026 7 min de lecture

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.DictReader et à 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 int ou float.
  • 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 !

📚 Pour aller plus loin

Questions fréquentes

Qu'est-ce qu'une table de données en NSI ?

En NSI, une table de données est un ensemble structuré en lignes et colonnes. On la représente souvent par une liste de dictionnaires en Python, où chaque dictionnaire correspond à une ligne et les clés aux colonnes.

Comment lire un fichier CSV en Python ?

On utilise le module csv. Par exemple : import csv; with open('fichier.csv', 'r') as f: reader = csv.DictReader(f); for ligne in reader: print(ligne).

Quelle est la différence entre csv.reader et csv.DictReader ?

csv.reader renvoie chaque ligne sous forme de liste, tandis que csv.DictReader utilise la première ligne comme en-tête et renvoie des dictionnaires, ce qui est plus pratique pour accéder aux colonnes par leur nom.

Comment filtrer les lignes d'une table en Python ?

On peut utiliser une compréhension de liste : [ligne for ligne in table if condition]. Par exemple, pour garder les élèves ayant une note > 14 : [e for e in eleves if e['note'] > 14].

Comment calculer la moyenne d'une colonne dans une table ?

Extraire les valeurs de la colonne dans une liste, puis calculer la moyenne : valeurs = [ligne['colonne'] for ligne in table]; moyenne = sum(valeurs) / len(valeurs). Attention à convertir les chaînes en nombres si nécessaire.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
données en tables NSIfichiers CSVPythontraitement de donnéesNSI lycée
Pixel