Fonction df.to_json() de Pandas

Pandas 常用函数Fonctions courantes de Pandas


to_json()C'est une méthode de DataFrame, utilisée pour exporter des données au format JSON (JavaScript Object Notation).

JSON est un format standard pour l'échange de données dans les applications Web et les API,to_json()Il prend en charge la sortie dans plusieurs formats JSON, notamment le format d'enregistrement, le format d'index, le format de colonne, etc. Il peut convertir un DataFrame pandas en chaîne JSON ou l'écrire dans un fichier, ce qui facilite l'échange de données avec d'autres systèmes.


Syntaxe de base et paramètres

Format de syntaxe

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, ...)

Description du paramètre

ParamètreTypeDescriptionValeur par défaut
path_or_bufstr, objet chemin, objet de type fichierChemin de fichier ; renvoie une chaîne si NoneAucune
orientstrFormat JSON : 'split', 'records', 'index', 'columns', 'values', 'table'Aucune
date_formatstrFormat de date : 'epoch', 'iso'Aucune
double_precisionintPrécision des nombres à virgule flottante10
force_asciiboolIndique s'il faut forcer l'encodage ASCIITrue
date_unitstrUnité de date : 's', 'ms', 'us', 'ns''ms'
linesboolFormat JSON Lines, un objet JSON par ligneFalse
indexboolIndique si l'index doit être inclusFalse

Valeur de retour

  • Type de retour:Noneoustr
  • Lorsqu'un chemin de fichier est spécifié, il écrit dans le fichier et renvoie None.
  • Quandpath_or_buf=NoneLorsque non spécifié, renvoie une chaîne au format JSON.

Exemples

À travers les exemples suivants, maîtrisez de manière exhaustiveto_json()les différentes utilisations.

Exemple 1 : Utilisation de base - Exportation vers une chaîne JSON

Tout d'abord, créez un DataFrame, puis utilisezto_json()pour l'exporter au format JSON.

Exemple

import pandas as pd

# Créer un DataFrame d'exemple
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)

# Exemple 1a : L'exportation la plus basique (aucun chemin spécifié, renvoie une chaîne)
# orient='columns' par défaut
json_string = df.to_json()
print("Format JSON par défaut (colonnes) :")
print(json_string)
print()

# Exemple 1b : Exporter vers un fichier
df.to_json('output_basic.json', orient='records', indent=2)
print("Exporté vers output_basic.json")

# Lire et vérifier
df_check = pd.read_json('output_basic.json', orient='records')
print("nVérifier la lecture :")
print(df_check)

Sortie attendue :

默认 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}
]

Explication du code :

  • to_json()Lorsqu'aucun chemin n'est spécifié, une chaîne JSON est renvoyée.
  • Par défautorient='columns', un objet JSON par colonne.
  • indent=2Rend la sortie plus facile à lire (formatée).

Exemple 2 : différents formats JSON

Les données JSON ont plusieurs formats,to_json()et prennent en charge plusieurs formats de sortie pour répondre à différents besoins.

Exemple

import pandas as pd

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

# Exemple 2a : format records - format tableau, un objet par ligne
# Le plus couramment utilisé, adapté à la plupart des API
json_records = df.to_json(orient='records')
print("Format records (un objet par ligne) :")
print(json_records)
print()

# Exemple 2b : format index - utilise l'index comme clé
json_index = df.to_json(orient='index')
print("Format index (utilise l'index comme clé) :")
print(json_index)
print()

# Exemple 2c : format columns - utilise les noms de colonnes comme clés (par défaut)
json_columns = df.to_json(orient='columns')
print("Format columns (utilise les noms de colonnes comme clés) :")
print(json_columns)
print()

# Exemple 2d : format split - structure divisée
json_split = df.to_json(orient='split')
print("Format split (structure divisée) :")
print(json_split)
print()

# Exemple 2e : format values - contient uniquement des tableaux de valeurs
json_values = df.to_json(orient='values')
print("Format values (valeurs uniquement) :")
print(json_values)

Sortie attendue :

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"]]

Explication du code :

  • orient='records': Format tableau, chaque ligne est un objet JSON, le plus couramment utilisé.
  • orient='index': Utilise l'index du DataFrame comme clé de premier niveau.
  • orient='columns': Utilise les noms de colonnes comme clés, le format par défaut.
  • orient='split': Structure éclatée, facile à analyser pour les programmes.
  • orient='values': Tableau purement numérique, sans noms de colonnes ni index.

Exemple 3 : Gestion des dates et de l'encodage chinois

Lors de l'exportation JSON, les dates et l'encodage chinois doivent être traités correctement.

Exemple

import pandas as pd
from datetime import datetime

# Exemple 3a : Gérer les champs de date
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)]
})

# Le format de date par défaut est l'horodatage (millisecondes)
json_timestamp = df_date.to_json(date_format='epoch', orient='records')
print("Format de date - horodatage :")
print(json_timestamp)
print()

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

# Exemple 3b : Gérer le chinois
df_cn = pd.DataFrame({
    'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
    'age': [28, 35, 42],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
})

# force_ascii=False autorise les caractères non-ASCII
json_cn = df_cn.to_json(orient='records', force_ascii=False)
print("Contenu chinois (force_ascii=False):")
print(json_cn)

# Écrire dans le fichier (chinois pris en charge par défaut)
df_cn.to_json('output_cn.json', orient='records', force_ascii=False)
print("nExporté vers output_cn.json")

# Lire et vérifier
df_cn_check = pd.read_json('output_cn.json')
print("Vérifier la lecture :")
print(df_cn_check)

Sortie attendue :

日期格式 - 时间戳:
[{"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    广州
</对>

Explication du code :

  • date_format='epoch'Convertit les dates en horodatage (millisecondes).
  • date_format='iso'Convertit les dates au format ISO 8601.
  • force_ascii=FalsePermet de conserver les caractères chinois dans JSON au lieu de les échapper en Unicode.

Exemple 4 : format JSON Lines

JSON Lines est un format avec un objet JSON par ligne, couramment utilisé pour la journalisation et le traitement de big data.

Exemple

import pandas as pd

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

# Exemple 4a : format JSON Lines (un objet JSON par ligne)
# lines=True active le format JSON Lines
json_lines = df.to_json(orient='records', lines=True)
print("Format JSON Lines :")
print(json_lines)
print()

# Écrire dans le fichier
df.to_json('output_lines.json', orient='records', lines=True)
print("Exporté vers output_lines.json")

# Exemple 4b : lire le format JSON Lines
# Il faut lire ligne par ligne
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)

Sortie attendue :

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

Explication du code :

  • lines=TrueActive le format JSON Lines, un objet JSON par ligne.
  • JSON Lines convient au traitement en flux et aux scénarios de big data.
  • Lors de la lecture, il doit être analysé ligne par ligne et converti en DataFrame.

Notes

  • Par défautorient='columns', il est généralement recommandé d'utiliserorient='records'plus universel.
  • Utiliserforce_ascii=Falsepeut préserver les caractères chinois.
  • Le format JSON Lines doit être utilisé avecorient='records'pour utilisation.
  • read_json()Lors de la lecture, vous devez utiliser le mêmeorientparamètre.
  • Il est recommandé d'utiliser le format de datedate_format='iso', qui est plus lisible.

Résumé

to_json()C'est la méthode principale pour exporter un DataFrame au format JSON. Il prend en charge plusieurs formats JSON et peut répondre aux besoins de différents scénarios tels que les API Web et l'échange de données.

Dans le travail réel, JSON est le format de données le plus couramment utilisé dans les applications Web,to_json()combiné avecread_json()peut réaliser l'importation et l'exportation de données.orientles différents formats de paramètres, et l'association avecread_json()pour utilisation.

Pandas 常用函数Fonctions courantes de Pandas

Autres extensions