Format CSV et lecture Python
DéfinitionCSV = Comma-Separated Values
Ligne 1 = en-têtes (noms des colonnes)
Lignes suivantes = enregistrements
FICHIER notes.csv :
nom,matiere,note
Alice,Maths,15
Bob,Maths,12
Alice,NSI,18
LECTURE Python :
import csv
with open('notes.csv', encoding='utf-8') as f:
data = list(csv.DictReader(f))
# data = [
# {'nom':'Alice','matiere':'Maths','note':'15'},
# ...
# ]
# Convertir les nombres en int/float
for e in data:
e['note'] = int(e['note'])Opérations sur les tables
Notion cléSÉLECTION (filtrage, WHERE équivalent) :
[e for e in table if e['note'] >= 10]
PROJECTION (choisir colonnes) :
[e['nom'] for e in table]
[{'nom':e['nom'],'note':e['note']} for e in table]
TRI (ORDER BY équivalent) :
sorted(table, key=lambda e: e['note']) # croissant
sorted(table, key=lambda e: e['note'], reverse=True) # décroissant
sorted(table, key=lambda e: (e['classe'], e['nom'])) # double critère
AGRÉGATION :
notes = [e['note'] for e in table]
moyenne = sum(notes) / len(notes)
max_note = max(notes)
min_note = min(notes)
meilleur = max(table, key=lambda e: e['note'])Jointure de tables
Notion cléJointure = relier 2 tables par une clé commune
(équivalent du INNER JOIN SQL)
EXEMPLE :
eleves = [{'id':1,'nom':'Alice'}, {'id':2,'nom':'Bob'}]
notes = [{'id_eleve':1,'note':15}, {'id_eleve':2,'note':12}]
JOINTURE :
joint = [
{'nom': e['nom'], 'note': n['note']}
for e in eleves
for n in notes
if e['id'] == n['id_eleve']
]
# → [{'nom':'Alice','note':15}, {'nom':'Bob','note':12}]