Je réserve ici
Sciences numériques et technologie (SNT) 2ⁿᵈᵉ

Ressources · 2ⁿᵈᵉ · Sciences numériques et technologie (SNT)

Traitement et visualisation des données

Rechercher, trier, filtrer, croiser des tables et représenter des données, avec un tableur ou Python (SNT de 2nde)

À propos de cette page
Ces exercices corrigés sur « Traitement et visualisation des données » en seconde permettent de s'entraîner et de vérifier ses acquis en sciences numériques et technologie (SNT). Ils suivent le programme officiel de seconde et sont classés par difficulté (facile, moyen, difficile). Au programme : L'essentiel, Rechercher et filtrer, Trier et calculer, Croiser deux tables. Chaque exercice est suivi d'une correction rédigée, à déplier une fois la recherche faite au brouillon. Cet entraînement aide à mémoriser les méthodes, repérer ses erreurs et gagner en confiance avant un contrôle. Exercices gratuits proposés par un professeur particulier à Marseille pour réviser sciences numériques et technologie (SNT) en seconde.

Exercices corrigés, classés du plus simple au plus complexe. Cherche d'abord seul au brouillon, puis déplie la correction détaillée pour vérifier ta méthode et tes raisonnements.

Exercice 1 — Lire, filtrer et trier une table

Facile

Voici un extrait du registre des emprunts du CDI d'un lycée.

TitreGenreAnnéeEmprunts
Le Jardin d'hiverRoman201114
Code secretPolicier201923
Atlas des volcansDocumentaire20169
La Nuit du portPolicier200817
Mille étoilesRoman202112

  1. a) Combien cette table compte-t-elle d'enregistrements et de descripteurs ? Citer les descripteurs.
  2. b) Quelles lignes restent après le filtre « Genre = Policier » ?
  3. c) Donner l'ordre des titres après un tri par année croissante.
  4. d) Calculer le nombre total d'emprunts, puis le nombre moyen d'emprunts par livre.

a) Chaque ligne décrit un livre : il y a 5 enregistrements. Chaque colonne est un descripteur : il y en a 4, Titre, Genre, Année et Emprunts.

b) On ne garde que les lignes dont la valeur du descripteur Genre est « Policier » : Code secret et La Nuit du port. Les trois autres lignes sont écartées (masquées au tableur).

c) On range les lignes selon l'année, de la plus ancienne à la plus récente : 2008, 2011, 2016, 2019, 2021. L'ordre est donc La Nuit du port, Le Jardin d'hiver, Atlas des volcans, Code secret, Mille étoiles. Chaque ligne se déplace avec toutes ses valeurs.

d) Total : 14 + 23 + 9 + 17 + 12 = 75 emprunts. Moyenne : 75 ÷ 5 = 15 emprunts par livre.

Exercice 2 — Formules de tableur sur des relevés météo

Facile

Une station météo relève chaque jour d'une semaine la température maximale (colonne B, en °C) et les précipitations (colonne C, en mm). Les jours sont en A2:A8.

A : JourB : Temp. max (°C)C : Pluie (mm)
Lundi18,40
Mardi21,70
Mercredi16,23,5
Jeudi14,98,1
Vendredi17,31,2
Samedi22,60
Dimanche19,80

  1. a) Écrire la formule qui donne la température maximale de la semaine, et donner son résultat.
  2. b) Écrire la formule qui donne la moyenne des températures maximales, et calculer son résultat.
  3. c) Écrire une formule qui compte les jours sans pluie, et donner son résultat.
  4. d) Calculer le total des précipitations de la semaine.

a) =MAX(B2:B8) renvoie la plus grande valeur de la plage : 22,6 °C (samedi).

b) =MOYENNE(B2:B8). Somme : 18,4 + 21,7 + 16,2 + 14,9 + 17,3 + 22,6 + 19,8 = 130,9. Moyenne : 130,9 ÷ 7 = 18,7 °C.

c) Un jour sans pluie a la valeur 0 en colonne C : =NB.SI(C2:C8;0) compte ces cellules. Lundi, mardi, samedi et dimanche : 4 jours.

d) =SOMME(C2:C8) : 0 + 0 + 3,5 + 8,1 + 1,2 + 0 + 0 = 12,8 mm.

Exercice 3 — Choisir la bonne représentation

Facile

Pour chaque situation, choisir le type de graphique le plus adapté et justifier en une phrase.

  1. a) Le nombre d'abonnés d'une salle de sport, relevé chaque mois pendant un an.
  2. b) La répartition des 1 240 élèves d'un lycée selon leur mode de transport principal.
  3. c) Le nombre de médailles obtenues par cinq pays lors d'une compétition.
  4. d) La taille et la pointure de 30 élèves, pour savoir si ces deux grandeurs sont liées.

a) Il s'agit d'une évolution dans le temps : on trace une courbe, les mois en abscisse et le nombre d'abonnés en ordonnée. Les points reliés montrent les hausses et les baisses.

b) On veut les parts d'un tout (les 1 240 élèves) : un diagramme circulaire convient, chaque secteur ayant un angle proportionnel à l'effectif du mode de transport.

c) On compare des catégories sans ordre naturel : un diagramme en barres, avec un axe des valeurs partant de 0.

d) On étudie le lien entre deux descripteurs numériques d'un même objet : un nuage de points, chaque élève étant un point (taille, pointure). Si les points s'alignent grossièrement, les deux grandeurs varient ensemble.

Exercice 4 — Stations de vélos en libre-service

Moyen

Un programme Python décrit cinq stations de vélos :

stations = [
    {'nom': 'Gare', 'velos': 12, 'places': 3},
    {'nom': 'Mairie', 'velos': 4, 'places': 11},
    {'nom': 'Port', 'velos': 0, 'places': 15},
    {'nom': 'Lycée', 'velos': 7, 'places': 5},
    {'nom': 'Stade', 'velos': 9, 'places': 2}
]
vides = []
for s in stations:
    if s['velos'] == 0:
        vides.append(s['nom'])
print(vides)

  1. a) Qu'affiche ce programme ? Quelle opération sur la table réalise-t-il ?
  2. b) Écrire une instruction qui construit la liste des noms des stations ayant au moins 5 places libres, et donner cette liste.
  3. c) Un élève écrit la condition s['places'] > 5 pour la question b). Expliquer son erreur et ses conséquences.
  4. d) Écrire une instruction qui calcule le nombre total de vélos disponibles, et donner le résultat.

a) La boucle parcourt les stations et ne retient que celles dont la valeur de velos vaut 0 : c'est un filtre. Seule la station Port est concernée, le programme affiche ['Port'].

b) « Au moins 5 » se traduit par >= 5 :
dispo = [s['nom'] for s in stations if s['places'] >= 5]
Mairie (11), Port (15) et Lycée (5) vérifient la condition : ['Mairie', 'Port', 'Lycée'].

c) La condition > 5 signifie « strictement plus de 5 » : elle exclut la valeur 5. La station Lycée, qui a exactement 5 places, disparaît et l'élève obtient ['Mairie', 'Port'], soit 2 stations au lieu de 3. L'erreur porte sur le cas limite.

d) total = sum([s['velos'] for s in stations]). Calcul : 12 + 4 + 0 + 7 + 9 = 32 vélos.

Exercice 5 — Un tri qui ne marche pas

Moyen

Un programme lit dans un fichier CSV les meilleurs scores de quatre joueurs et obtient la liste scores = ['87', '105', '9', '64'].

  1. a) Quel est le type des éléments de cette liste ? Justifier.
  2. b) Que renvoie sorted(scores) ? Expliquer ce résultat.
  3. c) Écrire une instruction qui produit la liste des scores sous forme de nombres entiers, triés par ordre croissant, et donner le résultat.
  4. d) Écrire une instruction qui donne le classement par score décroissant, et donner le résultat.

a) Chaque élément est écrit entre apostrophes : ce sont des chaînes de caractères (type str). C'est normal, car un fichier CSV ne contient que du texte.

b) Python compare les chaînes caractère par caractère, selon l'ordre des caractères : il compare d'abord les premiers chiffres, '1' < '6' < '8' < '9'. On obtient ['105', '64', '87', '9'] : c'est un ordre alphabétique, pas un ordre numérique. '9' est placé en dernier car son premier caractère est le plus grand.

c) On convertit chaque chaîne avec int puis on trie :
sorted([int(x) for x in scores]) renvoie [9, 64, 87, 105].

d) On ajoute reverse=True :
sorted([int(x) for x in scores], reverse=True) renvoie [105, 87, 64, 9].

Exercice 6 — Croiser les élèves et les options

Moyen

Deux tables sont extraites du logiciel de vie scolaire.
Table Élèves

NomClasseCode option
Inès2nde 3LAT
Hugo2nde 1SI
Maëlle2nde 3EPS
Tom2nde 2LAT
Sacha2nde 1CAV
Table Options
CodeIntituléSalle
SISciences de l'ingénieurA04
LATLatinB12
EPSÉducation physique renforcéeGymnase

  1. a) Quel descripteur permet de croiser les deux tables ?
  2. b) Construire la table obtenue en ajoutant à chaque élève l'intitulé et la salle de son option.
  3. c) Quels élèves ont cours en salle B12 ?
  4. d) Que se passe-t-il pour Sacha ? Proposer une façon de traiter ce cas.

a) Le descripteur commun est le code de l'option : « Code option » dans la table Élèves et « Code » dans la table Options contiennent les mêmes valeurs (LAT, SI, EPS). Les noms des colonnes peuvent différer, ce sont les valeurs qui doivent correspondre.

b) Pour chaque élève, on cherche son code dans la table Options et on recopie l'intitulé et la salle :

NomClasseCodeIntituléSalle
Inès2nde 3LATLatinB12
Hugo2nde 1SISciences de l'ingénieurA04
Maëlle2nde 3EPSÉducation physique renforcéeGymnase
Tom2nde 2LATLatinB12
Sacha2nde 1CAV??

c) On filtre la table fusionnée sur « Salle = B12 » : Inès et Tom, tous deux inscrits en latin.

d) Le code CAV n'existe pas dans la table Options : la ligne de Sacha n'a aucune correspondance, son intitulé et sa salle restent vides. On peut soit écarter la ligne (la table fusionnée n'a alors que 4 lignes), soit la conserver en la signalant, puis compléter la table Options avec l'option manquante. Il ne faut surtout pas inventer une salle.

Exercice 7 — Nettoyer les réponses d'un sondage

Moyen

Un formulaire en ligne demande aux élèves leur temps d'écran quotidien, en heures. Le fichier exporté contient :

PrénomTemps d'écran
Lina3,5
Yanis2 h
Lina3,5
Chloé
Adam4.25
Noé1,75

  1. a) Relever les quatre défauts de cette table qui empêchent un calcul correct.
  2. b) Écrire la table nettoyée.
  3. c) Montrer que le temps d'écran moyen vaut 2,875 h, puis le convertir en heures et minutes.
  4. d) Un élève calcule la moyenne sur les six lignes en remplaçant la case vide par 0. Quel résultat obtient-il ? Expliquer pourquoi il est faux.

a) 1) La ligne de Lina apparaît deux fois : c'est un doublon. 2) La réponse de Chloé est une case vide (valeur manquante). 3) « 2 h » contient une unité dans la case : ce n'est pas un nombre pour le tableur. 4) « 4.25 » utilise un point décimal alors que les autres valeurs utilisent la virgule : format hétérogène.

b) On supprime le doublon, on écarte la ligne vide (on ne connaît pas la réponse de Chloé) et on harmonise les nombres : Lina 3,5 ; Yanis 2 ; Adam 4,25 ; Noé 1,75.

c) Somme : 3,5 + 2 + 4,25 + 1,75 = 11,5. Il reste 4 valeurs, donc moyenne = 11,5 ÷ 4 = 2,875 h. Or 0,875 × 60 = 52,5 min, soit 2 h 52 min 30 s.

d) Il obtient (3,5 + 2 + 3,5 + 0 + 4,25 + 1,75) ÷ 6 = 15 ÷ 6 = 2,5 h. C'est faux pour deux raisons : Lina est comptée deux fois, et Chloé n'a pas déclaré 0 h, sa réponse est inconnue. Une case vide n'est pas un zéro : la moyenne est tirée vers le bas.

Exercice 8 — Fréquentation d'un réseau de transport

Difficile

Document 1. Données ouvertes (fictives) d'un réseau urbain : validations de titres de transport pendant une semaine.

LigneTypeValidationsLongueur (km)
L1Tram58 34012,4
L2Bus21 8709,6
L3Bus14 20515,2
L4Tram46 1108,9
L5Bus9 4806,1
Document 2. Dans son bulletin, la mairie publie un diagramme en barres des validations des trois lignes de bus. L'axe vertical commence à 9 000. La barre de L2 paraît plus de vingt fois plus haute que celle de L5.

  1. 1. Appliquer le filtre « Type = Bus » et calculer le nombre total de validations des bus, puis celui des trams.
  2. 2. Calculer la part des validations réalisées en tram, en pourcentage arrondi au dixième.
  3. 3. Calculer pour chaque ligne le nombre de validations par kilomètre de ligne (arrondi au dixième), puis classer les lignes par ordre décroissant de ce nombre.
  4. 4. Comparer ce classement avec le classement selon le nombre brut de validations. Quelles lignes changent de place ?
  5. 5. Expliquer pourquoi le graphique du document 2 est trompeur, en comparant le rapport apparent et le rapport réel des validations de L2 et L5.
  6. 6. La mairie veut renforcer en priorité la ligne de bus la plus chargée au kilomètre. Laquelle choisir ? Rédiger une réponse argumentée.

1. Le filtre garde L2, L3 et L5. Bus : 21 870 + 14 205 + 9 480 = 45 555 validations. Trams (L1 et L4) : 58 340 + 46 110 = 104 450 validations.

2. Total : 45 555 + 104 450 = 150 005. Part du tram : 104 450 ÷ 150 005 × 100 ≈ 69,6 %. Près de sept validations sur dix se font en tram.

3. On divise les validations par la longueur :
L1 : 58 340 ÷ 12,4 ≈ 4 704,8 ; L2 : 21 870 ÷ 9,6 ≈ 2 278,1 ; L3 : 14 205 ÷ 15,2 ≈ 934,5 ; L4 : 46 110 ÷ 8,9 ≈ 5 180,9 ; L5 : 9 480 ÷ 6,1 ≈ 1 554,1.
Classement décroissant : L4, L1, L2, L5, L3.

4. Selon le nombre brut, l'ordre est L1, L4, L2, L3, L5. Le calcul par kilomètre inverse L1 et L4, ainsi que L3 et L5 ; seule L2 garde sa 3e place. Chaque ligne ne bouge que d'un rang, mais le changement le plus parlant concerne L3, qui passe de la 4e à la dernière place : elle a beaucoup de validations seulement parce qu'elle est très longue (15,2 km). Un indicateur rapporté à la taille change la conclusion.

5. Avec un axe partant de 9 000, les hauteurs des barres sont proportionnelles à « validations − 9 000 » : L2 → 12 870 et L5 → 480. Rapport apparent : 12 870 ÷ 480 ≈ 26,8. Rapport réel : 21 870 ÷ 9 480 ≈ 2,3. Le graphique multiplie l'écart visuel par plus de dix : c'est un axe tronqué. Pour un diagramme en barres, l'axe doit commencer à 0.

6. Parmi les bus, les validations par kilomètre valent 2 278,1 (L2), 1 554,1 (L5) et 934,5 (L3). La ligne la plus chargée au kilomètre est donc L2. Il faut écarter l'argument du nombre brut, qui avantage les lignes longues, et celui du graphique du document 2, qui déforme les écarts. On peut nuancer : une semaine de données ne suffit pas, il faudrait vérifier sur plusieurs semaines et tenir compte des heures de pointe.

Exercice 9 — Compteurs de vélos : un programme à corriger

Difficile

Document 1. Début du fichier comptages.csv (séparateur point-virgule) :

compteur;jour;passages
Quai;lundi;452
Quai;mardi;387
Pont;lundi;1205
Pont;mardi;96
Parc;lundi;618
Parc;mardi;274
Document 2. Programme écrit pour lister les relevés de plus de 400 passages :
import csv
fichier = open('comptages.csv', encoding='utf-8')
lecteur = csv.DictReader(fichier, delimiter=';')
forts = []
for ligne in lecteur:
    if ligne['passages'] > '400':
        forts.append(ligne['compteur'] + ' ' + ligne['jour'])
print(forts)

  1. 1. Donner les descripteurs et le nombre d'enregistrements du fichier.
  2. 2. Quelle liste le programme devrait-il afficher ?
  3. 3. Le programme affiche en réalité ['Quai lundi', 'Pont mardi', 'Parc lundi']. Expliquer l'erreur, en justifiant pour les deux relevés mal classés.
  4. 4. Corriger la ligne fautive.
  5. 5. Calculer le total des passages de chaque compteur sur les deux jours et classer les compteurs par ordre décroissant.
  6. 6. Calculer le nombre moyen de passages par relevé, arrondi à l'unité.

1. La première ligne donne les descripteurs : compteur, jour, passages. Les lignes suivantes sont les enregistrements : il y en a 6.

2. Les relevés strictement supérieurs à 400 sont 452 (Quai, lundi), 1 205 (Pont, lundi) et 618 (Parc, lundi). Affichage attendu : ['Quai lundi', 'Pont lundi', 'Parc lundi'].

3. csv.DictReader lit des chaînes de caractères : ligne['passages'] vaut par exemple '1205' et non 1205, et la condition compare deux chaînes. Python compare alors caractère par caractère. Pour '1205', le premier caractère '1' est avant '4' : '1205' > '400' est faux, et ce relevé pourtant élevé est oublié. Pour '96', '9' est après '4' : '96' > '400' est vrai, et un relevé de 96 passages est retenu à tort. Les autres comparaisons donnent le bon résultat par hasard (même nombre de chiffres).

4. On convertit la valeur en entier et on compare à un nombre :
if int(ligne['passages']) > 400:

5. Quai : 452 + 387 = 839 ; Pont : 1 205 + 96 = 1 301 ; Parc : 618 + 274 = 892. Classement : Pont (1 301), Parc (892), Quai (839). Le compteur Pont, oublié par le programme erroné, est en réalité le plus fréquenté.

6. Total : 839 + 1 301 + 892 = 3 032 passages pour 6 relevés. Moyenne : 3 032 ÷ 6 ≈ 505,3, soit environ 505 passages par relevé.

Exercice 10 — Bornes de recharge : quelle commune est la mieux équipée ?

Difficile

Document 1. Population de quatre communes (données fictives).

CommuneCodeHabitants
Valmont0148 600
Brisac0212 350
Lornay0327 900
Saint-Aubel047 840
Document 2. Nombre de bornes de recharge pour véhicules électriques, extrait d'un autre fichier.
CodeBornes
0173
0351
0419
0222
Document 3. Un article affirme : « Valmont est de loin la commune la mieux équipée, avec 73 bornes. »

  1. 1. Quel descripteur permet de croiser les documents 1 et 2 ? Pourquoi ne peut-on pas simplement recopier la colonne Bornes à côté du document 1 ?
  2. 2. Construire la table fusionnée Commune, Habitants, Bornes.
  3. 3. Montrer que Saint-Aubel dispose d'environ 24,2 bornes pour 10 000 habitants, puis calculer cet indicateur pour les trois autres communes (arrondi au dixième).
  4. 4. Discuter l'affirmation du document 3.
  5. 5. Quel graphique choisir pour comparer l'indicateur de la question 3 entre les communes ? Préciser une règle à respecter.
  6. 6. Dans le tableur, la table fusionnée occupe A1:C5 (Habitants en B, Bornes en C). Écrire la formule à placer en D2 puis à recopier vers le bas pour obtenir l'indicateur.

1. Le descripteur commun est le Code de la commune. Les lignes du document 2 ne sont pas dans le même ordre que celles du document 1 (01, 03, 04, 02) : recopier la colonne telle quelle attribuerait à Brisac les 51 bornes de Lornay. Il faut associer les lignes par la valeur du code.

2.

CommuneHabitantsBornes
Valmont48 60073
Brisac12 35022
Lornay27 90051
Saint-Aubel7 84019

3. Indicateur = bornes ÷ habitants × 10 000. Saint-Aubel : 19 ÷ 7 840 × 10 000 = 190 000 ÷ 7 840 ≈ 24,23, soit environ 24,2 bornes pour 10 000 habitants.
Valmont : 730 000 ÷ 48 600 ≈ 15,0 ; Brisac : 220 000 ÷ 12 350 ≈ 17,8 ; Lornay : 510 000 ÷ 27 900 ≈ 18,3.

4. L'article compare des nombres bruts : Valmont a bien le plus de bornes (73), mais c'est aussi la commune la plus peuplée. Rapporté à la population, Valmont est au contraire la moins bien équipée (15,0), et Saint-Aubel la mieux équipée (24,2). L'affirmation est donc fausse : pour comparer des communes de tailles différentes, il faut un indicateur rapporté au nombre d'habitants.

5. On compare quatre catégories (les communes) : un diagramme en barres, une barre par commune, avec un titre, l'unité « bornes pour 10 000 habitants » et un axe des valeurs qui commence à 0, sans quoi les écarts seraient exagérés.

6. En D2 : =C2/B2*10000, puis on recopie jusqu'en D5 : les références s'adaptent à chaque ligne (C3/B3, C4/B4…). On peut arrondir avec =ARRONDI(C2/B2*10000;1).

Bloqué sur ce chapitre ?

Moi c'est Ben, j'ai créé ce site pour aider le plus d'élèves possible, partout en France. Je peux aussi reprendre avec toi ce qui coince en cours particulier : en visio, ou à domicile si tu es à Marseille.

Soutien scolaire à Marseille · Cours particuliers au lycée · Aide aux devoirs