Converter o JSON em Pandas DataFrame

Manav Narula 30 janeiro 2023
  1. JSON para Pandas DataFrame utilizando json_normalize()
  2. JSON para Pandas DataFrame utilizando a função read_json()
Converter o JSON em Pandas DataFrame

Este artigo irá introduzir como converter o JSON a uma Pandas DataFrame.

JSON significa JavaScript Object Notation (Notação de Objecto JavaScript). É baseado no formato de objectos em JavaScript e é uma técnica de codificação para representar dados estruturados. É amplamente utilizada hoje em dia, especialmente para a partilha de dados entre servidores e aplicações web.

Devido à sua simplicidade e influência das estruturas de dados da linguagem de programação, o JSON está a tornar-se imensamente popular. É relativamente fácil de compreender, e o seguinte é um exemplo simples de uma resposta JSON de uma API.

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

Como se pode ver no nosso exemplo, JSON parece ser de certa forma uma combinação de listas e dicionários aninhados; portanto, é relativamente fácil extrair dados de ficheiros JSON e até armazená-los como um Pandas DataFrame.

As bibliotecas de Pandas e JSON em Python podem ajudar a conseguir isto. Temos duas funções read_json() e json_normalize() que podem ajudar na conversão da string JSON para uma DataFrame.

JSON para Pandas DataFrame utilizando json_normalize()

A função json_normalize() é muito utilizada para ler a string JSON aninhada e devolver um DataFrame. Para utilizar esta função, precisamos primeiro de ler a string JSON utilizando a função json.loads() na biblioteca JSON em Python. Depois passamos este objecto JSON para a função json_normalize(), que retornará um Pandas DataFrame contendo os dados necessários.

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 para Pandas DataFrame utilizando a função read_json()

Outra função Pandas para converter o JSON para uma DataFrame é read_json() para strings JSON mais simples. Podemos passar directamente o caminho de um ficheiro JSON ou da string JSON para a função de armazenamento de dados numa DataFrame Pandas. O read_json() tem muitos parâmetros, entre os quais orient especifica o formato da string JSON.

A desvantagem é que é difícil de utilizar com strings JSON aninhadas. Assim, para utilizar read_json(), vamos utilizar um exemplo muito mais simples, como se mostra abaixo:

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

Definimos orient para ser 'index' porque a string JSON da string JSON corresponde ao padrão 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

Artigo relacionado - Pandas DataFrame

Artigo relacionado - Pandas JSON