Pandas pd.ead_csv()-Funktion

Python math 模块Pandas Häufige Funktionen


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

ParameterTypeBeschreibungStandardwert
filepath_or_bufferstr, Pfadobjekt oder dateiähnliches ObjektDer Pfad, URL oder das Dateiobjekt der CSV-DateiErforderlich
sepstrFeldtrennzeichen, standardmäßig ein Komma für CSV','
headerint, Liste von int, 'infer'Zeilennummer, die als Spaltennamen verwendet wird, 0 bedeutet die erste Zeile'infer'
nameslistenähnlichBenutzerdefinierte Liste von SpaltennamenKeine
index_colint, str, Liste von int, Liste von str, FalseSpalte, die als Zeilenindex verwendet wirdKeine
usecolslistenähnlich, aufrufbarNur die angegebenen Spalten lesenKeine
dtypedictDatentypen für angegebene Spalten, z. B. {'a': np.float64}Keine
skiprowslistenähnlich, intDie angegebenen Zeilen überspringenKeine
nrowsintNur die ersten n Zeilen lesenKeine
na_valuesSkalar, str, listenähnlich, dictAls NA/NaN erkannte WerteKeine
encodingstrDateikodierung, 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

import pandas as pd

# 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, umprint()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

import pandas as pd

# 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

import pandas as pd

# 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 denna_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 denchunksizeParameter für blockweises Lesen in Betracht ziehen, um unzureichenden Speicher zu vermeiden.
  • Beim Verarbeiten chinesischer Dateien müssen Sie denencodingParameter korrekt angeben. Häufige Kodierungen sind 'utf-8', 'gbk', 'gb2312' usw.
  • Wenn die CSV-Datei keine Kopfzeile hat, müssen Sie festlegenheader=None, und dann dennamesParameter verwenden, um Spaltennamen anzugeben.
  • Bei nicht standardmäßigen CSV-Dateien müssen Sie möglicherweisesep、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.

Python math 模块Pandas Häufige Funktionen

Andere Erweiterungen