logo oujood
🔍

Écrire un fichier CSV avec Pandas (to_csv)

Après avoir manipulé vos données dans un DataFrame, vous aurez souvent besoin de les exporter. La méthode to_csv() de Pandas écrit un DataFrame dans un fichier CSV avec un contrôle précis sur le format de sortie.

OUJOOD.COM

Exporter un DataFrame en CSV : la syntaxe de base

La méthode to_csv() s'appelle directement sur un DataFrame. Vous lui passez le chemin du fichier de destination, et Pandas écrit toutes les données.

  📋 Copier le code

import pandas as pd

data = {
    "produit":  ["Clavier", "Souris", "Écran"],
    "prix":     [45.90, 22.50, 189.00],
    "stock":    [120, 85, 34]
}
df = pd.DataFrame(data)

# Export basique — crée ou écrase le fichier
df.to_csv("export.csv")
print("Fichier écrit.")

Par défaut, Pandas inclut l'index dans le fichier. Si votre index est le numéro de ligne automatique (0, 1, 2...), il sera écrit dans une colonne sans nom en première position — ce qui produit souvent un CSV difficile à réimporter proprement. C'est le premier réglage à faire.

Supprimer l'index et choisir le séparateur

Deux paramètres que vous utiliserez dans presque tous vos exports : index=False pour ne pas écrire l'index numérique, et sep pour choisir le séparateur selon le contexte (virgule pour l'international, point-virgule pour les outils français).

  📋 Copier le code

import pandas as pd

data = {
    "produit":  ["Clavier", "Souris", "Écran"],
    "prix":     [45.90, 22.50, 189.00],
    "stock":    [120, 85, 34]
}
df = pd.DataFrame(data)

# Sans index, avec point-virgule (compatible Excel français)
df.to_csv("export_fr.csv", index=False, sep=";")

# Sans index, encodage UTF-8 avec BOM (pour Excel qui ouvre correctement les accents)
df.to_csv("export_excel.csv", index=False, sep=";", encoding="utf-8-sig")

L'encodage utf-8-sig mérite une attention particulière. C'est un UTF-8 avec marqueur BOM (Byte Order Mark) au début du fichier. Excel détecte ce marqueur et ouvre automatiquement le fichier avec le bon encodage — sans ça, les accents s'affichent souvent en caractères illisibles quand on double-clique sur le CSV depuis l'explorateur Windows.

Choisir les colonnes à exporter

Vous n'avez pas toujours besoin d'exporter toutes les colonnes d'un DataFrame. Le paramètre columns vous laisse choisir lesquelles inclure et dans quel ordre, sans modifier le DataFrame source.

  📋 Copier le code

import pandas as pd

data = {
    "nom":          ["Alice", "Bob", "Clara"],
    "email":        ["alice@ex.com", "bob@ex.com", "clara@ex.com"],
    "score":        [88, 74, 95],
    "mot_de_passe": ["hash1", "hash2", "hash3"]  # colonne à ne pas exporter
}
df = pd.DataFrame(data)

# Export sans la colonne sensible, dans l'ordre voulu
df.to_csv(
    "utilisateurs_export.csv",
    index=False,
    columns=["nom", "email", "score"]
)
print("Export terminé — mot de passe exclu.")

Ajouter des lignes à un fichier existant

Par défaut, to_csv() crée le fichier ou l'écrase s'il existe déjà. Pour ajouter des lignes à la suite d'un fichier existant — utile pour des logs ou des exports incrémentaux — utilisez le paramètre mode="a" (append) combiné avec header=False pour ne pas réécrire l'en-tête.

  📋 Copier le code

import pandas as pd

# Premier export : crée le fichier avec l'en-tête
df_janvier = pd.DataFrame({
    "mois": ["Janvier"], "ventes": [15200]
})
df_janvier.to_csv("historique.csv", index=False)

# Mois suivants : ajout sans réécrire l'en-tête
df_fevrier = pd.DataFrame({
    "mois": ["Février"], "ventes": [18400]
})
df_fevrier.to_csv("historique.csv", index=False, mode="a", header=False)

df_mars = pd.DataFrame({
    "mois": ["Mars"], "ventes": [21100]
})
df_mars.to_csv("historique.csv", index=False, mode="a", header=False)

# Vérification du résultat final
print(pd.read_csv("historique.csv"))

Le fichier historique.csv contiendra trois lignes de données sous un seul en-tête. Si vous oubliez header=False lors des appends, vous retrouverez les noms de colonnes répétés dans les données — une erreur courante à éviter.

Pour exporter vers d'autres formats depuis un DataFrame, Pandas propose des méthodes analogues : to_excel(), to_json(), to_sql(), to_parquet(). Toutes suivent la même logique que to_csv().

Par carabde | Mis à jour le 26 avril 2026