Converter o JSON em Pandas DataFrame

  1. JSON para Pandas DataFrame utilizando json_normalize()
  2. JSON para Pandas DataFrame utilizando a função read_json()

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}}.

Artigo relacionado - Pandas DataFrame

  • Converter Pandas DataFrame para JSON
  • Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
  • Artigo relacionado - Pandas JSON

  • Aplicar uma função a múltiplas colunas em Pandas DataFrame
  • Escrever um Pandas DataFrame para CSV