Données en tables
Thème du programme
Données structurées et leur traitement
Objectifs de la séquence
Les élèves doivent être capables de :
- comprendre la structure d'une table de données
- identifier attributs, enregistrements et clés
- manipuler une table en Python
- filtrer et trier des données
- comprendre et réaliser une fusion de tables
Structure d'une table de données
Notions
Une table est composée :
- de colonnes appelées attributs
- de lignes appelées enregistrements
Chaque attribut possède :
- un nom
- un domaine de valeurs
Une clé primaire est un attribut qui permet d'identifier de façon unique chaque enregistrement.
Exemple de table
| id | nom | âge | ville |
|---|---|---|---|
| 1 | Alice | 17 | Lyon |
| 2 | Hugo | 16 | Saint-Étienne |
| 3 | Lina | 17 | Lyon |
| 4 | Tom | 16 | Grenoble |
Questions
- Combien la table contient-elle d'attributs ?
- Combien contient-elle d'enregistrements ?
- Quel attribut peut servir de clé primaire ?
- Peut-on avoir deux élèves avec le même nom ?
Représentation d'une table en Python
Une table peut être représentée par une liste de dictionnaires.
eleves = [
{"id":1, "nom":"Alice", "age":17, "ville":"Lyon"},
{"id":2, "nom":"Hugo", "age":16, "ville":"Saint-Étienne"},
{"id":3, "nom":"Lina", "age":17, "ville":"Lyon"},
{"id":4, "nom":"Tom", "age":16, "ville":"Grenoble"}
]
Activitées
rappels concernant les dictionnaires
rappels types construits : Dictionnaires
Exercice 1
La table étant sous la forme d'une liste de dictionnaires , proposez un script python qui permet d'afficher tous les noms des élèves. Soit :
Notes
Alice
Hugo
Lina
Tom
Exercice 2
La table étant sous la forme d'une liste de dictionnaires , proposez un script python qui permet d'afficher les élèves qui habitent à lyon soit :
Notes
{'id': 1, 'nom': 'Alice', 'age': 17, 'ville': 'Lyon'}
{'id': 3, 'nom': 'Lina', 'age': 17, 'ville': 'Lyon'}
Exercice 3
La table étant sous la forme d'une liste de dictionnaires , proposez un script python qui permet de compter les élèves de 16 ans. soit le résultat suivant :
Notes
2
Une réponse ?
Filtrer une table
Filtrer consiste à extraire certaines lignes d'une table.
Exemple
Créer une table contenant les élèves de Lyon.
Une réponse ?
Exercice
Ecrire une fonction qui retourne les élèves d'une ville donnée
Exemple d'utilisationet le résultat attendu
Notes
Une réponse ?
Trier une table
On peut trier une table selon un attribut.
Pour la suite de cette activité, nous utiliserons les fonctions python suivantes (clic droit "ouvrir dans un nouvel onglet"):
Tri par âge
Tri par nom
Tri décroissant
Exercices
Trier les élèves par ville
Le résultat attendu
Notes
Alice Lyon
Lina Lyon
Tom Grenoble
Hugo Saint-Étienne
Trier les élèves par âge décroissant
Fusionner des tables
Pourquoi fusionner plusieurs tables ?
Pour éviter la répétition des données.
Exemple
Table élève
| id_eleve | nom | classe |
|---|---|---|
| 1 | Alice | 1A |
| 2 | Hugo | 1B |
| 3 | Lina | 1A |
Table notes
| id_eleve | matière | note |
|---|---|---|
| 1 | maths | 15 |
| 1 | NSI | 18 |
| 2 | maths | 12 |
| 3 | NSI | 17 |
Objectif Obtenir une table fusionnée :
| nom | matière | note |
|---|---|---|
| Alice | maths | 15 |
| Alice | NSI | 18 |
| Hugo | maths | 12 |
| Lina | NSI | 17 |
Le principe
On relie les tables grâce à un attribut commun : la clé.
-
clé primaire : identifie une ligne
-
clé étrangère : référence une autre table
L'implémentation en python
eleves = [
{"id":1,"nom":"Alice","classe":"1A"},
{"id":2,"nom":"Hugo","classe":"1B"},
{"id":3,"nom":"Lina","classe":"1A"}
]
notes = [
{"id":1,"matiere":"maths","note":15},
{"id":1,"matiere":"NSI","note":18},
{"id":2,"matiere":"maths","note":12},
{"id":3,"matiere":"NSI","note":17}
]
Construire une table fusionnée
fusion = []
for n in notes:
for e in eleves:
if e["id"] == n["id"]:
ligne = {
"nom": e["nom"],
"matiere": n["matiere"],
"note": n["note"]
}
fusion.append(ligne)
print(fusion)
Exercices
Exercice 1
Afficher toutes les notes de maths pour obtenir le résultat suivant :
Notes
{'id':1,'matiere':'maths','note':15}
{'id':2,'matiere':'maths','note':12}
Exercice 2
Afficher toutes les notes d'Alice pour obtenir le résultat suivant :
Notes
{'id':1,'matiere':'maths','note':15}
{'id':1,'matiere':'NSI','note':18}
Exercice 3
Créer une table fusionnée contenant :
Notes
nom
classe
matière
note
sous la forme :
Notes
Une réponse ?
Attention, l'activité n'est pas terminée !!
Ouvrez le menu de gauche pour accéder au prochain chapitre