Pandas pd.ead_csv()-Funktion
read_csv()ist die am häufigsten verwendete Datenlesefunktion in der pandas-Bibliothek und wird verwendet, um Daten aus CSV-Dateien (Comma-Separated Values) zu lesen und ein DataFrame zu erstellen.
CSV-Dateien sind ein einfaches und weit verbreitetes Datenaustauschformat, das tabellarische Daten im Klartext speichert, wobei jede Zeile einen Datensatz darstellt und Felder durch Kommas getrennt sind.read_csv()Es kann CSV-Dateien intelligent parsen, Spaltennamen und Datentypen automatisch erkennen und verschiedene Trennzeichen- und Kodierungsprobleme behandeln.
Grundlegende Syntax und Parameter
Syntaxformat
pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',
names=None, index_col=None, usecols=None, dtype=None,
skiprows=None, nrows=None, na_values=None, ...)
Parameterbeschreibung
| Parameter | Type | Beschreibung | Standardwert |
|---|---|---|---|
| filepath_or_buffer | str, Pfadobjekt oder dateiähnliches Objekt | Der Pfad, URL oder das Dateiobjekt der CSV-Datei | Erforderlich |
| sep | str | Feldtrennzeichen, standardmäßig ein Komma für CSV | ',' |
| header | int, Liste von int, 'infer' | Zeilennummer, die als Spaltennamen verwendet wird, 0 bedeutet die erste Zeile | 'infer' |
| names | listenähnlich | Benutzerdefinierte Liste von Spaltennamen | Keine |
| index_col | int, str, Liste von int, Liste von str, False | Spalte, die als Zeilenindex verwendet wird | Keine |
| usecols | listenähnlich, aufrufbar | Nur die angegebenen Spalten lesen | Keine |
| dtype | dict | Datentypen für angegebene Spalten, z. B. {'a': np.float64} | Keine |
| skiprows | listenähnlich, int | Die angegebenen Zeilen überspringen | Keine |
| nrows | int | Nur die ersten n Zeilen lesen | Keine |
| na_values | Skalar, str, listenähnlich, dict | Als NA/NaN erkannte Werte | Keine |
| encoding | str | Dateikodierung, z. B. 'utf-8' | Keine |
Rückgabewert
- Rückgabetyp:
pd.DataFrame - Gibt eine zweidimensionale beschriftete Datenstruktur zurück, d. h. ein pandas DataFrame, auf dem verschiedene Datenanalyse- und Verarbeitungsoperationen ausgeführt werden können.
Beispiele
Anhand der folgenden Beispiele vollständig meisternread_csv()die verschiedenen Verwendungsweisen.
Beispiel 1: Einlesen einer lokalen CSV-Datei
Erstellen Sie zunächst eine einfache CSV-Datei und verwenden Sie dannread_csv()um sie einzulesen.
Beispiel
# Eine Beispiel-CSV-Datei erstellen
# Zuerst einige Testdaten schreiben
data = """name,age,city,salary
Tom,28,Beijing,8000
Jerry,35,Shanghai,12000
Mike,42,Guangzhou,15000
Lucy,26,Shenzhen,7000
"""
# Die Daten in eine Datei schreiben (in der tatsächlichen Verwendung können Sie direkt eine vorhandene Datei einlesen)
with open('employees.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Verwenden Sie read_csv, um die CSV-Datei zu lesen
# filepath_or_buffer: Dateipfad (erforderlich)
df = pd.read_csv('employees.csv')
# Das eingelesene Ergebnis anzeigen
print("Das gelesene DataFrame:")
print(df)
print("\nDatentypen:")
print(df.dtypes)
print("\nSpaltennamen:", df.columns.tolist())
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
列名: ['name', 'age', 'city', 'salary']
Code-Erklärung:
pd.read_csv('employees.csv')ist die grundlegendste Verwendung; übergeben Sie einfach den Dateipfad direkt.- Standardmäßig wird die erste Zeile automatisch als Spaltennamen erkannt (header='infer').
- pandas leitet den Datentyp jeder Spalte automatisch ab: Strings werden zu object und Ganzzahlen zu int64.
- Das zurückgegebene DataFrame kann direkt verwendet werden, um
print()anzuzeigen, und auch nachfolgende Datenanalysen können durchgeführt werden.
Beispiel 2: Benutzerdefinierte Spaltennamen und Auswählen bestimmter Spalten
In der Praxis müssen wir möglicherweise Spaltennamen anpassen oder nur einige Spalten lesen, um die Leistung zu verbessern.
Beispiel
# Testdaten erstellen
data = """name,age,city,salary,department
Tom,28,Beijing,8000,IT
Jerry,35,Shanghai,12000,HR
Mike,42,Guangzhou,15000,Sales
Lucy,26,Shenzhen,7000,IT
"""
with open('employees2.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Beispiel 2a: Benutzerdefinierte Spaltennamen
# Der Parameter names wird verwendet, um neue Spaltennamen anzugeben, die die Spaltennamen in der Originaldatei überschreiben.
df_custom = pd.read_csv('employees2.csv', names=['Name', 'Age', 'City', 'Salary', 'Department'], header=0)
print("DataFrame nach benutzerdefinierten Spaltennamen:")
print(df_custom)
print()
# Beispiel 2b: Nur die angegebenen Spalten lesen
# Der Parameter usecols kann angeben, welche Spalten gelesen werden, was die Leistung verbessert.
df_partial = pd.read_csv('employees2.csv', usecols=['name', 'salary'])
print("Nur einige Spalten werden gelesen:")
print(df_partial)
print()
# Beispiel 2c: Verwenden Sie index_col, um die Indexspalte anzugeben
df_indexed = pd.read_csv('employees2.csv', index_col='name')
print("Name als Index festlegen:")
print(df_indexed)
Erwartete Ausgabe:
自定义列名后的 DataFrame:
姓名 年龄 城市 薪资 部门
0 Tom 28 Beijing 8000 IT
1 Jerry 35 Shanghai 12000 HR
2 Mike 42 Guangzhou 15000 Sales
3 Lucy 26 Shenzhen 7000 IT
只读取部分列:
name salary
0 Tom 8000
1 Jerry 12000
2 Mike 15000
3 Lucy 7000
设置 name 为索引:
age city salary department
name
Tom 28 Beijing 8000 IT
Jerry 35 Shanghai 12000 HR
Mike 42 Guangzhou 15000 Sales
Lucy 26 Shenzhen 7000 IT
Code-Erklärung:
namesDer Parameter muss mit der Anzahl der Spalten in den Daten übereinstimmen. Wenn die Datei eine Kopfzeile hat, können Sieheader=0um die ursprüngliche Kopfzeile zu verwenden.usecolsSie können eine Liste von Spaltennamen (empfohlen) oder eine Liste von Spaltenindizes übergeben; die Reihenfolge der zurückgegebenen Spalten entspricht der angegebenen Reihenfolge.index_colDas Festlegen einer Spalte als Zeilenindex erleichtert es, Daten später schnell über den Index abzufragen.
Beispiel 3: Umgang mit speziellen Daten und Verbesserung der Behandlung fehlender Werte
CSV-Dateien können fehlende Werte, spezielle Trennzeichen oder Situationen enthalten, in denen bestimmte Zeilen übersprungen werden müssen.
Beispiel
# CSV-Datei mit speziellen Daten erstellen
# Semikolon als Trennzeichen verwenden, enthält fehlende Werte und NA-Werte
data = """name;age;city;salary
Tom;28;Beijing;8000
Jerry;;Shanghai;12000
Mike;42;Guangzhou;
Lucy;26;NA;7000
"""
with open('employees3.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Beispiel 3a: Eine durch Semikolon getrennte Datei einlesen
df_semicolon = pd.read_csv('employees3.csv', sep=';')
print("Semikolon als Trennzeichen:")
print(df_semicolon)
print("Statistik fehlender Werte:")
print(df_semicolon.isnull())
print()
# Beispiel 3b: Angeben, welche Werte als fehlende Werte behandelt werden
df_na = pd.read_csv('employees3.csv', sep=';', na_values=['NA', 'missing'])
print("Nach benutzerdefinierten NA-Werten:")
print(df_na)
print()
# Beispiel 3c: Zeilen überspringen und die Anzahl der gelesenen Zeilen begrenzen
# Gehe davon aus, dass die ersten paar Zeilen der Datei Kommentare sind und übersprungen werden können
data_with_comment = """# Dies ist eine Mitarbeiterdatendatei
# Erstellungsdatum: 2024-01-01
Name;Alter;Stadt;Gehalt
Tom;28;Beijing;8000
Jerry;35;Shanghai;12000
Mike;42;Guangzhou;15000
Lucy;26;Shenzhen;7000
"""
with open('employees4.csv', 'w', encoding='utf-8') as f:
f.write(data_with_comment)
# skiprows überspringt die ersten beiden Zeilen (Kommentarzeilen)
df_skip = pd.read_csv('employees4.csv', sep=';', skiprows=2)
print("Nach dem Überspringen der Kommentarzeilen:")
print(df_skip)
print()
# nrows liest nur die ersten 3 Zeilen
df_nrows = pd.read_csv('employees4.csv', sep=';', skiprows=2, nrows=3)
print("Nur die ersten 3 Zeilen werden gelesen:")
print(df_nrows)
Erwartete Ausgabe:
使用分号分隔符:
name age city salary
0 Tom 28.0 Beijing 8000.0
1 Jerry NaN Shanghai 12000.0
2 NaN 42.0 Guangzhou NaN
3 Lucy 26.0 NA 7000.0
缺失值统计:
name age city salary
0 False False False False
1 False True False False
2 True False False True
3 False False False False
自定义 NA 值后:
name age city salary
0 Tom 28.0 Beijing 8000.0
1 Jerry NaN Shanghai 12000.0
2 NaN 42.0 Guangzhou NaN
3 Lucy 26.0 NaN 7000.0
跳过注释行后:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
42 Guangzhou 15000
2 Mike
3 Lucy 26 Shenzhen 7000
只读取前3行:
name age city salary
0 Tom 28 Beijing 800本地
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
Code-Erklärung:
sepDer Parameter kann ein beliebiges Trennzeichen angeben, wie Semikolon, Tabulator usw.- Standardmäßig werden leere Zeichenfolgen, Leerzeichen usw. als fehlende Werte erkannt. Sie können den
na_valuesParameter verwenden, um die als NA behandelten Werte anzupassen. skiprowsSie können die angegebene Anzahl von Zeilen am Anfang der Datei überspringen, was praktisch für die Verarbeitung von Dateien mit Kommentaren ist.nrowsBegrenzt die Anzahl der gelesenen Zeilen, geeignet für blockweises Lesen großer Dateien.
Hinweise
- Beim Lesen großer Dateien können Sie den
chunksizeParameter für blockweises Lesen in Betracht ziehen, um unzureichenden Speicher zu vermeiden. - Beim Verarbeiten chinesischer Dateien müssen Sie den
encodingParameter korrekt angeben. Häufige Kodierungen sind 'utf-8', 'gbk', 'gb2312' usw. - Wenn die CSV-Datei keine Kopfzeile hat, müssen Sie festlegen
header=None, und dann dennamesParameter verwenden, um Spaltennamen anzugeben. - Bei nicht standardmäßigen CSV-Dateien müssen Sie möglicherweise
sep、quotecharund andere Parameter anpassen, um sie korrekt zu parsen.
Zusammenfassung
read_csv()ist die grundlegendste und wichtigste Funktion zum Lesen von Daten in pandas. Sie ist leistungsstark und unterstützt erweiterte Funktionen wie mehrere Trennzeichen, benutzerdefinierte Spaltennamen, Indexeinstellungen und den Umgang mit fehlenden Werten.
In der praktischen Datenanalysearbeit ermöglicht die Beherrschungread_csv()der verschiedenen Parameternutzungen es Ihnen, CSV-Dateien in verschiedenen Formaten effizient zu verarbeiten und legt eine solide Grundlage für die anschließende Datenbereinigung und -analyse. Lesern wird empfohlen, mehr zu üben und sich mit diesen gängigen Parametern vertraut zu machen.
Pandas Häufige Funktionen