Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Erro na leitura do arquivo JSON (arquivo com colunas aninhadas)

Olá,

Seguindo o curso, tentei abrir o arquivo JSON abaixo:

{
  "tabela": [
    {
      "_id": "5",
      "report": "informe",
      "date": "2020-07-07T20:33:26.088Z",
      "company": "JP 1",
      "customer": {
        "id": "5b",
        "name": "I Like",
        "email": "finro@mobis.com.br"
      },
      "data_selecionada": "2020-07-07T03:00:00.000Z",
      "valor_venda": 10,
      "protocolo": "20200703253"
    },
    {
      "_id": "1",
      "report": "informe",
      "date": "2020-07-07T20:33:13.137Z",
      "company": "MVP 1",
      "customer": {
        "id": "5b",
        "name": "Brasil",
        "email": "finan@ilbis.com.br"
      },
      "data_selecionada": "2020-07-06T03:00:00.000Z",
      "valor_venda": 20,
      "protocolo": "20200733125"
    }
  ]
}

Usando os comandos:

import pandas as pd
 df = pd.read_json('teste.json')
 df

Ele me retornou a seguinte tabela:

tabela

0 {'id': '5', 'report': 'informe', 'date': '202... 1 {'id': '1', 'report': 'informe', 'date': '202...

Está faltando algum parâmetro em .read_json ? Por que ele não criou colunas e linhas com os valores informados?

Obrigado!

3 respostas

Oi Alexandre tudo bem com você??

Acredito que não tenha funcionado para você, pois, se o arquivo .json encontra-se no seu pc, você deve selecionar todo o caminho até o arquivo para que ele possa ser aberto e lido. Por exemplo:

import pandas as pd
 df = pd.read_json('C:\Users\victo\Documents\Projetos_Alura\Pandas\Curso Pandas\extras\dados\aluguel.json')
 df

Verifica por favor e me informa se deu certo! Fico no aguardo.

Olá Victor, tudo bem?

Obrigado pela ajuda. Acredito que encontrei a solução. Neste Json, existiam colunas 'aninhadas'.

"customer": {
        "id": "5b",
        "name": "Brasil",
        "email": "finan@ilbis.com.br"

Por isso estava dando este problema. Fui pesquisar e vi que quando isto acontece é preciso importar uma biblioteca para 'normalizar' esta tabela. Assim a coluna deixa de ser aninhada e são criadas 3 novas colunas no dataframe: customer.id, customer.name e customer.email .

from pandas.io.json import json_normalize
 df = pd.json_normalize(data["tabela"] )

Deu certo. Se isto foi uma gambiarra me avisa !

Abraço !

solução

Perfeito!

Não é gambiarra não! Parabéns pela resolução.

Gostaria apenas de pedir para que você marque a sua resposta explicando como solução por favor, assim facilita para que nossos alunos possam encontrar mais facilmente respostas para problemas semelhantes.

Obrigado e bons estudos!