Convertir JSON en un DataFrame de Pandas

Manav Narula 11 marzo 2021
  1. JSON a un DataFrame de Pandas usando json_normalize()
  2. JSON al DataFrame de Pandas usando read_json()
Convertir JSON en un DataFrame de Pandas

Este artículo presentará cómo convertir JSON en un DataFrame de Pandas.

JSON son las siglas de JavaScript Object Notation. Se basa en el formato de los objetos en JavaScript y es una técnica de codificación para representar datos estructurados. Se utiliza mucho hoy en día, especialmente para compartir datos entre servidores y aplicaciones web.

Debido a su simplicidad e influencia de las estructuras de datos del lenguaje de programación, JSON se está volviendo inmensamente popular. Es relativamente fácil de entender, y a continuación se presenta un ejemplo sencillo de una respuesta JSON de una API.

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

Como se puede ver en nuestro ejemplo, JSON parece ser algo así como una combinación de listas anidadas y diccionarios; por lo tanto, es relativamente fácil extraer datos de los archivos JSON e incluso almacenarlos como un Pandas DataFrame.

Las bibliotecas de Pandas y JSON en Python pueden ayudar a conseguirlo. Tenemos dos funciones read_json() y json_normalize() que pueden ayudar a convertir una cadena JSON en un DataFrame.

JSON a un DataFrame de Pandas usando json_normalize()

La función json_normalize() es muy utilizada para leer la cadena anidada de JSON y devolver un DataFrame. Para usar esta función, necesitamos primero leer la cadena JSON usando la función json.loads() en la biblioteca JSON en Python. Luego pasamos este objeto JSON a la json_normalize(), que devolverá un DataFrame de Pandas con los datos necesarios.

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)

Resultado:

   id  Name
0  1   Jay
1  2  Mark
2  3  Jack

JSON al DataFrame de Pandas usando read_json()

Otra función de Pandas para convertir JSON en un DataFrame es read_json() para cadenas JSON más simples. Podemos pasar directamente la ruta de un fichero JSON o la cadena JSON a la función para almacenar datos en un DataFrame de Pandas. read_json() tiene muchos parámetros, entre los cuales orient especifica el formato de la cadena JSON.

La desventaja es que es difícil de usar con cadenas JSON anidadas. Así que para usar read_json(), usaremos un ejemplo mucho más simple como se muestra a continuación:

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)

Resultado:

   Name  Age
0   Jay   17
1  Mark   15
2  Jack   16

Establecemos como orient el 'index' porque la cadena JSON fromat coincide con el patrón como {index : {column: value}}.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artículo relacionado - Pandas DataFrame

Artículo relacionado - Pandas JSON