Fichiers CSV
Introduction aux fichiers CSV
Le format CSV (Comma Separated Values) est très utilisé pour représenter des données sous forme de tableau. Chaque ligne correspond à une entrée et chaque colonne est séparée par un délimiteur, généralement une virgule ou un point-virgule. Ce format est couramment utilisé pour exporter ou importer des données vers des applications telles que Excel ou pour transmettre des données structurées entre différentes plateformes.
Lire un fichier CSV
Python fournit le module intégré csv
pour simplifier la lecture et l'écriture
de fichiers CSV. Voici comment l'utiliser efficacement.
Exemple de lecture simple
La méthode la plus simple pour lire un fichier CSV est d'utiliser csv.reader
,
qui lit chaque ligne comme une liste de valeurs. Voici un exemple concret :
import csv
with open('donnees.csv', 'r', newline='', encoding='utf-8') as fichier:
lecteur = csv.reader(fichier, delimiter=',')
for ligne in lecteur:
print(ligne)
Dans cet exemple, chaque ligne du fichier est affichée comme une liste Python. Si vous voulez
sautez la première ligne (souvent utilisée pour les en-têtes), vous pouvez
ajouter une instruction next(lecteur)
avant la boucle :
import csv
with open('donnees.csv', 'r', newline='', encoding='utf-8') as fichier:
lecteur = csv.reader(fichier, delimiter=',')
next(lecteur) # Ignore la première ligne
for ligne in lecteur:
print(ligne)
Lecture avec DictReader
Le DictReader
est particulièrement utile car il permet d'accéder aux données
via les noms des colonnes spécifiées dans la première ligne du fichier CSV.
C'est idéal pour rendre le code plus lisible et intuitif :
import csv
with open('donnees.csv', 'r', newline='', encoding='utf-8') as fichier:
lecteur = csv.DictReader(fichier)
for ligne in lecteur:
print(f"Nom: {ligne['Nom']}, Âge: {ligne['Âge']}")
Ici, l'accès aux données par le nom des colonnes améliore nettement la lisibilité et la compréhension du code.
Écrire dans un fichier CSV
L'écriture dans un fichier CSV est aussi simplifiée grâce au module csv
. Nous
avons plusieurs façons d'écrire des données, chacune adaptée à différents
contextes.
Écriture simple avec writer
Pour écrire rapidement des données dans un fichier CSV, vous pouvez utiliser
csv.writer
. Voici comment écrire une liste de listes dans un fichier :
import csv
donnees = [
['Nom', 'Âge', 'Ville'],
['Alice', 30, 'Paris'],
['Bob', 25, 'Lyon'],
['Charlie', 35, 'Marseille']
]
with open('sortie.csv', 'w', newline='', encoding='utf-8') as fichier:
ecrivain = csv.writer(fichier)
ecrivain.writerows(donnees)
Cet exemple crée un fichier CSV complet avec des entêtes et plusieurs lignes de données.
Écriture avec DictWriter
Si vous travaillez avec des données sous forme de dictionnaires, le
csv.DictWriter
est particulièrement adapté. Il permet d'associer clairement
chaque valeur à une colonne spécifique du fichier CSV :
import csv
champs = ['Nom', 'Âge', 'Ville']
donnees = [
{'Nom': 'Alice', 'Âge': 30, 'Ville': 'Paris'},
{'Nom': 'Bob', 'Âge': 25, 'Ville': 'Lyon'},
{'Nom': 'Charlie', 'Âge': 35, 'Ville': 'Marseille'}
]
with open('sortie.csv', 'w', newline='', encoding='utf-8') as fichier:
ecrivain = csv.DictWriter(fichier, fieldnames=champs)
ecrivain.writeheader()
ecrivain.writerows(donnees)
Traitement des données CSV : exemple pratique
Voici un exemple pratique où nous traitons un fichier CSV pour extraire et
sauvegarder seulement les personnes âgées de 30 ans ou plus. Cet exemple
illustre la puissance de combinaison de lecture et d'écriture avec DictReader
et DictWriter
:
import csv
resultats = []
with open('personnes.csv', 'r', newline='', encoding='utf-8') as entree:
lecteur = csv.DictReader(entree)
for ligne in lecteur:
if int(ligne['Âge']) >= 30:
resultats.append(ligne)
with open('personnes_filtrees.csv', 'w', newline='', encoding='utf-8') as sortie:
champs = ['Nom', 'Âge', 'Ville']
ecrivain = csv.DictWriter(sortie, fieldnames=champs)
ecrivain.writeheader()
ecrivain.writerows(resultats)
Bonnes pratiques pour les fichiers CSV
Il est important de respecter certaines bonnes pratiques lors de la manipulation des fichiers CSV :
- Toujours préciser
newline=''
lors de l'ouverture des fichiers CSV pour éviter les problèmes de sauts de ligne inattendus.newline=''
indique à la fonctionopen
de ne pas modifier les sauts de ligne, car c'est le modulecsv
qui va les gérer. - Utiliser systématiquement l'encodage
encoding='utf-8'
pour gérer correctement les caractères spéciaux. - Préférer l'utilisation de
DictReader
etDictWriter
pour simplifier l'accès et la gestion des données en fonction des noms de colonnes.
Testez votre compréhension
🤔 Testez votre compréhension - Indexation
- Q1
- Q2
- Q3
- Q4
- Q5
- Q6
- Q7
- Q8
- Q9
- Q10
Quel module standard est utilisé pour lire un fichier CSV en Python ?
Quel est l'effet de l'instruction with open("data.csv") as f:
?
Que retourne csv.reader(f)
?
Quel est l’intérêt de csv.DictReader(f)
?
Que faut-il ajouter à open()
pour bien lire les accents dans un fichier CSV ?
Quel est le séparateur par défaut utilisé par csv.reader()
?
Quelle méthode permet de transformer un objet csv.reader
en liste ?
Comment accéder à la valeur d’une colonne nommée "nom"
avec csv.DictReader
?
Pourquoi utilise-t-on newline=""
dans open("fichier.csv", newline="")
?
Que fait cette séquence ?
import csv
with open("f.csv", encoding="utf-8") as f:
for ligne in csv.reader(f):
print(ligne)