Pandas df.to_csv()-Funktion

Python 常用函数Gängige Pandas-Funktionen


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

ParameterTypeBeschreibungStandardwert
path_or_bufstr, Pfadobjekt, dateiähnliches ObjektDateipfad; gibt eine Zeichenkette zurück, wenn NoneKeine
sepstrFeldtrennzeichen','
na_repstrDarstellung fehlender Werte''
float_formatstrFormat für GleitkommazahlenKeine
columnsListeGeben Sie die zu exportierenden Spalten anKeine
headerbool, listOb Spaltennamen exportiert werden sollenTrue
indexboolOb der Index exportiert werden sollTrue
index_labelstrName der IndexspalteKeine
modestrSchreibmodus: 'w' überschreiben, 'a' anhängen'w'
encodingstrDateikodierungKeine

Rückgabewert

  • Rückgabetyp:Noneoderstr
  • Wenn ein Dateipfad angegeben wird, schreibt es in die Datei und gibt None zurück.
  • Wannpath_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

import pandas as pd

# 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.
  • Einstellungindex=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

import pandas as pd

# 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

import pandas as pd

# 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 setzenindex=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 denchunksizeParameter 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.


Python 常用函数Gängige Pandas-Funktionen

Andere Erweiterungen