Pandas df.to_excel()-Funktion

Python 常用函数Pandas Häufige Funktionen


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

ParameterTypeBeschreibungStandardwert
excel_writerstr, ExcelWriter, Pfadobjekt, dateiähnliches ObjektDateipfad oder ExcelWriter-ObjektErforderlich
sheet_namestrBlattname'Sheet1'
na_repstrDarstellung fehlender Werte''
float_formatstrFormat für GleitkommazahlenKeine
columnsListeZu exportierende SpaltenKeine
headerboolOb Spaltennamen exportiert werden sollenTrue
indexboolOb der Index exportiert werden sollTrue
index_labelstrName der IndexspalteKeine
startrowintStartzeile der Daten (0-basiert)0
startcolintStartspalte der Daten (0-basiert)0
enginestrWriter-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 pandas as pd
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

import pandas as pd

# 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.
  • InwithIm 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

import pandas as pd

# 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

import pandas as pd

# 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.
  • Durchworkbook.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。
  • VerwendungxlsxwriterEngine erfordert Installation:pip install xlsxwriter。
  • Standardmäßig wird der Index exportiert; wenn nicht benötigt, setzen Sieindex=False。
  • Beim Exportieren mehrerer Arbeitsblätter verwenden Siepd.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.

Python 常用函数Pandas Häufige Funktionen

Andere Erweiterungen