Fonction df.to_json() 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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
| path_or_buf | str, objet chemin, objet de type fichier | Chemin de fichier ; renvoie une chaîne si None | Aucune |
| orient | str | Format JSON : 'split', 'records', 'index', 'columns', 'values', 'table' | Aucune |
| date_format | str | Format de date : 'epoch', 'iso' | Aucune |
| double_precision | int | Précision des nombres à virgule flottante | 10 |
| force_ascii | bool | Indique s'il faut forcer l'encodage ASCII | True |
| date_unit | str | Unité de date : 's', 'ms', 'us', 'ns' | 'ms' |
| lines | bool | Format JSON Lines, un objet JSON par ligne | False |
| index | bool | Indique si l'index doit être inclus | False |
Valeur de retour
- Type de retour:
Noneoustr - Lorsqu'un chemin de fichier est spécifié, il écrit dans le fichier et renvoie None.
- Quand
path_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
# 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éfaut
orient='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
# 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
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
# 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éfaut
orient='columns', il est généralement recommandé d'utiliserorient='records'plus universel. - Utiliser
force_ascii=Falsepeut préserver les caractères chinois. - Le format JSON Lines doit être utilisé avec
orient='records'pour utilisation. read_json()Lors de la lecture, vous devez utiliser le mêmeorientparamètre.- Il est recommandé d'utiliser le format de date
date_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.
Fonctions courantes de Pandas