Fiche de révision - Traitement de données en tables¶
1. Données tabulées et CSV¶
- Table = lignes (enregistrements) + colonnes (attributs)
- CSV (Comma-Separated Values) = format texte avec séparateur (
,ou;) - En Python, une table = tableau de dictionnaires
Importer un CSV :
import csv
with open("fichier.csv", "r", encoding="utf-8") as f:
for ligne in csv.DictReader(f):
table.append(dict(ligne))
Exporter un CSV :
with open("sortie.csv", "w", encoding="utf-8", newline="") as f:
ecrivain = csv.DictWriter(f, fieldnames=["nom", "age"])
ecrivain.writeheader()
for ligne in table:
ecrivain.writerow(ligne)
Attention
Les valeurs CSV sont des chaînes. Convertir avec int() ou float().
2. Opérations sur les tables¶
Projection (sélection de colonnes)¶
Filtrage (sélection de lignes)¶
[e for e in table if e["age"] >= 16] # critère simple
[e for e in table if e["age"] >= 16 and e["ville"] == "Lyon"] # critère combiné
Tri¶
sorted(table, key=lambda e: e["age"]) # croissant
sorted(table, key=lambda e: e["age"], reverse=True) # décroissant
Le tri Python est stable : en cas d'égalité, l'ordre d'origine est conservé.
Agrégation¶
3. Qualité des données¶
| Vérification | Ce qu'on cherche |
|---|---|
| Valeurs manquantes | Champs vides ou absents |
| Types incorrects | "seize" au lieu de 16 |
| Valeurs aberrantes | Age négatif, note > 20 |
| Doublons | Lignes identiques ou mêmes clés |
4. Fusion de tables (jointure)¶
Principe : combiner deux tables sur un attribut commun.
def jointure(t1, t2, cle):
resultat = []
for l1 in t1:
for l2 in t2:
if l1[cle] == l2[cle]:
fusion = {}
fusion.update(l1)
fusion.update(l2)
resultat.append(fusion)
return resultat
Clé primaire : attribut identifiant de manière unique chaque ligne.
Clé étrangère : attribut faisant référence à la clé primaire d'une autre table.
Les lignes sans correspondance dans l'autre table sont exclues du résultat.
5. Schéma récapitulatif des opérations¶
| Opération | Entrée | Sortie | Python |
|---|---|---|---|
| Projection | Table + colonnes | Table réduite | Compréhension de dict |
| Filtrage | Table + condition | Table filtrée | [e for e in t if ...] |
| Tri | Table + colonne | Table ordonnée | sorted(t, key=...) |
| Agrégation | Table + colonne | Une valeur | sum(), min(), max() |
| Jointure | 2 tables + clé | Table fusionnée | Double boucle + update() |
Vocabulaire essentiel¶
| Terme | Définition rapide |
|---|---|
| Table | Données en lignes et colonnes |
| Enregistrement | Une ligne de la table |
| Attribut | Une colonne de la table (nom, age, etc.) |
| CSV | Format texte pour stocker des tables |
| Projection | Ne garder que certaines colonnes |
| Filtrage | Ne garder que certaines lignes |
| Tri | Ordonner les lignes selon un attribut |
| Agrégation | Calculer une valeur résumant une colonne |
| Jointure | Fusion de deux tables sur un attribut commun |
| Clé primaire | Identifiant unique d'une ligne |
| Clé étrangère | Référence vers la clé primaire d'une autre table |
| Doublon | Enregistrement apparaissant plusieurs fois |