cours1 min de lecture
Une fois la table en place, comment la rechercher, la filtrer et la trier ? D'abord au tableur, puis avec quelques boucles Python très simples.
programme

Introduction

Une table de données n'a d'intérêt que si l'on sait en extraire une information utile. Vous voulez la moyenne des notes ? La liste des élèves absents en avril ? Les communes de plus de 10 000 habitants ? Tout cela revient à effectuer trois opérations élémentaires sur la table : la recherche, le filtre, le tri.

Le bon réflexe est de commencer au tableur — Calc, Excel, Google Sheets. Tout ce qu'on demande tient dans deux ou trois clics. Ce n'est qu'ensuite, quand on veut automatiser ou aller plus loin, qu'on regarde du côté de Python. Vous ferez les deux dans ce cours.

Trois opérations élémentaires

OpérationQuestion typeRésultat
Recherche« La ligne de Lila Martin existe-t-elle ? »Une ligne (ou rien).
Filtre« Quels élèves ont plus de 15 ans ? »Un sous-ensemble de lignes.
Tri« Classer du plus jeune au plus vieux. »Les mêmes lignes, dans un autre ordre.

À ces trois opérations s'ajoutent les calculs : la moyenne d'une colonne, le maximum, la somme. Et enfin, la fusion de deux tables — par exemple relier la table des élèves à celle des notes. Vous l'aborderez plus en détail en NSI Première.

D'abord, au tableur

Un logiciel comme LibreOffice Calc, Microsoft Excel ou Google Sheets offre une interface visuelle pour traiter une table. Pour répondre à la question « quels élèves ont une moyenne au-dessus de 14 ? », vous n'écrivez pas une ligne de code :

  • Recherche : la fonction Rechercher (Ctrl+F) localise une valeur.
  • Filtre : le menu Données → Filtre (ou Filtre standard) affiche uniquement les lignes qui satisfont un critère (« moyenne > 14 »).
  • Tri : Données → Trier réordonne par une ou plusieurs colonnes.
  • Calculs : formules comme =MOYENNE(B2:B30), =MAX(C:C), =SOMME(D:D).
Le tableur est l'outil parfait pour quelques dizaines à quelques milliers de lignes. C'est par là qu'il faut commencer dans la vraie vie : c'est plus rapide, et on voit tout de suite si la donnée a la bonne tête.

Pour ne garder que les lignes où la colonne « age » vaut plus de 15, quel menu du tableur cherche-t-on ?

Et en Python ?

Quand on veut automatiser un traitement (refaire la même chose chaque mois, traiter cent fichiers d'un coup, croiser deux tables), on bascule sur un langage de programmation. En seconde, on découvre Python.

L'idée est exactement la même qu'au tableur — on filtre, on trie, on calcule — mais cette fois on écrit la recette au lieu de cliquer dans un menu.

Considérez le fichier eleves.csv suivant :

nom,prenom,age,moyenne
Martin,Lila,15,14.5
Bouzid,Idris,16,12.8
Petit,Jade,15,17.2
Dupuis,Maxime,17,9.4
Nguyen,Tien,16,15.7

Pour traiter cette table en Python, on imagine qu'on dispose d'outils prêts à l'emploi : des fonctions qui savent ouvrir le fichier, donner une colonne, parcourir les lignes. Dans la suite du cours, on les écrira en pseudo-code : des noms parlants comme charger_table("eleves.csv") ou obtenir_colonne(table, "moyenne"). Ces fonctions n'existent pas directement en Python — elles représentent ce qu'une bibliothèque pourrait offrir. En Python réel, on utiliserait une bibliothèque comme csv ou pandas — vu en NSI Première.

Pseudo-code : un mélange de Python et de bon sens. Le code n'est pas exécutable tel quel, mais il décrit fidèlement la logique du programme. C'est l'outil idéal pour réfléchir avant d'écrire les détails techniques.

Voici à quoi ressemble notre boîte à outils imaginaire :

Fonction imaginaireCe qu'elle rend
charger_table("eleves.csv")une table : la suite des lignes du fichier
nombre_lignes(table)combien de lignes contient la table (sans l'en-tête)
valeur(ligne, "nom")la valeur stockée dans la colonne « nom » d'une ligne
obtenir_colonne(table, "moyenne")toutes les valeurs d'une colonne, sous forme de liste

Avec ces quatre fonctions, on peut décrire à peu près toutes les opérations de ce cours.

Que rend la fonction imaginaire obtenir_colonne(table, "age") appliquée à notre table d'élèves ?

Parcourir la table

L'opération la plus simple : parcourir la table ligne par ligne, comme on descendrait la feuille du tableur. En pseudo-code Python :

# Pseudo-code : charger_table et valeur sont imaginaires.
table = charger_table("eleves.csv")

for ligne in table:
    print(valeur(ligne, "prenom"), valeur(ligne, "nom"))

Lecture : « pour chaque ligne de la table, afficher son prénom puis son nom ». C'est exactement la même structure que for n in notes: du chapitre SH : on parcourt chaque élément d'une suite, l'un après l'autre.

Les fonctions charger_table(...) et valeur(...) n'existent pas en Python tel quel. Ce sont des noms imaginés pour décrire la logique sans se perdre dans la syntaxe d'une vraie bibliothèque. En NSI Première, vous verrez les outils réels — la pensée, elle, restera identique.

Filtrer avec une boucle for

Filtrer, c'est garder seulement les lignes qui répondent à un critère. La recette en pseudo-code Python ressemble à ceci :

# Pseudo-code : on veut compter les élèves admis (moyenne >= 14).
table = charger_table("eleves.csv")

nombre_admis = 0
for ligne in table:
    if valeur(ligne, "moyenne") >= 14:
        nombre_admis = nombre_admis + 1

print("Nombre d'admis :", nombre_admis)

Lecture :

  • on prépare un compteur nombre_admis à zéro ;
  • on parcourt chaque ligne avec une boucle for ;
  • pour chaque ligne, on teste le critère avec un if ;
  • si le test réussit, on augmente le compteur de 1.
La structure « compteur à zéro + boucle for + if qui incrémente » est l'un des patrons les plus utiles du programme. Vous le réutiliserez à chaque fois que vous voudrez compter combien d'éléments d'une suite vérifient un critère.

Sur notre table de 5 élèves, combien vaut nombre_admis à la fin (moyennes : 14.5, 12.8, 17.2, 9.4, 15.7) ?

Calculer une moyenne — un vrai code exécutable

Pour calculer la moyenne d'une colonne, on n'a plus besoin du pseudo-code : une liste Python simple suffit. C'est exactement ce que vous avez vu en SH4 avec la boucle for n in notes:.

⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

Trois ingrédients suffisent :

  • une variable total qui démarre à zéro ;
  • une boucle for qui ajoute chaque valeur à total ;
  • une division par le nombre de valeurs (5 ici, le nombre d'élèves).
Au tableur, la même chose s'écrit =MOYENNE(D2:D6). Une seule cellule, le résultat apparaît immédiatement. C'est typiquement le cas où le tableur est plus court que le code — Python prend le dessus quand il y a plus que ça à faire (filtrer, croiser, automatiser…).

Sans exécuter le programme, à quoi vaut total après la boucle ?

Trouver le maximum d'une colonne

Même approche pour trouver la meilleure moyenne : on parcourt la liste en gardant en mémoire la plus grande valeur rencontrée jusqu'ici.

⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

À chaque tour de boucle, on compare la valeur courante m au champion provisoire maximum. Si m est plus grande, elle prend la place.

moyennes[0] désigne la première valeur de la liste — ici 14.5. Les listes Python sont numérotées à partir de zéro, exactement comme range(n) qui commence à 0.

Trier : se laisser aider

Trier une liste « à la main » avec un for est possible mais long. Python sait le faire pour vous, et un tableur encore plus vite. Pour notre table, il suffit de demander :

« Trie les élèves par âge croissant. »

Le résultat affiché sera dans l'ordre voulu :

Martin Lila 15 ans
Petit Jade 15 ans
Bouzid Idris 16 ans
Nguyen Tien 16 ans
Dupuis Maxime 17 ans

Ce qui compte ici, c'est de comprendre ce que fait le tri : il réorganise les mêmes lignes selon un descripteur. Le mécanisme exact (comment Python s'y prend en interne, comment on lui dit « trie selon l'âge ») est un peu technique pour cette année — vous le verrez en NSI Première.

Au tableur, c'est immédiat : Données → Trier → Colonne « age » → Croissant. En Python, vous écrirez plus tard une instruction du style trier(table, "age") qui rendra exactement le même résultat.

Récapitulatif des opérations

OpérationAu tableurEn Python (idée)
Parcoursdérouler la feuillefor ligne in table:
Filtremenu Données → Filtrefor + if + compteur ou nouvelle liste
Trimenu Données → Trierdemander à Python (mécanisme vu en NSI 1ère)
Calcul (moyenne, max, somme)=MOYENNE(...), =MAX(...), =SOMME(...)accumuler dans une variable avec for
Charger un CSVFichier → Ouvrirbibliothèque dédiée (vue en NSI 1ère)

Pièges courants

  • Le pseudo-code n'est pas exécutable. Les fonctions charger_table(...), valeur(...), obtenir_colonne(...) n'existent pas en Python tel quel — elles représentent ce qu'une bibliothèque fournit. En NSI Première, vous remplacerez ces noms par les outils réels.
  • Type des données : une moyenne lue dans un fichier brut est parfois du texte. La comparer à un nombre demande une étape de conversion. Cette étape sera vue plus tard ; pour l'instant, on travaille directement avec des nombres dans nos listes Python.
  • Cellules vides : sur un vrai jeu de données, une ligne peut manquer une valeur. Le programme doit alors la sauter ou la signaler — sinon, une division ou une comparaison plante.

Pourquoi écrit-on ici du « pseudo-code » au lieu du vrai Python pour ouvrir un fichier CSV ?

Pour aller plus loin

Quand les tables grossissent ou que les croisements deviennent complexes, on bascule sur des bases de données interrogées en SQL. Vous découvrirez ces outils en NSI Première et Terminale. Le principe reste exactement le même : recherche, filtre, tri, fusion — sur des données structurées.