Partie 1 : Les fichiers CSV et l'importation de données
1. Les données tabulées
Section intitulée « 1. Les données tabulées »1.1 Qu'est-ce qu'une table de données ?
Section intitulée « 1.1 Qu'est-ce qu'une table de données ? »Une table de données est un ensemble d'informations organisées en lignes et colonnes, comme un tableur :
| Nom | Prénom | Âge | Ville |
|---|---|---|---|
| Dupont | Marie | 16 | Lyon |
| Martin | Léo | 17 | Paris |
| Durand | Emma | 16 | Lille |
Chaque ligne est un enregistrement (une entrée, un individu). Chaque colonne est un attribut (ou descripteur) : Nom, Prénom, Âge, Ville.
1.2 Vocabulaire
Section intitulée « 1.2 Vocabulaire »| Terme | Signification |
|---|---|
| Table | Ensemble structuré de données en lignes et colonnes |
| Enregistrement | Une ligne de la table (un individu) |
| Attribut (ou champ, descripteur) | Une colonne de la table (une propriété) |
| Valeur | Le contenu d'une cellule |
2. Le format CSV
Section intitulée « 2. Le format CSV »2.1 Définition
Section intitulée « 2.1 Définition »Le format CSV (Comma-Separated Values, valeurs séparées par des virgules) est un format texte simple pour stocker des données tabulées.
Un fichier CSV est un fichier texte brut dans lequel :
- La première ligne contient les noms des attributs (l'en-tête) ;
- Chaque ligne suivante contient un enregistrement ;
- Les valeurs sont séparées par un séparateur (virgule, point-virgule ou tabulation).
2.2 Exemple
Section intitulée « 2.2 Exemple »Le fichier eleves.csv :
nom,prenom,age,villeDupont,Marie,16,LyonMartin,Léo,17,ParisDurand,Emma,16,LillePetit,Hugo,15,Marseille2.3 Avantages du CSV
Section intitulée « 2.3 Avantages du CSV »- Universel : lisible par tout éditeur de texte, tout tableur, tout langage de programmation.
- Léger : pas de mise en forme, juste les données brutes.
- Interopérable : permet d'échanger des données entre logiciels différents.
2.4 Limites du CSV
Section intitulée « 2.4 Limites du CSV »- Pas de typage : tout est du texte (les nombres sont des chaînes qu'il faut convertir).
- Pas de structure complexe (pas d'imbrication comme en JSON).
- Problèmes si une valeur contient le séparateur (il faut alors l'entourer de guillemets).
3. Lire un fichier CSV en Python
Section intitulée « 3. Lire un fichier CSV en Python »3.1 Lecture manuelle (sans module)
Section intitulée « 3.1 Lecture manuelle (sans module) »On peut lire un CSV ligne par ligne et découper chaque ligne :
table = []with open("eleves.csv", "r", encoding="utf-8") as fichier: lignes = fichier.readlines() en_tete = lignes[0].strip().split(",") for ligne in lignes[1:]: valeurs = ligne.strip().split(",") enregistrement = {} for i in range(len(en_tete)): enregistrement[en_tete[i]] = valeurs[i] table.append(enregistrement)
print(table)Résultat :
[ {"nom": "Dupont", "prenom": "Marie", "age": "16", "ville": "Lyon"}, {"nom": "Martin", "prenom": "Léo", "age": "17", "ville": "Paris"}, ...]3.2 Lecture avec le module csv
Section intitulée « 3.2 Lecture avec le module csv »Le module csv de Python gère les cas particuliers (guillemets, séparateurs dans les valeurs, etc.) :
import csv
table = []with open("eleves.csv", "r", encoding="utf-8") as fichier: lecteur = csv.DictReader(fichier) for ligne in lecteur: table.append(dict(ligne))
print(table)csv.DictReader renvoie chaque ligne sous forme de dictionnaire, avec les noms de colonnes comme clés.
3.3 Choisir le séparateur
Section intitulée « 3.3 Choisir le séparateur »Si le fichier utilise un point-virgule :
lecteur = csv.DictReader(fichier, delimiter=";")4. Écrire un fichier CSV en Python
Section intitulée « 4. Écrire un fichier CSV en Python »4.1 Avec le module csv
Section intitulée « 4.1 Avec le module csv »import csv
eleves = [ {"nom": "Dupont", "prenom": "Marie", "age": 16, "ville": "Lyon"}, {"nom": "Martin", "prenom": "Léo", "age": 17, "ville": "Paris"}, {"nom": "Durand", "prenom": "Emma", "age": 16, "ville": "Lille"}]
with open("sortie.csv", "w", encoding="utf-8", newline="") as fichier: colonnes = ["nom", "prenom", "age", "ville"] ecrivain = csv.DictWriter(fichier, fieldnames=colonnes) ecrivain.writeheader() for eleve in eleves: ecrivain.writerow(eleve)Le fichier sortie.csv produit :
nom,prenom,age,villeDupont,Marie,16,LyonMartin,Léo,17,ParisDurand,Emma,16,Lille5. Représentation en mémoire
Section intitulée « 5. Représentation en mémoire »En Python, une table de données se représente naturellement comme un tableau de dictionnaires :
table = [ {"nom": "Dupont", "prenom": "Marie", "age": 16, "ville": "Lyon"}, {"nom": "Martin", "prenom": "Léo", "age": 17, "ville": "Paris"}, {"nom": "Durand", "prenom": "Emma", "age": 16, "ville": "Lille"}]Chaque dictionnaire est un enregistrement, chaque clé est un attribut.
Cette structure permet :
- D'accéder à un enregistrement par son indice :
table[0] - D'accéder à un attribut d'un enregistrement :
table[0]["nom"] - De parcourir tous les enregistrements :
for e in table:
6. Conversion des types
Section intitulée « 6. Conversion des types »Les fichiers CSV ne contiennent que du texte. Lors de l'importation, il faut convertir les valeurs numériques :
import csv
table = []with open("eleves.csv", "r", encoding="utf-8") as fichier: lecteur = csv.DictReader(fichier) for ligne in lecteur: enregistrement = dict(ligne) enregistrement["age"] = int(enregistrement["age"]) table.append(enregistrement)Après conversion, table[0]["age"] renvoie l'entier 16 et non la chaîne "16".
7. Résumé
Section intitulée « 7. Résumé »| Concept | Détail |
|---|---|
| Table de données | Lignes (enregistrements) et colonnes (attributs) |
| CSV | Format texte, valeurs séparées par un délimiteur |
| Séparateur | Virgule (,) ou point-virgule (;) |
| En Python | Tableau de dictionnaires |
Module csv | DictReader (lecture), DictWriter (écriture) |
| Conversion | Les valeurs CSV sont des chaînes, à convertir avec int() / float() |
| Encodage | Toujours préciser encoding="utf-8" |
© 2026 Corentin Dupont - LyCode
Créé avec Astro Starlight