Data Wrangling

Maîtriser la conversion JSON en DataFrame Pandas

Spread the love

Pandas est une puissante bibliothèque Python pour la manipulation et l’analyse de données. Souvent, les données arrivent au format JSON, nécessitant une conversion en DataFrame Pandas pour un traitement efficace. Cet article explore deux méthodes principales pour cette conversion : l’utilisation de json_normalize() et de read_json(), en soulignant leurs forces et leurs faiblesses.

Table des matières

Gestion efficace de JSON imbriqués avec json_normalize()

La fonction json_normalize() excelle lorsqu’il s’agit de structures JSON imbriquées. Elle aplatit ces données hiérarchiques en un format tabulaire, idéal pour les DataFrames Pandas. Bien qu’elle nécessite une compréhension plus approfondie de la structure de votre JSON, elle offre un contrôle granulaire sur le DataFrame résultant.

Considérons cet exemple :


import pandas as pd
import json

json_data = """
[
  {"id": 1, "name": "Alice", "address": {"street": "123 Main St", "city": "Anytown"}},
  {"id": 2, "name": "Bob", "address": {"street": "456 Oak Ave", "city": "Otherville"}}
]
"""

data = json.loads(json_data)

df = pd.json_normalize(data, record_path=['address'], meta=['id', 'name'])

print(df)

Ce code charge le JSON, puis utilise json_normalize(). record_path=['address'] spécifie le champ imbriqué ‘address’ pour l’aplatissement, tandis que meta=['id', 'name'] inclut ‘id’ et ‘name’ comme colonnes de métadonnées. Le DataFrame de sortie contiendra les colonnes ‘street’, ‘city’, ‘id’ et ‘name’.

Avantages de json_normalize() :

  • Gère les JSON imbriqués : Idéal pour les JSON complexes et hiérarchiques.
  • Aplatissement contrôlé : Contrôle précis des champs inclus et de l’aplatissement.

Inconvénients de json_normalize() :

  • Connaissance de la structure JSON requise : Une utilisation efficace exige de comprendre la structure de votre JSON.
  • Complexité avec les JSON profondément imbriqués : Les structures extrêmement complexes peuvent s’avérer fastidieuses.

Simplification de JSON simples avec read_json()

La fonction read_json() offre une approche plus directe, notamment pour les structures JSON plus simples. Elle lit directement les données JSON dans un DataFrame Pandas, souvent préféré pour les objets JSON plus simples ou lors du travail avec des fichiers JSON.

Voici un exemple :


import pandas as pd
import json

json_data = """
[
  {"id": 1, "name": "Alice", "age": 30},
  {"id": 2, "name": "Bob", "age": 25}
]
"""

df = pd.read_json(json_data)

print(df)

Ce code lit directement la chaîne JSON dans un DataFrame, reflétant la structure JSON dans les colonnes du DataFrame.

Avantages de read_json() :

  • Simple et intuitif : Facile à utiliser pour les structures JSON plus simples.
  • Gestion directe des fichiers JSON : Lit efficacement les données JSON à partir de fichiers en utilisant les chemins de fichiers.

Inconvénients de read_json() :

  • Gestion limitée des JSON imbriqués : Peut avoir du mal avec les JSON profondément imbriqués, nécessitant potentiellement un prétraitement.
  • Moins de contrôle sur l’aplatissement : Offre moins de contrôle sur la structure finale du DataFrame par rapport à json_normalize().

Conclusion :

json_normalize() et read_json() sont toutes deux précieuses pour convertir du JSON en DataFrames Pandas. Le meilleur choix dépend de la complexité de votre JSON et du contrôle souhaité sur le DataFrame résultant. Pour les JSON simples, read_json() suffit ; pour les JSON imbriqués, json_normalize() offre la flexibilité nécessaire pour créer un DataFrame utilisable. N’oubliez pas d’installer pandas à l’aide de pip install pandas avant d’exécuter ces exemples.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *