Pandas df.to_json()-Funktion

Pandas 常用函数Pandas Häufige Funktionen


to_json()Es ist eine Methode von DataFrame, die verwendet wird, um Daten in das JSON-Format (JavaScript Object Notation) zu exportieren.

JSON ist ein Standardformat für den Datenaustausch in Webanwendungen und APIs,to_json()Es unterstützt die Ausgabe in mehreren JSON-Formaten, darunter Datensatzformat, Indexformat, Spaltenformat usw. Es kann ein pandas DataFrame in einen JSON-String umwandeln oder in eine Datei schreiben, was den Datenaustausch mit anderen Systemen erleichtert.


Grundlegende Syntax und Parameter

Syntaxformat

DataFrame.to_json(path_or_buf=None, orient=None, date_format=None,
                  double_precision=10, force_ascii=True, date_unit='ms',
                  default_handler=None, lines=False, index=False,
                  indent=None, ...)

Parameterbeschreibung

ParameterTypeBeschreibungStandardwert
path_or_bufstr, Pfadobjekt, dateiähnliches ObjektDateipfad; gibt eine Zeichenkette zurück, wenn NoneKeine
orientstrJSON-Format: 'split', 'records', 'index', 'columns', 'values', 'table'Keine
date_formatstrDatumsformat: 'epoch', 'iso'Keine
double_precisionintGleitkommapräzision10
force_asciiboolOb die ASCII-Kodierung erzwungen werden sollTrue
date_unitstrDatumseinheit: 's', 'ms', 'us', 'ns''ms'
linesboolJSON-Lines-Format, ein JSON-Objekt pro ZeileFalse
indexboolOb der Index einbezogen werden sollFalse

Rückgabewert

  • Rückgabetyp:Noneoderstr
  • Wenn ein Dateipfad angegeben wird, schreibt es in die Datei und gibt None zurück.
  • Wannpath_or_buf=NoneWenn nicht angegeben, wird eine Zeichenkette im JSON-Format zurückgegeben.

Beispiele

Anhand der folgenden Beispiele meistern Sie umfassendto_json()die verschiedenen Verwendungsweisen.

Beispiel 1: Grundlegende Verwendung – Export in JSON-Zeichenkette

Erstellen Sie zunächst ein DataFrame und verwenden Sie dannto_json()um es in das JSON-Format 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 grundlegendste Export (kein Pfad angegeben, gibt eine Zeichenkette zurück)
# Standard orient='columns'
json_string = df.to_json()
print("Standard-JSON-Format (Spalten):")
print(json_string)
print()

# Beispiel 1b: Export in Datei
df.to_json('output_basic.json', orient='records', indent=2)
print("Exportiert nach output_basic.json")

# Einlesen und überprüfen
df_check = pd.read_json('output_basic.json', orient='records')
print("nLesen überprüfen:")
print(df_check)

Erwartete Ausgabe:

默认 JSON 格式 (columns):
{"name":{"0":"Tom","1":"Jerry","2":"Mike","3":"Lucy"},"age":{"0":28,"1":35,"2":42,"3":26},...}

默认 JSON 格式 (records):
[
  {"name":"Tom","age":28,"city":"Beijing","salary":8000},
  {"name":"Jerry","age":35,"city":"Shanghai","salary":12000},
  {"name":"Mike","age":42,"city":"Guangzhou","salary":15000},
  {"name":"Lucy","age":26,"city":"Shenzhen","salary":7000}
]

Code-Erklärung:

  • to_json()Wenn kein Pfad angegeben wird, wird ein JSON-String zurückgegeben.
  • Standardmäßigorient='columns', ein JSON-Objekt pro Spalte.
  • indent=2Macht die Ausgabe leichter lesbar (formatiert).

Beispiel 2: Verschiedene JSON-Formate

JSON-Daten haben mehrere Formate,to_json()und unterstützt mehrere Ausgabeformate, um unterschiedliche Anforderungen zu erfüllen.

Beispiel

import pandas as pd

# DataFrame erstellen
df = pd.DataFrame({
    'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
    'age': [28, 35, 42, 26],
    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
})

# Beispiel 2a: records-Format - Array-Format, ein Objekt pro Zeile
# Am häufigsten verwendet, geeignet für die meisten APIs
json_records = df.to_json(orient='records')
print("Records-Format (ein Objekt pro Zeile):")
print(json_records)
print()

# Beispiel 2b: Index-Format - verwendet den Index als Schlüssel
json_index = df.to_json(orient='index')
print("Index-Format (verwendet den Index als Schlüssel):")
print(json_index)
print()

# Beispiel 2c: Spaltenformat - verwendet Spaltennamen als Schlüssel (Standard)
json_columns = df.to_json(orient='columns')
print("Spaltenformat (verwendet Spaltennamen als Schlüssel):")
print(json_columns)
print()

# Beispiel 2d: Split-Format - Split-Struktur
json_split = df.to_json(orient='split')
print("Split-Format (Split-Struktur):")
print(json_split)
print()

# Beispiel 2e: Werteformat - enthält nur Wert-Arrays
json_values = df.to_json(orient='values')
print("Werteformat (nur Werte):")
print(json_values)

Erwartete Ausgabe:

Records 格式(每行一个对象):
[{"name":"Tom","age":28,"city":"Beijing"},
{"name":"Jerry","age":35,"city":"Shanghai"},
{"name":"Mike","age":42,"city":"Guangzhou"},
{"name":"Lucy","age":26,"city":"Shenzhen"}]

Index 格式(以索引为键):
{"0":{"name":"Tom","age":28,"city":"Beijing"},
"1":{"name":"Jerry","age":35,"city":"Shanghai"},
...}

Columns 格式(以列名为键):
{"name":{"0":"Tom","1":"Jerry"...},"age":{"0":28...}...}

Split 格式(分离结构):
{"index":[0,1,2,3],"columns":["name","age","city"],
"data":[["Tom",28,"Beijing"],["Jerry",35,"Shanghai"]...]}

Values 格式(只包含值):
[["Tom",28,"Beijing"],["Jerry",35,"Shanghai"],["Mike",42,"Guangzhou"],["Lucy",26,"Shenzhen"]]

Code-Erklärung:

  • orient='records': Array-Format, jede Zeile ist ein JSON-Objekt, am häufigsten verwendet.
  • orient='index': Verwendet den DataFrame-Index als Top-Level-Schlüssel.
  • orient='columns': Verwendet Spaltennamen als Schlüssel, das Standardformat.
  • orient='split': Split-Struktur, einfach für Programme zu parsen.
  • orient='values': Reines numerisches Array, ohne Spaltennamen oder Index.

Beispiel 3: Umgang mit Datumsangaben und chinesischer Kodierung

Beim Exportieren von JSON müssen Datumsangaben und chinesische Kodierung korrekt behandelt werden.

Beispiel

import pandas as pd
from datetime import datetime

# Beispiel 3a: Datumsfelder behandeln
df_date = pd.DataFrame({
    'name': ['Tom', 'Jerry'],
    'birthday': [datetime(1995, 3, 15), datetime(1988, 7, 22)],
    'join_date': [datetime(2020, 1, 10), datetime(2019, 3, 5)]
})

# Standard-Datumsformat ist Zeitstempel (Millisekunden)
json_timestamp = df_date.to_json(date_format='epoch', orient='records')
print("Datumsformat - Zeitstempel:")
print(json_timestamp)
print()

# Datum im ISO-Format
json_iso = df_date.to_json(date_format='iso', orient='records')
print("Datumsformat - ISO:")
print(json_iso)
print()

# Beispiel 3b: Umgang mit Chinesisch
df_cn = pd.DataFrame({
    'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'age': [28, 35, 42],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
})

# force_ascii=False erlaubt Nicht-ASCII-Zeichen
json_cn = df_cn.to_json(orient='records', force_ascii=False)
print("Chinesischer Inhalt (force_ascii=False):")
print(json_cn)

# In Datei schreiben (Chinesisch standardmäßig unterstützt)
df_cn.to_json('output_cn.json', orient='records', force_ascii=False)
print("nExportiert nach output_cn.json")

# Einlesen und überprüfen
df_cn_check = pd.read_json('output_cn.json')
print("Lesevorgang überprüfen:")
print(df_cn_check)

Erwartete Ausgabe:

日期格式 - 时间戳:
[{"name":"Tom","birthday":796...
{"name":"Jerry","birthday":584...}

日期格式 - ISO:
[{"name":"tom","birthday":"1995-03-15T00:00:00.000Z",...}]

中文内容(force_ascii=False):
[{"姓名":"张三","年龄":28,"城市":"北京"},
{"姓名":"李四","年龄":35,"城市":"上海"},
{"姓名":"王五","年龄":42,"城市":"广州"}]

已导出到 output_cn.json

验证读取:
    姓名   年龄   城市
0  张三   (read_json 的    格式    orient='records' 匹配 to_json 的 orient='records')    北京
1 配对    李四   35    上海
2  王五   42    广州
</对>

Code-Erklärung:

  • date_format='epoch'Konvertiert Datumsangaben in Zeitstempel (Millisekunden).
  • date_format='iso'Konvertiert Datumsangaben in das ISO-8601-Format.
  • force_ascii=FalseErmöglicht, dass chinesische Zeichen in JSON erhalten bleiben, anstatt in Unicode-Escape-Sequenzen umgewandelt zu werden.

Beispiel 4: JSON-Lines-Format

JSON Lines ist ein Format mit einem JSON-Objekt pro Zeile, das häufig für Protokollierung und Big-Data-Verarbeitung verwendet wird.

Beispiel

import pandas as pd

# DataFrame erstellen
df = pd.DataFrame({
    'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
    'age': [28, 35, 42, 26],
    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
})

# Beispiel 4a: JSON-Lines-Format (ein JSON-Objekt pro Zeile)
# lines=True aktiviert das JSON-Lines-Format
json_lines = df.to_json(orient='records', lines=True)
print("JSON-Lines-Format:")
print(json_lines)
print()

# In Datei schreiben
df.to_json('output_lines.json', orient='records', lines=True)
print("Exportiert nach output_lines.json")

# Beispiel 4b: JSON-Lines-Format lesen
# Zeile für Zeile einlesen
import json
df_lines_list = []
with open('output_lines.json', 'r', encoding='utf-8') as f:
    for line in f:
        df_lines_list.append(json.loads(line.strip()))

df_from_lines = pd.DataFrame(df_lines_list)
print("nRead JSON Lines:")
print(df_from_lines)

Erwartete Ausgabe:

JSON Lines 格式:
{"name":"Tom","age":28,"city":"Beijing"}
{"name":"Jerry","age":35,"city":"Shanghai"}
{"name":"Mike","age":42,"city":"city":"Guangzhou"}
{"name":"Lucy","age":26,"city":"Shenzhen"}

已导出到 output_lines.json

读取 JSON Lines:
    name  age       city
0    Tom   28    Beijing
对    读    Jerry   35    Shanghai
2   Mike   42   格式    Guangzhou
3   Lucy   26    Shenzhen

Code-Erklärung:

  • lines=TrueErmöglicht das JSON-Lines-Format, ein JSON-Objekt pro Zeile.
  • JSON Lines eignet sich für Streaming-Verarbeitung und Big-Data-Szenarien.
  • Beim Lesen muss es Zeile für Zeile geparst und in einen DataFrame umgewandelt werden.

Hinweise

  • Standardmäßigorient='columns', es wird allgemein empfohlen, zu verwendenorient='records'universeller.
  • Verwenden Sieforce_ascii=Falsechinesische Schriftzeichen beibehalten kann.
  • Das JSON Lines-Format muss mitorient='records'zur Verwendung.
  • read_json()Beim Lesen müssen Sie dasselbeorientParameter überschrieben werden.
  • Es wird empfohlen, das Datumsformatdate_format='iso', was besser lesbar ist.

Zusammenfassung

to_json()Es ist die Kernmethode für DataFrame, um in das JSON-Format zu exportieren. Sie unterstützt mehrere JSON-Formate und kann die Anforderungen verschiedener Szenarien wie Web API und Datenaustausch erfüllen.

In der Praxis ist JSON das am häufigsten verwendete Datenformat in Webanwendungen,to_json()kombiniert mitread_json()kann Datenimport und -export realisieren.orientdie verschiedenen Formate der Parameter und die Paarung mitread_json()zur Verwendung.

Pandas 常用函数Pandas Häufige Funktionen

Andere Erweiterungen