Pandas Excel-Dateioperationen
Pandas bietet umfangreiche Excel-Dateibearbeitungsfunktionen, die uns bequemes Lesen und Schreiben ermöglichen.xlsund.xlsxDateien, unterstützt komplexe Operationen wie mehrere Arbeitsblätter, Indexierung und Spaltenauswahl. Es ist ein unverzichtbares Werkzeug in der Datenanalyse.
| Aktion | Methode | Beschreibung |
|---|---|---|
| Excel-Datei lesen | pd.read_excel() |
Eine Excel-Datei lesen und ein DataFrame zurückgeben |
| DataFrame nach Excel schreiben | DataFrame.to_excel() |
Ein DataFrame in eine Excel-Datei schreiben |
| Excel-Datei laden | pd.ExcelFile() |
Eine Excel-Datei laden und auf mehrere Arbeitsblätter zugreifen |
| ExcelWriter verwenden, um mehrere Arbeitsblätter zu schreiben | pd.ExcelWriter() |
Mehrere DataFrames in verschiedene Arbeitsblätter derselben Excel-Datei schreiben |
pd.read_excel() - 读取 Excel 文件
pd.read_excel()Die Methode wird verwendet, um Daten aus einer Excel-Datei zu lesen und als DataFrame zu laden. Sie unterstützt das Lesen.xlsund.xlsxformatierter Dateien.
Die Syntax lautet wie folgt:
pandas.read_excel(io, sheet_name=0, *, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=<no_default>, date_format=None, thousands=None, decimal='.', comment=None, skipfooter=0, storage_options=None, dtype_backend=<no_default>, engine_kwargs=None)
Parameter description:
-
io: Dies ist ein erforderlicher Parameter, der den Pfad oder das Dateiobjekt der zu lesenden Excel-Datei angibt. -
sheet_name=0: Gibt den Namen oder Index des zu lesenden Arbeitsblatts an. Standard ist 0, d. h. das erste Arbeitsblatt. -
header=0: Gibt die Zeile an, die als Spaltennamen verwendet werden soll. Standard ist 0, d. h. die erste Zeile. -
names=None: Eine Liste, die verwendet wird, um Spaltennamen anzugeben. Wenn angegeben, überschreibt sie die Spaltennamen in der Datei. -
index_col=None: Gibt die Spalte an, die als Zeilenindex verwendet werden soll. Sie kann ein Spaltenname oder eine Zahl sein. -
usecols=None: Gibt die zu lesenden Spalten an. Sie kann eine Liste von Spaltennamen oder eine Liste von Spaltenindizes sein. -
dtype=None: Gibt die Datentypen der Spalten an. Sie kann im Wörterbuchformat angegeben werden, wobei Schlüssel Spaltennamen und Werte Datentypen sind. -
engine=None: Gibt die Parsing-Engine an. Standard istNone, pandas wird automatisch auswählen. -
converters=None: Ein Wörterbuch mit Funktionen, die zum Konvertieren von Daten verwendet werden. -
true_values=None: Gibt Werte an, die als boolesch behandelt werden sollenTrueWerte. -
false_values=None: Gibt Werte an, die als boolesch behandelt werden sollenFalseWerte. -
skiprows=None: Gibt die Anzahl der zu überspringenden Zeilen oder eine Liste der zu überspringenden Zeilen an. -
nrows=None: Gibt die Anzahl der zu lesenden Zeilen an. -
na_values=None: Gibt Werte an, die als fehlende Werte behandelt werden sollen. -
keep_default_na=True: Gibt an, ob Standard-Fehltwerte (wie z. B.NaN) als ... parsenNA。 -
na_filter=True: Gibt an, ob Daten konvertiert werden sollen inNA。 -
verbose=False: Gibt an, ob detaillierte Fortschrittsinformationen ausgegeben werden sollen. -
parse_dates=False: Gibt an, ob Datumsangaben geparst werden sollen. -
date_parser=<no_default>: Eine Funktion zum Parsen von Datumsangaben. -
date_format=None: Geben Sie das Format der Datumsangaben an. -
thousands=None: Geben Sie das Tausendertrennzeichen an. -
decimal='.': Geben Sie das Dezimalpunktzeichen an. -
comment=None: Geben Sie das Kommentarzeichen an. -
skipfooter=0: Geben Sie die Anzahl der am Ende der Datei zu überspringenden Zeilen an. -
storage_options=None: Ein Parameterwörterbuch für Cloud-Speicher. -
dtype_backend=<no_default>: Geben Sie das Backend für den Datentyp an. -
engine_kwargs=None: Ein Wörterbuch mit zusätzlichen Parametern, die an die Engine übergeben werden.
In diesem Artikel wirdexample_pandas_data.xlsxals Beispiel verwendet. Sie könnenexample_pandas_data.xlsx herunterladenzum Testen.
Beispiel
# Die Datei data.xlsx einlesen
df = pd.read_excel('example_pandas_data.xlsx')
# Das gelesene DataFrame ausgeben
print(df)
Die Ausgabe ist:
表格 1 Unnamed: 1 Unnamed: 2 0 Name Age City 1 Alice 25 New York 2 Bob 30 Los Angeles 3 Charlie 35 Chicago
read_excel liest standardmäßig das erste Blatt (sheet_name=0). Angenommen, die Datei data.xlsx hat nur ein Blatt, werden die gelesenen Daten in einem DataFrame gespeichert.
Wenn die Datei data.xlsx mehrere Blätter enthält, können Sie sheet_name angeben, um Daten aus einem bestimmten Blatt zu lesen, zum Beispielpd.read_excel('data.xlsx', sheet_name='Sheet1')。
Beispiel
# Standardmäßig das erste Blatt lesen
df = pd.read_excel('data.xlsx')
print(df)
# Den Inhalt eines angegebenen Blatts lesen (nach Blattname)
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df)
# Mehrere Blätter lesen, wobei ein Dictionary zurückgegeben wird
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(dfs)
# Spaltennamen anpassen und die ersten zwei Zeilen überspringen
df = pd.read_excel('data.xlsx', header=None, names=['A', 'B', 'C'], skiprows=2)
print(df)
DataFrame.to_excel() - DataFrame in Excel-Datei schreiben
to_excel()Die Methode wird verwendet, um ein DataFrame in eine Excel-Datei zu schreiben und unterstützt.xlsund.xlsxFormate.
Die Syntax lautet wie folgt:
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', freeze_panes=None, storage_options=None, engine_kwargs=None)
Parameter description:
-
excel_writer: Dies ist ein erforderlicher Parameter, der den Excel-Dateipfad oder das Dateiobjekt angibt, in das geschrieben werden soll. -
sheet_name='Sheet1': Gibt den Namen des Arbeitsblatts an, in das geschrieben werden soll, standardmäßig'Sheet1'。 -
na_rep='': Gibt die Zeichenfolge an, die fehlende Werte (NaN) in der Excel-Datei darstellt. Der Standardwert ist eine leere Zeichenfolge. -
float_format=None: Gibt das Format von Gleitkommazahlen an. Wenn esNone, wird das Standardformat von Excel verwendet. -
columns=None: Gibt die zu schreibenden Spalten an. Wenn esNone, werden alle Spalten geschrieben. -
header=True: Gibt an, ob Spaltennamen als erste Zeile geschrieben werden. Ist esFalse, werden die Spaltennamen nicht geschrieben. -
index=True: Gibt an, ob der Index als erste Spalte geschrieben wird. Ist esFalse, wird der Index nicht geschrieben. -
index_label=None: Gibt die Beschriftung für die Indexspalte an. Ist esNone, wird die Indexbeschriftung nicht geschrieben. -
startrow=0: Gibt die Zeilennummer an, ab der geschrieben werden soll. Der Standardwert ist Zeile 0. -
startcol=0: Gibt die Spaltennummer an, ab der geschrieben werden soll. Der Standardwert ist Spalte 0. -
engine=None: Gibt die Engine an, die beim Schreiben in die Excel-Datei verwendet wird. Der Standardwert istNone, pandas wird automatisch auswählen. -
merge_cells=True: Gibt an, ob Zellen zusammengeführt werden. Ist esTrue, werden Zellen mit demselben Wert zusammengeführt. -
inf_rep='inf': Geben Sie die Zeichenfolge an, die unendliche Werte in der Excel-Datei darstellt. Der Standardwert ist'inf'。 -
freeze_panes=None: Geben Sie die Position der fixierten Bereiche an. Wenn sieNoneist, werden die Bereiche nicht fixiert. -
storage_options=None: Ein Parameterwörterbuch für Cloud-Speicher. -
engine_kwargs=None: Ein Wörterbuch mit zusätzlichen Parametern, die an die Engine übergeben werden.
Beispiel
# Ein einfaches DataFrame erstellen
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})
# Schreibe das DataFrame in eine Excel-Datei, in das Blatt 'Sheet1'
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
# Schreibe mehrere Blätter mit ExcelWriter
with pd.ExcelWriter('output.xlsx') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
df.to_excel(writer, sheet_name='Sheet2', index=False)
ExcelFile - Excel-Datei laden
ExcelFileEs ist eine Klasse zum Lesen von Excel-Dateien. Sie kann mehrere Blätter verarbeiten und auf die darin enthaltenen Daten zugreifen, ohne die Datei erneut zu öffnen.
Die Syntax lautet wie folgt:
excel_file = pd.ExcelFile('data.xlsx')
Häufige Methoden:
| Methode | Funktionsbeschreibung |
|---|---|
sheet_names |
Gibt eine Liste der Namen aller Blätter in der Datei zurück |
parse(sheet_name) |
Das angegebene Arbeitsblatt parsen und ein DataFrame zurückgeben |
close() |
Die Datei schließen, um Ressourcen freizugeben |
Beispiel
# ExcelFile verwenden, um eine Excel-Datei zu laden
excel_file = pd.ExcelFile('data.xlsx')
# Die Namen aller Arbeitsblätter anzeigen
print(excel_file.sheet_names)
# Das angegebene Arbeitsblatt lesen
df = excel_file.parse('Sheet1')
print(df)
# Datei schließen
excel_file.close()
ExcelWriter - Excel-Datei schreiben
ExcelWriter ist eine von pandas bereitgestellte Klasse, die verwendet wird, um DataFrame- oder Series-Objekte in Excel-Dateien zu schreiben. Mit ExcelWriter können Sie mehrere Arbeitsblätter in eine Excel-Datei schreiben und haben flexiblere Kontrolle über den Schreibvorgang.
Die Syntax lautet wie folgt:
pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None)
Parameter description:
-
path: Dies ist ein erforderlicher Parameter, der den Pfad, die URL oder das Dateiobjekt der zu schreibenden Excel-Datei angibt. Er kann ein lokaler Dateipfad, ein Remote-Speicherpfad (wie S3), ein URL-Link oder ein bereits geöffnetes Dateiobjekt sein.。 -
engine: Dies ist ein optionaler Parameter, der verwendet wird, um die Engine zum Schreiben in die Excel-Datei anzugeben. Wenn erNone, wird pandas automatisch eine verfügbare Engine auswählen (standardmäßig bevorzugt esopenpyxl, und wenn nicht verfügbar, wählt es eine andere verfügbare Engine aus). Zu den gängigen Engines gehören'openpyxl'(für.xlsxDateien),'xlsxwriter'(bietet erweiterte Formatierungs- und Diagrammfunktionen),'odf'(für OpenDocument-Formate wie.ods) usw.。 -
date_format: Dies ist ein optionaler Parameter, der die Formatzeichenfolge für in die Excel-Datei geschriebene Datumsangaben angibt, zum Beispiel"YYYY-MM-DD"。 -
datetime_formatDies ist ein optionaler Parameter, der die Formatzeichenfolge für in die Excel-Datei geschriebene datetime-Objekte angibt, zum Beispiel"YYYY-MM-DD HH:MM:SS"。 -
modeDies ist ein optionaler Parameter, der standardmäßig auf'w', der den Schreibmodus angibt. Wenn er auf'a', es bedeutet Append-Modus, Daten an eine vorhandene Datei anzuhängen (nur von einigen Engines unterstützt, wie z. B.openpyxl)。 -
storage_optionsDies ist ein optionaler Parameter, der verwendet wird, um zusätzliche Optionen für die Verbindung zum Speicher-Backend anzugeben, wie Authentifizierungsinformationen, Zugriffsberechtigungen usw., anwendbar beim Schreiben in Remote-Speicher (wie S3, GCS)。 -
if_sheet_existsDies ist ein optionaler Parameter, der standardmäßig auf'error', das das Verhalten angibt, wenn ein Arbeitsblatt bereits vorhanden ist. Zu den Optionen gehören'error'(einen Fehler auslösen),'new'(ein neues Arbeitsblatt erstellen),'replace'(den Inhalt des vorhandenen Arbeitsblatts ersetzen),'overlay'(auf dem vorhandenen Arbeitsblatt überschreiben)。 -
engine_kwargsDies ist ein optionaler Parameter, der verwendet wird, um andere Schlüsselwortargumente an die Engine zu übergeben. Diese Argumente werden an die Funktionen der entsprechenden Engine übergeben, zum Beispielxlsxwriter.Workbook(file, **engine_kwargs)oderopenpyxl.Workbook(**engine_kwargs)warten。
Erstellen eines ExcelWriter-Objekts:
Beispiel
df.to_excel(writer, sheet_name='Sheet1')
Hier wird ExcelWriter als Kontextmanager verwendet, um sicherzustellen, dass die Datei nach Abschluss des Vorgangs ordnungsgemäß geschlossen wird.
In mehrere Arbeitsblätter schreiben:
Sie können dasselbe ExcelWriter-Objekt verwenden, um verschiedene DataFrames in verschiedene Arbeitsblätter derselben Excel-Datei zu schreiben.
Beispiel
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with pd.ExcelWriter("path_to_file.xlsx") as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet2")
Festlegen des Datumsformats oder datetime-Formats:
Beispiel
df = pd.DataFrame(
[
[date(2014, 1, 31), date(1999, 9, 24)],
[datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
],
index=["Date", "Datetime"],
columns=["X", "Y"],
)
with pd.ExcelWriter(
"path_to_file.xlsx",
date_format="YYYY-MM-DD",
datetime_format="YYYY-MM-DD HH:MM:SS"
) as writer:
df.to_excel(writer)
Inhalt an eine vorhandene Excel-Datei anhängen:
Beispiel
df.to_excel(writer, sheet_name="Sheet3")
Verwendung des Parameters if_sheet_exists zum Ersetzen eines vorhandenen Arbeitsblatts:
Beispiel
"path_to_file.xlsx",
mode="a",
engine="openpyxl",
if_sheet_exists="replace",
) as writer:
df.to_excel(writer, sheet_name="Sheet1")
Beim Schreiben mehrerer DataFrames in dasselbe Arbeitsblatt ist zu beachten, dass der Parameter if_sheet_exists auf overlay gesetzt werden muss:
Beispiel
mode="a",
engine="openpyxl",
if_sheet_exists="overlay",
) as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet1", startcol=3)
Speichern der Excel-Datei im Arbeitsspeicher:
Beispiel
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
buffer = io.BytesIO()
with pd.ExcelWriter(buffer) as writer:
df.to_excel(writer)
Verpacken der Excel-Datei in eine ZIP-komprimierte Datei:
Beispiel
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with zipfile.ZipFile("path_to_file.zip", "w") as zf:
with zf.open("filename.xlsx", "w") as buffer:
with pd.ExcelWriter(buffer) as writer:
df.to_excel(writer)
Übergeben zusätzlicher Argumente an die zugrunde liegende Engine:
Beispiel
"path_to_file.xlsx",
engine="xlsxwriter",
engine_kwargs={"options": {"nan_inf_to_errors": True}}
) as writer:
df.to_excel(writer)
Im Append-Modus werden engine_kwargs an das load_workbook von openpyxl übergeben:
Beispiel
"path_to_file.xlsx",
engine="openpyxl",
mode="a",
engine_kwargs={"keep_vba": True}
) as writer:
df.to_excel(writer, sheet_name="Sheet2")