1
resposta

Erro ao ler JSON com tipos de dados diferentes no Pandas

Ola, pessoal! Estou tentando utilizar APIs publicas com python pandas.

Alguem sabe como fazer para ler JSON com varios tipos de dados (strings, arrays, numeros) como valor?

Na verdade nem preciso de todos os dados. Apenas nome, fantasia, data de abertura e situacao. Pode ser via Pandas ou outra alternativa.

Segue link do notebook no Colab: https://colab.research.google.com/drive/1GyQumNx56ibNeDZdO840IWa6dsUZ7689?usp=sharing

import requests
import pandas as pd
cnpj=str(27865757000102)
r=requests.get('https://www.receitaws.com.br/v1/cnpj/{}'.format(cnpj))
dj=r.json()
with open("dados.json", "w") as json_file:
  json.dump(dj, json_file, indent=4)
dd=pd.read_json("dados.json")
1 resposta

Oii Alberto, como você está?

Peço perdão pela demora em obter um retorno.

O link que você disponibilizou não está público, mas fiz um exemplo em código para você alcançar seu objetivo. No código utilizamos o recurso da biblioteca requests para transformar diretamente os dados lidos em um arquivo json, que se assemelha a um dicionário, ou seja um par de chave e valor. Como as informações que você deseja obter não estão dentro de listas ou de outro objeto, para obtê-las basta acessarmos a chave correspondente:

import requests
import pandas as pd

cnpj = "27865757000102"
r = requests.get('https://www.receitaws.com.br/v1/cnpj/{}'.format(cnpj)).json()


print(f"Nome {r['nome']}")
print(f"Fantasia: {r['fantasia']}")
print(f"Data de Abertura: {r['abertura']}")
print(f"Situação: {r['situacao']}")

Caso queira fazer um dataframe do pandas com essas informações, uma forma para obter o resultado é o código a seguir:

import requests
import pandas as pd

cnpj_globo = "27865757000102"
cnpj_record = "60628369000418"

lista_de_cnpj = [cnpj_globo, cnpj_record]
dados = []

for cnpj in lista_de_cnpj:
  r = requests.get('https://www.receitaws.com.br/v1/cnpj/{}'.format(cnpj)).json()
  dados.append(
        {
            'Nome': r['nome'],
            'Fantasia': r['fantasia'],
            'Data de Abertura':  r['abertura'],
            'Situação': r['situacao']
        }
  )

df = pd.DataFrame(dados)
df

Resultado:

Resultado do dataframe criado

Qualquer dúvida estou a disposição.

Abraços e bons estudos!