Écrire des DataFrames dans des fichiers
Exportez un DataFrame nettoyé vers CSV et Excel avec to_csv et to_excel, en contrôlant l’index et le format des nombres flottants.
Écrire des DataFrames dans des fichiers est une leçon Pandas & NumPy Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Pandas & NumPy Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Pourquoi l’exportation est importante
L’analyse de données se termine rarement dans Python. Vous devez partager les ensembles de données nettoyés avec les parties prenantes, transmettre les résultats à d’autres outils ou archiver les données traitées pour garantir leur reproductibilité. Pandas fournit to_csv(), to_excel(), to_json() et to_parquet() : ces fonctions reprennent le fonctionnement des fonctions de lecture et acceptent la plupart des mêmes paramètres de configuration.
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
df.to_csv('results.csv')
df.to_excel('results.xlsx')
df.to_json('results.json', orient='records')to_csv() : le piège de l’index
Par défaut, to_csv() écrit l’index des lignes comme première colonne, ce qui crée une colonne unnamed: 0 lorsque vous relisez le fichier. Transmettez index=False pour omettre l’index : c’est presque toujours le meilleur choix, sauf si l’index contient des données significatives, comme des dates. Indiquez toujours index=False, sauf si vous avez une raison précise d’inclure l’index.
import pandas as pd
df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
# Include index (default -- creates 'Unnamed: 0' when re-read)
df.to_csv('with_index.csv')
# Exclude index (recommended)
df.to_csv('clean.csv', index=False)Contrôler le séparateur et l’encodage
Transmettez sep= pour écrire un fichier séparé par des tabulations ou des points-virgules. Utilisez encoding= pour spécifier UTF-8 ou un autre jeu de caractères, ce qui est essentiel lorsque les valeurs des colonnes contiennent des caractères non ASCII, comme des accents ou des caractères chinois. encoding='utf-8-sig' ajoute un BOM (marque d’ordre des octets) pour assurer la compatibilité avec Excel sous Windows.
import pandas as pd
df = pd.DataFrame({'name': ['Müller', 'Tanaka'], 'val': [1, 2]})
# Tab-separated, UTF-8
df.to_csv('output.tsv', sep='\t', encoding='utf-8', index=False)
# Excel-compatible UTF-8 with BOM
df.to_csv('for_excel.csv', encoding='utf-8-sig', index=False)Contrôler le formatage des nombres flottants
Par défaut, Pandas écrit les nombres flottants avec toute leur précision. Utilisez float_format='%.2f' pour limiter l’affichage à 2 décimales, ce qui est important pour les données financières, car des décimales supplémentaires peuvent sembler incorrectes aux lecteurs. Transmettez na_rep='NULL' ou na_rep='' pour contrôler la façon dont les valeurs NaN sont écrites dans le fichier de sortie.
import pandas as pd
import numpy as np
df = pd.DataFrame({'price': [9.99, np.nan, 14.123456],
'qty': [1, 2, 3]})
df.to_csv('prices.csv',
index=False,
float_format='%.2f',
na_rep='N/A')to_excel() : écrire une feuille
df.to_excel('file.xlsx', sheet_name='Data', index=False) écrit le DataFrame dans un classeur Excel. Comme avec to_csv(), définissez index=False sauf si l’index est significatif. Les paramètres startrow= et startcol= vous permettent de positionner le tableau dans la feuille, ce qui est utile pour ajouter une ligne de titre au-dessus des données.
import pandas as pd
df = pd.DataFrame({'product': ['A', 'B'], 'sales': [100, 200]})
df.to_excel('report.xlsx',
sheet_name='Sales',
index=False,
startrow=1) # leave row 0 for a titleÉcrire plusieurs feuilles avec ExcelWriter
Pour écrire plusieurs DataFrames dans différentes feuilles du même classeur, utilisez pd.ExcelWriter comme gestionnaire de contexte. Appelez df.to_excel(writer, sheet_name='Name') pour chaque DataFrame à l’intérieur du bloc with. Le classeur est finalisé et enregistré à la sortie du contexte. Vous évitez ainsi de créer plusieurs fichiers distincts pour des tableaux associés.
import pandas as pd
df1 = pd.DataFrame({'a': [1, 2]})
df2 = pd.DataFrame({'b': [3, 4]})
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)to_json() : exporter du JSON
df.to_json() sérialise un DataFrame en JSON. Le paramètre orient= reprend celui de read_json : utilisez 'records' pour une liste de dictionnaires représentant les lignes (format le plus interopérable), 'columns' pour un dictionnaire de tableaux de colonnes ou 'index' pour un dictionnaire indexé par l’étiquette de ligne. Transmettez indent=2 pour obtenir une mise en forme lisible.
import pandas as pd
df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
print(df.to_json(orient='records', indent=2))
# [
# {"name": "A", "score": 90},
# {"name": "B", "score": 75}
# ]Ajouter des données à un fichier existant
Pour ajouter des lignes à un fichier CSV existant sans l’écraser, ouvrez le fichier en mode ajout avec mode='a' et définissez header=False afin d’éviter de dupliquer la ligne d’en-tête. Pour Excel, utilisez ExcelWriter avec mode='a'. Dans les chaînes de traitement volumineuses en continu, ajoutez les données par blocs et n’écrivez l’en-tête que pour le premier bloc.
import pandas as pd
df_new = pd.DataFrame({'a': [5, 6], 'b': [7, 8]})
# Append to existing file, skip writing header
df_new.to_csv('existing.csv',
mode='a',
header=False,
index=False)Sélectionner les colonnes avant l’exportation
Avant l’exportation, il est recommandé de sélectionner uniquement les colonnes dont le destinataire a besoin et de trier les lignes dans un ordre logique. Le fichier de sortie est ainsi plus clair et vous évitez de divulguer accidentellement des colonnes internes comme des identifiants internes, des caractéristiques encodées ou des indicateurs de débogage. Utilisez une sélection entre crochets et sort_values() dans la même expression de traitement avant l’écriture.
import pandas as pd
df = pd.DataFrame({'id': [3,1,2],
'name': ['C','A','B'],
'_internal': [9,7,8]})
(df[['id', 'name']]
.sort_values('id')
.to_csv('export.csv', index=False))Vérifier le fichier écrit
Après l’écriture, relisez toujours le fichier et vérifiez les éléments suivants : les dimensions avec shape, les noms de colonnes et quelques valeurs prises au hasard. Pour les chaînes d’intégration continue, comparez les sommes de contrôle. Pour les exportations financières critiques, vérifiez que les totaux agrégés correspondent. Cela permet de détecter les problèmes d’encodage, les pertes de précision des nombres flottants et les problèmes d’index avant que le fichier ne parvienne à un utilisateur en aval.
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df.to_csv('/tmp/check.csv', index=False)
df_check = pd.read_csv('/tmp/check.csv')
assert df_check.shape == df.shape, 'Row/column count mismatch'
assert list(df_check.columns) == list(df.columns)
print('Export verified OK')Parquet : une meilleure alternative pour les données
Pour les grands jeux de données analytiques, envisagez le format Parquet plutôt que CSV. Parquet stocke les données au format colonne, prend en charge la compression, préserve exactement les types de données et permet des lectures 10 à 100 fois plus rapides pour les requêtes analytiques. Écrivez avec df.to_parquet('data.parquet') et lisez avec pd.read_parquet('data.parquet'). L'installation de pyarrow ou de fastparquet est nécessaire.
import pandas as pd
df = pd.DataFrame({'a': range(1000000), 'b': range(1000000)})
df.to_parquet('data.parquet', index=False)
df2 = pd.read_parquet('data.parquet')
print(df2.dtypes) # dtypes preserved exactlyVérification rapide
Vérifiez votre compréhension de l'écriture de DataFrames dans des fichiers à partir de cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que : to_csv() et to_excel() exportent des DataFrames et incluent tous deux l'index par défaut — définissez toujours index=False pour obtenir une sortie propre, ExcelWriter permet d'écrire plusieurs DataFrames dans des feuilles distinctes d'un même classeur, et Parquet est une alternative plus rapide et plus économe en espace que CSV pour les grands jeux de données analytiques. Ensuite, nous chargerons des fichiers CSV distants à partir d'URL et analyserons des chaînes CSV en mémoire avec io.StringIO.
Questions Fréquemment Posées
La leçon « Écrire des DataFrames dans des fichiers » est-elle gratuite ?
Oui — le texte complet de « Écrire des DataFrames dans des fichiers » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Pandas & NumPy Academy, passe à CoddyKit PRO. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Écrire des DataFrames dans des fichiers » ?
Exportez un DataFrame nettoyé vers CSV et Excel avec to_csv et to_excel, en contrôlant l’index et le format des nombres flottants. Tu pratiques Pandas & NumPy Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Pandas & NumPy Academy ?
Aucune expérience préalable n'est requise. Pandas & NumPy Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Écrire des DataFrames dans des fichiers » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Pandas & NumPy Academy ?
Oui. Chaque leçon Pandas & NumPy Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire des fichiers CSV
- Lire des fichiers Excel et JSON
- Écrire des DataFrames dans des fichiers
- Lire depuis des URL et StringIO