Pandas df.to_excel()-Funktion
to_excel()ist eine DataFrame-Methode, die verwendet wird, um Daten in eine Excel-Datei zu exportieren, mit Unterstützung für.xlsxund.xlsFormat.
Excel ist das am häufigsten verwendete Datenanalysewerkzeug in der Unternehmensbüroarbeit,to_excel()Es kann einen pandas DataFrame in eine gut formatierte Excel-Datei exportieren. Es unterstützt mehrere Arbeitsblätter, Zellformatierung, Formeleinfügung und andere erweiterte Funktionen, wodurch es sich ideal für die Ausgabe von Datenberichten und Analyseergebnissen eignet.
Grundlegende Syntax und Parameter
Syntaxformat
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='',
float_format=None, columns=None, header=True,
index=True, index_label=None, startrow=0, startcol=0,
engine=None, merge_cells=True, inf_rep='inf', ...)
Parameterbeschreibung
| Parameter | Type | Beschreibung | Standardwert |
|---|---|---|---|
| excel_writer | str, ExcelWriter, Pfadobjekt, dateiähnliches Objekt | Dateipfad oder ExcelWriter-Objekt | Erforderlich |
| sheet_name | str | Blattname | 'Sheet1' |
| na_rep | str | Darstellung fehlender Werte | '' |
| float_format | str | Format für Gleitkommazahlen | Keine |
| columns | Liste | Zu exportierende Spalten | Keine |
| header | bool | Ob Spaltennamen exportiert werden sollen | True |
| index | bool | Ob der Index exportiert werden soll | True |
| index_label | str | Name der Indexspalte | Keine |
| startrow | int | Startzeile der Daten (0-basiert) | 0 |
| startcol | int | Startspalte der Daten (0-basiert) | 0 |
| engine | str | Writer-Engine: 'openpyxl', 'xlsxwriter' | Keine |
Rückgabewert
- Rückgabetyp:
None - Schreibt Daten direkt in die angegebene Excel-Datei, kein Rückgabewert.
Beispiele
Anhand der folgenden Beispiele vollständig meisternto_excel()verschiedene Verwendungen von.
Beispiel 1: Grundlegende Verwendung – Export in eine Excel-Datei
Erstellen Sie zuerst ein DataFrame und verwenden Sie dannto_excel()um in eine Excel-Datei zu exportieren.
Beispiel
import openpyxl # Installation erforderlich: pip install openpyxl
# Beispiel-DataFrame erstellen
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
'salary': [8000, 12000, 15000, 7000]
}
df = pd.DataFrame(data)
# Beispiel 1a: Der einfachste Export
# excel_writer: Dateipfad (erforderlich)
df.to_excel('employees.xlsx', index=False)
print("Exportiert nach employees.xlsx")
print()
# Beispiel 1b: Exportieren und zur Überprüfung einlesen
df_check = pd.read_excel('employees.xlsx')
print("Überprüfung gelesen:")
print(df_check)
print()
# Beispiel 1c: Arbeitsblattnamen angeben
df.to_excel('employees_sheet.xlsx', sheet_name='Employee Table', index=False)
print("Exportiert nach employees_sheet.xlsx (Arbeitsblatt: Employee Table)")
Erwartete Ausgabe:
已导出到 employees.xlsx
验证读取:
name age support
Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
已导出到 employees_sheet.xlsx (工作表: 员工表)
Codeanalyse:
to_excel()Es muss derexcel_writerParameter, d. h. der Dateipfad, angegeben werden.- Standardmäßig wird der Index exportiert; Sie können festlegen,
index=Falseden Index nicht zu exportieren. sheet_nameParameter zum Anpassen des Arbeitsblattnamens (Standard ist Sheet1).
Beispiel 2: Exportieren mehrerer Arbeitsblätter
VerwendungExcelWriterSie können mehrere DataFrames in verschiedene Arbeitsblätter derselben Excel-Datei schreiben.
Beispiel
# Mehrere DataFrames erstellen
df_employees = pd.DataFrame({
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
})
df_sales = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'sales': [100, 200, 150, 80],
'revenue': [10000, 20000, 15000, 8000]
})
df_inventory = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'stock': [500, 300, 400, 200],
'status': ['OK', 'Low', 'OK', 'Low']
})
# Beispiel 2a: ExcelWriter verwenden, um mehrere Arbeitsblätter zu schreiben
# mode='w' ist der Standardmodus, der die vorhandene Datei überschreibt
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df_employees.to_excel(writer, sheet_name='Employees', index=False)
df_sales.to_excel(writer, sheet_name='Sales', index=False)
df_inventory.to_excel(writer, sheet_name='Inventory', index=False)
print("Exportiert nach multi_sheet.xlsx (enthält 3 Arbeitsblätter)")
print()
# Überprüfung: Alle Arbeitsblätter lesen
all_sheets = pd.read_excel('multi_sheet.xlsx', sheet_name=None)
print("Alle Arbeitsblätter:")
for name, df in all_sheets.items():
print(f"n--- {name} ---")
print(df)
Erwartete Ausgabe:
已导出到 multi_sheet.xlsx (包含3个工作表)
所有工作表:
--- Employees ---
name age city
0 Tom 28 Beijing
1 Jerry 部分 Shanghai
2 Excel 格式 15000 Guangzhou
3 Lucy 26 Shenzhen
--- Sales ---
product sales revenue
0 A 100 10000
起始位置 200 写入 20000
2 C 150 15000
float_format='%.2f' 0 20000
200 15000 0 8000
1 D 80 位置 0 8000
0 150 12000
3 D 80 12000
--- Inventory ---
product 库存 状态
0 A 500 正常
1 B 300 低库存
2 位置 400 格式 0 12000
3 位置 200 200
Codeanalyse:
pd.ExcelWriterist ein Kontextmanager zum Schreiben mehrerer Arbeitsblätter.- In
withIm Block können Sie mehrere Aufrufe durchführento_excel(), wobei Sie jedes Mal einen anderen Arbeitsblattnamen angeben. - Auf diese Weise können zusammengehörige Daten in derselben Excel-Datei organisiert werden.
Beispiel 3: Anpassen von Format und Position
Es kann die Startposition, das Format und den Umgang mit fehlenden Werten steuern.
Beispiel
# Erstelle einen DataFrame mit fehlenden Werten und Fließkommazahlen
df = pd.DataFrame({
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, None, 42, 26],
'score': [85.567, 92.333, 78.999, 95.0],
'city': ['Beijing', 'Shanghai', None, 'Shenzhen']
})
# Beispiel 3a: Darstellung fehlender Werte anpassen
df.to_excel('output_na.xlsx', index=False, na_rep='N/A')
print("Exportiert (benutzerdefinierte fehlende Werte)")
# Beispiel 3b: Gleitkommazahlen formatieren
# float_format verwendet die Syntax von Python-Formatstrings
df.to_excel('output_float.xlsx', index=False, float_format='%.2f')
print("Exportiert (Gleitkommazahlen auf 2 Dezimalstellen gerundet)")
# Beispiel 3c: Bestimmte Spalten exportieren
df.to_excel('output_cols.xlsx', index=False, columns=['name', 'score'])
print("Exportiert (nur Name- und Punktzahl-Spalten)")
# Beispiel 3d: Startposition der Daten angeben
# startrow und startcol steuern die Startposition der Daten in Zellen
with pd.ExcelWriter('output_position.xlsx', engine='openpyxl') as writer:
# Header-Informationen schreiben
writer.sheets['Sheet1'].cell(1, 1).value = 'Mitarbeiter-Punktetabelle'
writer.sheets['Sheet1'].cell(2, 1).value = 'Statistikzeit: 2024-01-01'
# Daten ab Zeile 4 schreiben
df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=3)
print("Exportiert (angegebene Startposition)")
# Beispiel 3e: Index- und Spaltennamen nicht exportieren
df.to_excel('output_no_header.xlsx', index=False, header=False)
print("Exportiert (ohne Index- und Spaltennamen)")
# Inhalt der generierten Datei anzeigen
print(nInhalt jeder Datei:)
for fname in ['output_na.xlsx', 'output_float.xlsx', 'output_cols.xlsx']:
print(f"n--- {fname} ---")
df_read = pd.read_excel(fname)
print(df_read)
Erwartete Ausgabe:
已导出(自定义缺失值)
已导出((浮点数保留2位小数)
已导出(只包含 name 和 score 列)
已自由 指定起始位置)
已导出(不包含索引和列名)
各文件内容:
--- output_na.xlsx ---
name age score city
0 Tom 28 85.567 Beijing
1 Jerry 条件 92.333 Shanghai
2 格式 42 格式 78.999 datetime
3 Lucy 26 格式 95.00 格式化 Shenzhen
--- output_float.xlsx ---
格式 Excel 位置 startrow startcol 在指定位置写入 float_format='%.2f' 保留两位小数 na_rep='N/A' 自定义缺失值
2.0
...
Codeanalyse:
na_repParameter passt die Stringdarstellung fehlender Werte an.float_formatParameter verwendet Python-Formatstrings, wie zum Beispiel'%.2f'um zwei Dezimalstellen beizubehalten.columnsParameter exportiert nur die angegebenen Spalten.startrowundstartcolkann die Startzellenposition der Daten in Excel steuern.
Beispiel 4: Formatierung mit xlsxwriter-Engine
Die xlsxwriter-Engine bietet reichere Formatierungsfunktionen.
Beispiel
# xlsxwriter muss installiert werden: pip install xlsxwriter
# DataFrame erstellen
df = pd.DataFrame({
'name': ['Tom', 'Jerry', 'Mike', 'Lucy', 'John'],
'age': [28, 35, 42, 26, 31],
'salary': [8000, 12000, 15000, 7000, 9000],
'department': ['IT', 'HR', 'Sales', 'IT', 'HR']
})
# Beispiel 4: Formatierung mit xlsxwriter festlegen
# Muss zuerst installiert werden: pip install xlsxwriter
with pd.ExcelWriter('formatted.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='Employees', index=False)
# Arbeitsmappen- und Arbeitsblattobjekte abrufen
workbook = writer.book
worksheet = writer.sheets['Employees']
# Formate definieren
header_format = workbook.add_format({
'bold': True, # Fett
'fg_color': '#4472C4', # Hintergrundfarbe (blau)
'font_color': 'white', # Schriftfarbe (weiß)
'align': 'center', # Horizontal zentriert
'valign': 'vcenter', # Vertikal zentriert
'border': 1 # Rahmen
})
# Spaltenbreiten festlegen
worksheet.set_column('A:A', 10) # Spalte A Breite 10
worksheet.set_column('B:B', 8)
worksheet.set_column('C:C', 12)
worksheet.set_column('D:D', 12)
# Formatierten Header schreiben
for col_num, column_name in enumerate(df.columns.values):
worksheet.write(0, col_num, column_name, header_format)
print("Formatierte Excel-Datei exportiert: formatted.xlsx")
print("Formatierung umfasst: fette Kopfzeile, blauer Hintergrund, weißer Text, zentriert, Rahmen, Spaltenbreiteneinstellungen")
Erwartete Ausgabe:
先安装 xlsxwriter 库再运行此示例。 已导出带格式的 Excel 文件: formatted.xlsx 格式包括:制作 表头加粗、蓝色背景、白字、 居中、边框、列宽 导出 使用 openpyxl 引擎 导入 xlsxwriter 引擎支持更丰富的格式设置,如单元格样式、条件格式、图表等 如果需要更高级的 Excel 格式设置,建议: 1. 使用 openpyxl 直接操作 2. 使用 xlsxwriter 获得更好的性能和格式支持
Codeanalyse:
xlsxwriterDie Engine bietet umfangreichere Formatierungsfunktionen.- Durch
workbook.add_format()Formatobjekte erstellen. - Du kannst Schriftart, Hintergrundfarbe, Rahmen, Ausrichtung usw. festlegen.
worksheet.set_column()Spaltenbreiten festlegen.
Hinweise
- Verwendung
.xlsxFormat erfordert Installationopenpyxl:pip install openpyxl。 - Verwendung
xlsxwriterEngine erfordert Installation:pip install xlsxwriter。 - Standardmäßig wird der Index exportiert; wenn nicht benötigt, setzen Sie
index=False。 - Beim Exportieren mehrerer Arbeitsblätter verwenden Sie
pd.ExcelWriterKontextmanager. startrowundstartcolDie Zählung beginnt bei 0, d. h. startrow=0 bedeutet die erste Zeile.
Zusammenfassung
to_excel()ist die Kernmethode zum Exportieren eines DataFrame in eine Excel-Datei. Sie ist leistungsstark und unterstützt mehrere Arbeitsblätter in einer Datei, benutzerdefinierte Formatierung, Steuerung der Startposition und mehr.
In der Praxis ist Excel das am häufigsten verwendete Format für Datenberichte,to_excel()Es kann die meisten Exportanforderungen erfüllen. Wenn komplexere Formatierungen erforderlich sind, können Sie die xlsxwriter-Engine oder direkt die openpyxl-Bibliothek verwenden. Es wird empfohlen, dass Leser die geeignete Engine und Parameterkonfiguration basierend auf den tatsächlichen Anforderungen wählen.
Pandas Häufige Funktionen