HOWTO · Pandas
Einen Pandas-DataFrame in eine Excel-Datei exportieren
Dieses Tutorial stellt verschiedene Methoden zum Exportieren eines Pandas-DataFrames in eine Excel-Datei dar
Auf dieser Seite
Exportiere einen Pandas-DataFrame mit DataFrame.to_excel() in eine Excel-Arbeitsmappe. Setze index=False, wenn die Zeilenbezeichnungen nicht als Tabellenspalte erscheinen sollen. Verwende ExcelWriter, wenn du mehrere Tabellen in eine Arbeitsmappe schreiben oder die Writer-Engine konfigurieren möchtest.
Einen DataFrame mit to_excel() in eine Excel-Datei exportieren
Rufe to_excel() mit einem Dateinamen auf, um einen einzelnen DataFrame zu speichern. Standardmäßig schreibt Pandas den DataFrame-Index in die erste Tabellenspalte. Übergib index=False, wenn das Arbeitsblatt nur die benannten Spalten des DataFrames enthalten soll. Die verfügbaren Optionen findest du in der Referenz zu DataFrame.to_excel().
Das Beispiel erstellt eine kleine Umsatztabelle und schreibt deren Spalten in sales.xlsx im aktuellen Arbeitsverzeichnis. Für die .xlsx-Datei wählt Pandas eine installierte Excel-Engine aus. Falls in der Umgebung noch keine vorhanden ist, installiere eine unterstützte Engine wie openpyxl oder XlsxWriter.
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
Die gespeicherte Arbeitsmappe enthält die Spalten product und units, aber keine zusätzliche Indexspalte. Diese Spaltenbezeichnungen bleiben im unveränderten Beispiel auf Englisch. Um die Zeilenbezeichnungen einzuschließen, lasse index=False weg. Ein relativer Dateiname wird ausgehend vom aktuellen Arbeitsverzeichnis des Prozesses aufgelöst. Verwende einen absoluten oder mit einem Verzeichnis versehenen Pfad, um die Datei an einem anderen Ort zu speichern.
Wähle die Indexeinstellung danach, wie die Tabelle verwendet werden soll. Behalte den Index bei, wenn er aussagekräftige Zeilenbezeichnungen enthält, etwa Kennungen, die nicht bereits in einer Spalte stehen. Schalte ihn aus, wenn Leser nur die benannten Datenspalten sehen sollen oder ein anderes System eine feste Spaltenüberschrift erwartet. Dieselbe Einstellung steht bei jedem Aufruf von to_excel() zur Verfügung, auch bei Aufrufen über einen ExcelWriter.
Wähle einen Pfad, in den der Prozess schreiben darf, und erstelle bei Bedarf zuvor das übergeordnete Verzeichnis. Pandas schreibt die Arbeitsmappendatei, legt fehlende Verzeichnisse aber nicht an. Du kannst auch einen vollständigen Pfad angeben, damit das Ziel unabhängig vom Startverzeichnis des Skripts ist. So lässt sich die Arbeitsmappe leichter finden, wenn der Code in einem Editor, Notebook oder geplanten Auftrag ausgeführt wird.
Einen DataFrame mit ExcelWriter schreiben
Verwende ExcelWriter als Kontextmanager, wenn du die Erstellung einer Arbeitsmappe steuern oder mehr als einen DataFrame schreiben möchtest. Der Kontextmanager schließt und finalisiert die Arbeitsmappe, sobald der Block endet. Standardmäßig wählt Pandas eine installierte Excel-Engine aus. Installiere bei Bedarf eine unterstützte Engine wie openpyxl oder 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
Der Writer erhält den DataFrame über to_excel(), und sheet_name legt die Bezeichnung des Tabellenreiters fest. Verwende einen Kontextmanager, statt die Methode save() des Writers direkt aufzurufen; so wird die Arbeitsmappe auch dann finalisiert, wenn der Block vorzeitig verlassen wird. Ohne abweichenden Pfad wird die Datei relativ zum aktuellen Arbeitsverzeichnis erstellt.
Mehrere DataFrames in separate Excel-Arbeitsblätter exportieren
Übergib dasselbe ExcelWriter-Objekt an den to_excel()-Aufruf jedes DataFrames, um mehrere Tabellen in eine Arbeitsmappe zu schreiben. Verwende bei jedem Aufruf einen anderen Wert für sheet_name, damit Leser die Tabellen auf jeweils eigenen Arbeitsblättern finden. Das folgende Beispiel schreibt drei Fächertabellen in eine Arbeitsmappe. Dafür werden Pandas und eine installierte Excel-Engine benötigt.
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
Alle drei Aufrufe schreiben in dieselbe Arbeitsmappe; die jeweiligen Werte von sheet_name bestimmen die Namen der Arbeitsblätter. Verwende eindeutige Arbeitsblattnamen, die innerhalb der Längenbeschränkungen von Excel liegen. Meldet Pandas, dass keine Excel-Writer-Engine verfügbar ist, installiere eine unterstützte Engine wie openpyxl oder XlsxWriter in der Umgebung, in der das Skript ausgeführt wird.