Pandas df.to_csv()-Funktion
to_csv()Es ist eine DataFrame-Methode, mit der Daten in eine CSV-Datei (Comma-Separated Values) exportiert werden.
CSV ist eines der am häufigsten verwendeten Datenexportformate. Es speichert tabellarische Daten im Klartext, ist sehr kompatibel und kann von fast allen Datenanalysewerkzeugen gelesen werden.to_csv()Es bietet umfangreiche Funktionen, unterstützt Optionen wie benutzerdefinierte Trennzeichen, Kodierungsmethoden und Indexbehandlung und kann verschiedene Exportanforderungen erfüllen.
Grundlegende Syntax und Parameter
Syntaxformat
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None,
columns=None, header=True, index=True, index_label=None,
mode='w', encoding=None, quoting=None, quotechar='"',
line_terminator=None, chunksize=None, date_format=None,
doublequote=True, escapechar=None, ...)
Parameterbeschreibung
| Parameter | Type | Beschreibung | Standardwert |
|---|---|---|---|
| path_or_buf | str, Pfadobjekt, dateiähnliches Objekt | Dateipfad; gibt eine Zeichenkette zurück, wenn None | Keine |
| sep | str | Feldtrennzeichen | ',' |
| na_rep | str | Darstellung fehlender Werte | '' |
| float_format | str | Format für Gleitkommazahlen | Keine |
| columns | Liste | Geben Sie die zu exportierenden Spalten an | Keine |
| header | bool, list | Ob Spaltennamen exportiert werden sollen | True |
| index | bool | Ob der Index exportiert werden soll | True |
| index_label | str | Name der Indexspalte | Keine |
| mode | str | Schreibmodus: 'w' überschreiben, 'a' anhängen | 'w' |
| encoding | str | Dateikodierung | Keine |
Rückgabewert
- Rückgabetyp:
Noneoderstr - Wenn ein Dateipfad angegeben wird, schreibt es in die Datei und gibt None zurück.
- Wann
path_or_buf=NoneWenn ..., wird eine Zeichenkette im CSV-Format zurückgegeben.
Beispiele
Anhand der folgenden Beispiele vollständig meisternto_csv()Verschiedene Verwendungsmöglichkeiten.
Beispiel 1: Grundlegende Verwendung - Export in CSV-Datei
Erstellen Sie zuerst ein DataFrame und verwenden Sie dannto_csv()um es als CSV-Datei zu exportieren.
Beispiel
# 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
# path_or_buf: Dateipfad (der erforderliche Parameter ist der Dateipfad; wenn er hier auf None gesetzt wird, wird eine Zeichenkette zurückgegeben)
csv_string = df.to_csv() # Kein Pfad angegeben, gibt eine Zeichenkette zurück
print("Zurückgegebene CSV-Zeichenkette:")
print(csv_string)
print()
# In Datei exportieren
# Standardmäßig sind Index- und Spaltennamen enthalten
df.to_csv('output_basic.csv', index=False) # index=False exportiert den Index nicht
print("Exportiert nach output_basic.csv")
# Zum Überprüfen lesen
df_check = pd.read_csv('output_basic.csv')
print("nLesen überprüfen:")
print(df_check)
Erwartete Ausgabe:
返回的 CSV 字符串:
,name,age,city,salary
0,Tom,28,Beijing,8000
1,Jerry,35,Shanghai,12000
2,Mike,42,Guangzhou,15000
3,Lucy,26,Shenzhen,7000
已导出到 output_basic.csv
验证读取:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 保存 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
Codeanalyse:
to_csv()Standardmäßig werden der Index (erste Spalte ohne Spaltennamen) und die Spaltennamen exportiert.- Einstellung
index=Falsekann den Export des Index weglassen, was den Import bequemer macht. - Wenn kein Pfad angegeben wird, wird eine Zeichenkette im CSV-Format zurückgegeben.
Beispiel 2: Benutzerdefinierte Trennzeichen und Formate
CSV-Dateien können unterschiedliche Trennzeichen verwenden, und Sie können auch das Format numerischer Werte und fehlender Werte anpassen.
Beispiel
# Erstelle einen DataFrame mit fehlenden Werten und Fließkommazahlen
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, None], # Fehlender Wert
'score': [85.5, 92.3, 78.9, 95.0],
'city': ['Beijing', 'Shanghai', None, 'Shenzhen']
}
df = pd.DataFrame(data)
# Beispiel 2a: Semikolon als Trennzeichen verwenden
df.to_csv('output_semicolon.csv', sep=';', index=False)
print("Export mit Semikolon als Trennzeichen:")
with open('output_semicolon.csv', 'r') as f:
print(f.read())
print()
# Beispiel 2b: Darstellung fehlender Werte anpassen
df.to_csv('output_na.csv', index=False, na_rep='N/A')
print("Benutzerdefinierte Darstellung fehlender Werte:")
with open('output_na.csv', 'r') as f:
print(f.read())
print()
# Beispiel 2c: Gleitkommazahlen formatieren
# float_format verwendet Python-Formatstrings
df.to_csv('output_float.csv', index=False, float_format='%.2f')
print("Formatierte Gleitkommazahlen:")
with open('output_float.csv', 'r') as f:
print(f.read())
print()
# Beispiel 2d: Ausgewählte Spalten exportieren
df.to_csv('output_columns.csv', index=False, columns=['name', 'score'])
print("Angegebene Spalten exportieren:")
with open('output_columns.csv', 'r') as f:
print(f.read())
Erwartete Ausgabe:
使用分号分隔符导出:
name;age;score;city
Tom;28;85.5;Beijing
Jerry;35;92.3;Shanghai
Mike;42;78.9;Guangzhou
Lucy;;95;Shenzhen
自定义缺失值表示:
name,age,score,city
Tom,28,85.5,Beijing
Jerry,35,92.3,Shanghai
Mike,42,78.9,Guangzhou
Lucy,N/A,95.0,N/A
格式化浮点数:
name,age,score,c列
Tom,28,85.50,Beijing
Jerry,35,92.30,Shanghai
Mike,42,78.90,encoding
Lucy,,95.00,Shenzhen
导出指定列:
name,score
Tom,85.5
Jerry,92.3
自定义分隔符 78.9
Lucy,95.0
Codeanalyse:
sepDer Parameter kann ein beliebiges Trennzeichen angeben, wie Semikolon, Tabulator usw.na_repDer Parameter passt die Zeichenfolgendarstellung fehlender Werte an; standardmäßig ist sie eine leere Zeichenfolge.float_formatDer Parameter verwendet die Formatstring-Syntax von Python.columnsDer Parameter exportiert nur die angegebenen Spalten.
Beispiel 3: Umgang mit Index und Kodierung
Indexbehandlung und Dateikodierung sind häufige Anforderungen beim Export.
Beispiel
# Erstellen eines DataFrame mit einem Index
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
}
df = pd.DataFrame(data)
df.index = ['A001', 'A002', 'A003', 'A004'] # Index festlegen
# Beispiel 3a: Index exportieren und Namen der Indexspalte angeben
df.to_csv('output_index.csv', index=True, index_label='user_id')
print("Mit Index und Indexspaltenname:")
with open('output_index.csv', 'r') as f:
print(f.read())
print()
# Beispiel 3b: Spaltennamen nicht exportieren
df.to_csv('output_no_header.csv', header=False, index=False)
print("Ohne Spaltennamen:")
with open('output_no_header.csv', 'r') as f:
print(f.read())
print()
# Beispiel 3c: UTF-8-Kodierung verwenden (unterstützt chinesische Zeichen)
df_cn = pd.DataFrame({
'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
'Age': [28, 35, 42],
'Stadt': ['Peking', 'Shanghai', 'Guangzhou']
})
df_cn.to_csv('output_utf8.csv', index=False, encoding='utf-8-sig') # utf-8-sig unterstützt das Öffnen in Excel
print("UTF-8-Kodierung (mit chinesischen Zeichen):")
with open('output_utf8.csv', 'r', encoding='utf-8-sig') as f:
print(f.read())
print()
# Beispiel 3d: Anhängemodus
# Datei zuerst erstellen, dann Daten anhängen
df.to_csv('output_append.csv', index=False)
# Weitere Daten anhängen
df_append = pd.DataFrame({
'name': ['John', 'Mary'],
'age': [30, 27],
'city': ['Hangzhou', 'Nanjing']
})
df_append.to_csv('output_append.csv', index=False, mode='a', header=False)
print("Append-Modus:")
with open('output_append.csv', 'r') as f:
print(f.read())
Erwartete Ausgabe:
带索引和索引列名: user_id,name,age,city A001,Tom,28,直接在 A002,Jerry,35,Shanghai A003,Mike,42,Guangzhou A004,Lucy,26,Shenzhen 不导出列名: Tom,28,Beijing Jerry,35,Shanghai Mike,42,Guangzhou Lucy,26,Shenzhen UTF-8 编码(含中文): 姓名,年龄,出现 张三,28,北京 李四,35,上海 王五,42,广州 追加模式: Tom,28,Beijing Jerry,35,CSV Mike,42,Guangzhou Lucy,26,Shenzhen John,30,Hangzhou Mary,27,Nanjing 追加模式 27, 格式
Codeanalyse:
index_labelDer Parameter weist der Indexspalte einen Namen zu.header=FalseDer Verzicht auf den Export von Spaltennamen eignet sich zum Anhängen und Zusammenführen mehrerer Dateien.encoding='utf-8-sig'Fügt vor der UTF-8-Kodierung eine BOM hinzu, wodurch das direkte Öffnen in Excel erleichtert wird.mode='a'Der Append-Modus fügt neue Daten am Ende einer vorhandenen Datei hinzu.
Hinweise
- Standardmäßig wird der Index exportiert. Falls nicht benötigt, können Sie setzen
index=False。 - Beim Umgang mit chinesischen Daten denken Sie daran, die korrekte Kodierung anzugeben (empfohlen:
utf-8-sig)。 mode='a'Achten Sie im Anhängemodus darauf, ob Sie auch setzen müssenheader=Falseum doppelte Spaltennamen zu vermeiden.- Beim Exportieren eines großen DataFrame können Sie den
chunksizeParameter zum Schreiben in Blöcken verwenden. float_formatVerwenden Sie die Formatierungssyntax von Python, wie zum Beispiel'%.2f'um zwei Dezimalstellen beizubehalten.
Zusammenfassung
to_csv()Es ist eine der am häufigsten verwendeten Exportmethoden von DataFrame und bietet eine sehr umfangreiche Funktionalität. Es kann Daten in CSV-Dateien in verschiedenen Formaten exportieren und unterstützt benutzerdefinierte Trennzeichen, Kodierung, Indexbehandlung und mehr.
In der praktischen Arbeit ist CSV ein gängiges Format für den Datenaustausch,to_csv()und seine Verwendungshäufigkeit ist sehr hoch. Es wird empfohlen, dass Leser die Verwendung der verschiedenen Parameter beherrschen, insbesondere die Kodierungsbehandlung und die Indexsteuerung.
Andere Erweiterungen
Gängige Pandas-Funktionen