Convertir JSON en un Pandas DataFrame

  1. JSON en Pandas DataFrame en utilisant json_normalize()
  2. JSON vers Pandas DataFrame en utilisant read_json()

Cet article présente la manière de convertir JSON en Pandas DataFrame.

JSON signifie JavaScript Object Notation. Il est basé sur le format des objets en JavaScript et est une technique de codage pour représenter des données structurées. Il est largement utilisé de nos jours, notamment pour le partage de données entre serveurs et applications web.

En raison de sa simplicité et de l’influence des structures de données du langage de programmation, JSON est en train de devenir immensément populaire. Il est relativement facile à comprendre, et ce qui suit est un exemple simple de réponse JSON d’une API.

{
"Results":
         [
         { "id": "01", "Name": "Jay" },
         { "id": "02", "Name": "Mark" },
         { "id": "03", "Name": "Jack" }
         ],
"status": ["ok"]
}

Comme vous pouvez le voir dans notre exemple, JSON semble être en quelque sorte une combinaison de listes et de dictionnaires imbriqués ; il est donc relativement facile d’extraire des données de fichiers JSON et même de les stocker sous forme de Pandas DataFrame.

Les bibliothèques Pandas et JSON en Python peuvent aider à réaliser cela. Nous avons deux fonctions read_json() et json_normalize() qui peuvent aider à convertir une chaîne JSON en DataFrame.

JSON en Pandas DataFrame en utilisant json_normalize()

La fonction json_normalize() est très largement utilisée pour lire la chaîne JSON imbriquée et retourner un DataFrame. Pour utiliser cette fonction, nous devons d’abord lire la chaîne JSON en utilisant la fonction json.loads() de la bibliothèque JSON en Python. Ensuite, nous passons cet objet JSON à la fonction json_normalize(), qui retournera un DataFrame Pandas contenant les données requises.

import pandas as pd
import json
from pandas import json_normalize

data = '''
{
"Results":
         [
         { "id": "1", "Name": "Jay" },
         { "id": "2", "Name": "Mark" },
         { "id": "3", "Name": "Jack" }
         ],
"status": ["ok"]
}
    '''

info = json.loads(data)

df = json_normalize(info['Results']) #Results contain the required data
print(df)

Production :

   id  Name
0  1   Jay
1  2  Mark
2  3  Jack

JSON vers Pandas DataFrame en utilisant read_json()

Une autre fonction de Pandas pour convertir JSON en DataFrame est read_json() pour des chaînes JSON plus simples. Nous pouvons passer directement le chemin d’un fichier JSON ou la chaîne JSON à la fonction de stockage des données dans une DataFrame Pandas. La fonction read_json() a de nombreux paramètres, parmi lesquels orient spécifie le format de la chaîne JSON.

L’inconvénient est qu’il est difficile à utiliser avec des chaînes JSON imbriquées. Donc pour l’utilisation de read_json(), nous utiliserons un exemple beaucoup plus simple comme montré ci-dessous :

import pandas as pd

data = '''
          {
              "0":{
                  "Name": "Jay",
                  "Age": "17"
              },
              "1":{
                  "Name": "Mark",
                  "Age": "15"
              },
              "2":{
                  "Name": "Jack",
                  "Age":"16"
              }
          }
    '''

df = pd.read_json(data, orient ='index')
print(df)

Production :

   Name  Age
0   Jay   17
1  Mark   15
2  Jack   16

Nous définissons orient comme 'index' parce que la chaîne JSON deat correspond au modèle comme {index : {colonne : valeur}}.

Article connexe - Pandas DataFrame

  • Fusionner les Pandas DataFrames sur l'index
  • Normaliser une colonne dans Pandas DataFrame
  • Article connexe - Pandas JSON

  • Soustraire deux colonnes d'un DataFrame de Pandas
  • Définir les colonnes comme un index dans Pandas DataFrame