HOWTO · Pandas
Exporter un DataFrame Pandas vers un fichier Excel
Ce tutoriel représente diverses méthodes sur la façon d'exporter une DataFrame pandas vers un fichier excel
Sur cette page
Exportez un DataFrame Pandas dans un classeur Excel avec DataFrame.to_excel(). Définissez index=False lorsque les étiquettes de lignes ne doivent pas apparaître comme colonne de la feuille. Utilisez ExcelWriter pour écrire plusieurs tableaux dans un même classeur ou configurer le moteur d’écriture.
Exporter un DataFrame vers un fichier Excel avec to_excel()
Appelez to_excel() avec un nom de fichier pour enregistrer un DataFrame. Par défaut, Pandas écrit l’index du DataFrame dans la première colonne de la feuille ; passez index=False si la feuille ne doit contenir que les colonnes nommées du DataFrame. Consultez la référence DataFrame.to_excel() pour connaître les options disponibles.
Cet exemple crée un petit tableau de ventes et écrit ses colonnes dans sales.xlsx, dans le répertoire de travail courant. Pour le fichier .xlsx, Pandas choisit un moteur d’écriture Excel installé ; installez un moteur pris en charge, tel qu’openpyxl ou XlsxWriter, si l’environnement n’en fournit pas déjà un.
import pandas as pd
sales = pd.DataFrame(
{
"product": ["Keyboard", "Mouse"],
"units": [12, 25],
}
)
sales.to_excel("sales.xlsx", index=False)
print("Saved sales.xlsx")
Saved sales.xlsx
Le classeur enregistré contient les colonnes product et units, sans colonne d’index supplémentaire. Ces étiquettes de colonne restent en anglais dans l’exemple inchangé. Pour inclure les étiquettes de lignes, omettez index=False. Un nom de fichier relatif est résolu à partir du répertoire de travail courant du processus ; indiquez un chemin absolu ou comprenant un répertoire pour enregistrer le fichier ailleurs.
Choisissez le réglage de l’index en fonction de l’usage prévu du tableur. Conservez-le lorsque l’index du DataFrame contient des étiquettes de lignes utiles, comme des identifiants qui ne figurent pas déjà dans une colonne. Désactivez-le si les lecteurs ne doivent voir que les colonnes de données nommées, ou si un autre système attend un ensemble d’en-têtes précis. Le même choix est disponible pour chaque appel à to_excel(), y compris ceux effectués avec ExcelWriter.
Choisissez un chemin accessible en écriture au processus et, si nécessaire, créez d’abord son répertoire parent : Pandas écrit le fichier du classeur, mais ne crée pas les répertoires manquants. Vous pouvez aussi fournir un chemin complet pour que la destination ne dépende pas du répertoire depuis lequel le script a été lancé. Ces précisions aident à retrouver le classeur lorsque le code est exécuté depuis un éditeur, un notebook ou une tâche planifiée.
Écrire un DataFrame avec ExcelWriter
Utilisez ExcelWriter comme gestionnaire de contexte lorsque vous devez contrôler la création du classeur ou écrire plusieurs DataFrames. À la fin du bloc, le gestionnaire de contexte ferme le classeur et finalise son enregistrement. Par défaut, Pandas choisit un moteur d’écriture Excel installé ; si nécessaire, installez un moteur pris en charge, tel qu’openpyxl ou XlsxWriter.
import pandas as pd
students = pd.DataFrame(
{
"student": ["Sam", "Ali", "Sara"],
"marks": [88, 93, 79],
}
)
with pd.ExcelWriter("student-results.xlsx") as writer:
students.to_excel(writer, sheet_name="Results", index=False)
print("Saved student-results.xlsx")
Saved student-results.xlsx
Le writer reçoit le DataFrame via to_excel(), et sheet_name définit le libellé de l’onglet. Utilisez un gestionnaire de contexte au lieu d’appeler directement la méthode save() du writer : il prend en charge la finalisation même si l’exécution quitte le bloc prématurément. Sauf indication d’un autre chemin, le fichier est créé dans le répertoire de travail courant.
Exporter plusieurs DataFrames dans des feuilles Excel distinctes
Passez le même objet ExcelWriter à l’appel to_excel() de chaque DataFrame pour placer plusieurs tableaux dans un seul classeur. Attribuez un sheet_name distinct à chaque appel afin que les lecteurs puissent retrouver chaque tableau dans sa propre feuille. L’exemple suivant écrit trois tableaux de matières dans un seul classeur ; il nécessite Pandas ainsi qu’un moteur d’écriture Excel installé.
import pandas as pd
science = pd.DataFrame({"student": ["Ali", "Umar"], "score": [88, 60]})
computing = pd.DataFrame({"student": ["Ali", "Umar"], "score": [73, 63]})
arts = pd.DataFrame({"student": ["Ali", "Umar"], "score": [95, 63]})
with pd.ExcelWriter("student-results.xlsx") as writer:
science.to_excel(writer, sheet_name="Science", index=False)
computing.to_excel(writer, sheet_name="Computing", index=False)
arts.to_excel(writer, sheet_name="Arts", index=False)
print("Saved student-results.xlsx with three worksheets")
Saved student-results.xlsx with three worksheets
Les trois appels ciblent le même classeur, et leurs valeurs sheet_name déterminent les noms des feuilles. Choisissez des noms distincts qui respectent les limites de longueur imposées par Excel. Si Pandas indique qu’aucun moteur d’écriture Excel n’est disponible, installez un moteur pris en charge, tel qu’openpyxl ou XlsxWriter, dans l’environnement où le script s’exécute.