Manipuler les fichiers CSV en Python
Le format CSV (Comma Separated Values) est l'un des formats les plus courants pour stocker des données tabulaires. Il est utilisé dans de nombreux domaines : export de tableaux Excel, échange d'informations entre services web et bases de données.
Python offre des outils efficaces pour travailler avec les fichiers CSV. Vous pouvez utiliser le module standard csv ou la puissante bibliothèque pandas pour l'analyse de données. Cet article explore les méthodes de lecture et d'écriture de fichiers CSV, le traitement des données, la prévention des erreurs et l'optimisation des performances avec des fichiers volumineux.
Les bases du format CSV
Structure d'un fichier CSV
Le CSV est un format texte simple. Chaque ligne du fichier contient un enregistrement. Les valeurs sont séparées par des caractères spéciaux. Par défaut, on utilise la virgule, mais on peut aussi employer le point-virgule, la tabulation ou la barre verticale.
Voici le contenu typique d'un fichier CSV :
Nom,Âge,Ville
Marie,25,Paris
Jean,30,Lyon
Avantages du format CSV
Le format CSV présente plusieurs avantages importants :
- Structure simple et lisible
- Pris en charge par la plupart des logiciels et langages de programmation
- Taille de fichier réduite par rapport à d'autres formats
- Modifiable dans un éditeur de texte
- Universalité pour l'échange de données entre systèmes
Travailler avec le module csv
Lire un fichier CSV
Le module standard csv de Python est idéal pour les opérations de base. Voici comment lire simplement un fichier :
import csv
with open("data.csv", newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
Résultat :
['Nom', 'Âge', 'Ville']
['Marie', '25', 'Paris']
['Jean', '30', 'Lyon']
Lecture avec en-têtes
Pour travailler facilement avec des colonnes nommées, utilisez csv.DictReader :
with open("data.csv", encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row["Nom"], row["Ville"])
Cette méthode crée automatiquement un dictionnaire pour chaque ligne, avec les clés issues de la première ligne.
Écrire des données dans un fichier CSV
Écriture simple de lignes
La méthode de base utilise csv.writer :
with open("output.csv", mode='w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(["Nom", "Âge"])
writer.writerow(["Olivier", 35])
Écriture de données structurées
Pour écrire des données structurées, utilisez csv.DictWriter :
data = [
{"Nom": "Sophie", "Âge": 28},
{"Nom": "Alexandre", "Âge": 40},
]
with open("personnes.csv", "w", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=["Nom", "Âge"])
writer.writeheader()
writer.writerows(data)
Personnaliser les paramètres de lecture et d'écriture
Le module csv permet de configurer divers paramètres :
- delimiter : spécifier le séparateur de champs
- quotechar : caractère pour encadrer les valeurs
- skipinitialspace : ignorer les espaces après le séparateur
- lineterminator : caractère de fin de ligne
Travailler avec les fichiers CSV dans pandas
Installation et import de pandas
La bibliothèque pandas offre des fonctionnalités plus avancées pour manipuler les fichiers CSV :
pip install pandas
Lire un fichier CSV avec pandas
La méthode principale pour lire un fichier CSV :
import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())