Pandas pd.read_excel()-Funktion
read_excel()ist eine Funktion in der pandas-Bibliothek, die zum Lesen von Excel-Dateien verwendet wird und das Lesen unterstützt.xlsxund.xlsExcel-Dateien im Format.
Excel ist das am häufigsten verwendete Dateiformat in der Unternehmensdatenanalyse. Es unterstützt mehrere Arbeitsblätter, umfangreiche Zellformatierung, Formeln usw.read_excel()Es kann Daten aus Excel-Dateien lesen und sie in das pandas-DataFrame-Format umwandeln, was die anschließende Datenverarbeitung und -analyse erleichtert.
Grundlegende Syntax und Parameter
Syntaxformat
pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
usecols=None, dtype=None, skiprows=None, nrows=None,
na_values=None, ...)
Parameterbeschreibung
| Parameter | Type | Beschreibung | Standardwert |
|---|---|---|---|
| io | str, ExcelFile, Pfadobjekt, dateiähnliches Objekt | Excel-Dateipfad oder ExcelFile-Objekt | Erforderlich |
| sheet_name | str, int, list, None | Arbeitsblattname oder -index zum Lesen; None liest alle Arbeitsblätter | 0 |
| header | int, list von int | Zeilennummer, die als Spaltennamen verwendet werden soll; 0 bedeutet die erste Zeile | 0 |
| names | listenähnlich | Liste benutzerdefinierter Spaltennamen | Keine |
| index_col | int, str | Spalte, die als Zeilenindex verwendet werden soll | Keine |
| usecols | int, str, list | Nur die angegebenen Spalten lesen | Keine |
| dtype | dict | Datentyp für angegebene Spalten | Keine |
| skiprows | listenähnlich, int | Die angegebenen Zeilen überspringen | Keine |
| nrows | int | Nur die ersten n Zeilen lesen | Keine |
Rückgabewert
- Rückgabetyp:
pd.DataFrameoderdictvon DataFrames - Wann
sheet_nameWenn es sich um ein einzelnes Arbeitsblatt handelt, wird ein DataFrame zurückgegeben. - Wann
sheet_nameWenn es None ist oder mehrere Arbeitsblätter enthält, wird ein Wörterbuch mit Arbeitsblattnamen als Schlüssel und entsprechenden DataFrames als Werte zurückgegeben.
Beispiele
Anhand der folgenden Beispiele meistern Sie umfassendread_excel()die verschiedenen Verwendungsweisen von.
Beispiel 1: Eine lokale Excel-Datei lesen
Erstellen und lesen Sie zunächst eine einfache Excel-Datei.
Beispiel
import openpyxl # Installation erforderlich: pip install openpyxl
# DataFrame erstellen
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
'salary': [8000, 12000, 15000, 7000]
}
df_original = pd.DataFrame(data)
# DataFrame in eine Excel-Datei schreiben
# Excel-Dateipfad: employees.xlsx
df_original.to_excel('employees.xlsx', index=False, engine='openpyxl')
# read_excel verwenden, um die Excel-Datei zu lesen
# io: Dateipfad (erforderlich)
df = pd.read_excel('employees.xlsx')
# Das eingelesene Ergebnis anzeigen
print("DataFrame gelesen:")
print(df)
print("nDatentypen:")
print(df.dtypes)
Erwartete Ausgabe:
读取的 DataFrame:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
数据类型:
name object
age int64
city object
salary int64
Code-Erklärung:
pd.read_excel('employees.xlsx')Dies ist die grundlegendste Verwendung; übergeben Sie einfach den Dateipfad.- Standardmäßig liest es das erste Arbeitsblatt (sheet_name=0) mit der ersten Zeile als Spaltennamen.
- Installation erforderlich
openpyxlBibliothek zur Unterstützung des Lesens und Schreibens des .xlsx-Formats.
Beispiel 2: Mehrere Arbeitsblätter lesen
Excel-Dateien können mehrere Arbeitsblätter enthalten,read_excel()wodurch das flexible Lesen angegebener Arbeitsblätter oder aller Arbeitsblätter unterstützt wird.
# Eine Excel-Datei mit mehreren Arbeitsblättern erstellen
# Zuerst zwei DataFrames erstellen
df_sales = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'quantity': [100, 200, 150, 80],
'price': [50, 30, 40, 60]
})
df_inventory = pd.DataFrame({
'product': ['A', 'B', 'C', 'D'],
'stock': [500, 300, 400, 200],
'warehouse': ['WH1', 'WH2', 'WH1', 'WH3']
})
# Mehrere Arbeitsblätter in eine Excel-Datei schreiben
with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
df_sales.to_excel(writer, sheet_name='Sales', index=False)
df_inventory.to_excel(writer, sheet_name='Inventory', index=False)
# Beispiel 2a: Ein angegebenes Arbeitsblatt lesen (nach Namen)
df_sales_read = pd.read_excel('multi_sheet.xlsx', sheet_name='Sales')
print("Sales-Arbeitsblatt lesen:")
print(df_sales_read)
print()
# Beispiel 2b: Ein bestimmtes Arbeitsblatt lesen (nach Index)
df_inv_read = pd.read_excel('multi_sheet.xlsx', sheet_name=1)
print("2. Arbeitsblatt lesen (Index 1):")
print(df_inv_read)
print()
# Beispiel 2c: Alle Arbeitsblätter lesen (gibt ein Dictionary zurück)
all_sheets = pd.read_excel('multi_sheet.xlsx', sheet_name=None)
print("Alle Arbeitsblattnamen:", list(all_sheets.keys()))
print("nAlle Arbeitsblätter durchlaufen:")
for sheet_name, df_sheet in all_sheets.items():
print(f"n--- {sheet_name} ---")
print(df_sheet)
Erwartete Ausgabe:
读取 Sales 工作表: product quantity price 0 A 100 50 1 B 200 30 2 C 150 40 3 D 80 60 读取第2个工作表 (索引为1): product stock warehouse 0 A 500 WH1 1 B 300 WA2 2 C 400 WH1 3 D 200 WH3 所有工作表名称: ['Sales', 'Inventory'] 遍历所有工作表: --- Sales --- product quantity price ... --- Inventory --- product stock warehouse ...
Code-Erklärung:
sheet_nameDer Parameter sheet_name kann Arbeitsblattnamen (Zeichenketten) oder Indizes (Ganzzahlen) akzeptieren.- Einstellung
sheet_name=Noneliest alle Arbeitsblätter und gibt ein Wörterbuch zurück, wobei Arbeitsblattnamen als Schlüssel und DataFrames als Werte verwendet werden. - Verwendung
pd.ExcelWritermacht es einfach, mehrere Arbeitsblätter zu schreiben.
Beispiel 3: Erweiterte Verwendung - Benutzerdefinierte Spalten und Überspringen von Zeilen
In der Praxis können Excel-Dateien komplexe Formate aufweisen, die eine flexible Handhabung erfordern.
Beispiel
# Erstellen Sie eine Excel-Datei mit einer Kopfzeile und leeren Zeilen
# Die ersten paar Zeilen sind Metadaten; die eigentlichen Daten beginnen in Zeile 4
data_with_header = """Mitarbeiterdaten des Unternehmens
Erstellungsdatum: 2024-01-01
Abteilung: Technologieabteilung
---
name,age,city,salary
Tom,28,Beijing,8000
Jerry,35,Shanghai,12000
"""
# Zuerst eine CSV erstellen und dann in Excel konvertieren (Simulation eines realen Szenarios)
import io
df_temp = pd.read_csv(io.StringIO(data_with_header.split('---')[1]))
df_temp.to_excel('complex_format.xlsx', index=False, engine='openpyxl')
# Beispiel 3a: Die ersten paar Zeilen überspringen, die N-te Zeile als Spaltennamen verwenden
df_skip = pd.read_excel('complex_format.xlsx', header=3)
print("Die ersten 3 Zeilen überspringen, Zeile 4 als Spaltennamen verwenden:")
print(df_skip)
print()
# Beispiel 3b: Nur die angegebenen Spalten lesen
df_cols = pd.read_excel('complex_format.xlsx', usecols=['name', 'salary'])
print("Nur die Spalten name und salary lesen:")
print(df_cols)
print()
# Beispiel 3c: Nur die ersten paar Zeilen lesen
df_head = pd.read_excel('complex_format.xlsx', nrows=2)
print("Nur die ersten 2 Zeilen lesen:")
print(df_head)
print()
# Beispiel 3d: Benutzerdefinierte Spaltennamen
df_custom_names = pd.read_excel('complex_format.xlsx',
names=['Name', 'Alter', 'Stadt', 'Salary'],
header=0)
print("Benutzerdefinierte Spaltennamen:")
print(df_custom_names)
Erwartete Ausgabe:
跳过前3行,使用第4行作为列名:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
只读取 name 和 salary 列:
name salary
0 Tom 8000
1 Jerry 12000
只读取前2行:
name age city salary
0 Tom 28 Beijing 8000
自定义列名:
姓名 年龄 城市 薪资
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
Code-Erklärung:
headerDer Parameter header gibt an, welche Zeile als Spaltennamen verwendet werden soll (Zählung beginnt bei 0).usecolsusecols kann angeben, welche Spalten gelesen werden sollen, und unterstützt Listen von Spaltennamen oder Spaltenindizes.nrowsnrows begrenzt die Anzahl der gelesenen Zeilen, geeignet für das partielle Lesen großer Dateien.namesDer Parameter names kann Spaltennamen anpassen und überschreibt die Spaltennamen in der Originaldatei.
Hinweise
- Das Lesen des .xlsx-Formats erfordert die Installation von
openpyxl:pip install openpyxl。 - Das Lesen des .xls-Formats erfordert die Installation von
xlrd:pip install xlrd(Hinweis: xlrd 2.0+ unterstützt keine .xls-Dateien mehr). - Excel-Dateien haben Zeilen- und Spaltengrenzen (maximal 1,048,576 Zeilen und 16,384 Spalten); das Überschreiten dieser Grenzen führt zu Datenverlust.
- Beim Lesen großer Dateien sollten Sie die Verwendung von
usecolsdem usecols-Parameter in Betracht ziehen, um nur die benötigten Spalten zu lesen und die Leistung zu verbessern. sheet_nameDer sheet_name-Parameter unterstützt das Mischen von Namen und Indizes.
Zusammenfassung
read_excel()Es ist die Kernfunktion in pandas zum Lesen von Excel-Dateien und sehr leistungsstark. Sie unterstützt das Lesen einzelner oder mehrerer Arbeitsblätter und kann Excel-Dateien in verschiedenen Formaten flexibel verarbeiten.
In der praktischen Datenanalyse sind Excel-Dateien eine der häufigsten Datenquellen. Die Beherrschungread_excel()der verschiedenen Parameternutzungen ermöglicht es Ihnen, alle Arten von Excel-Daten effizient zu verarbeiten, was Sie auf die anschließende Datenbereinigung und -analyse vorbereitet. Lesern wird empfohlen, mehr zu üben, insbesondere das Lesen mehrerer Arbeitsblätter und die Konfiguration von Parametern.
Pandas Häufige Funktionen