Olá Edson, tudo bom?
Como tô aprendendo, não sabia ao certo como funciona esse tal de .json
. Então o que fiz aqui não sei se funciona para todos os casos, mas funcionou para esse.
Para conseguir responder a sua dúvida, tive que criar uma função que cria um arquivo .json
com um dicionário formado com os dados do exemplo que você colocou aqui.
# Importar as bibliotecas necessárias
import pandas as pd
import json
# Exemplo de um dicionário que virará um arquivo .json
dict = {"students": [{"name": "Alan", "lastname": "Silva", "exam1": 50, "exam2": 80, "exam3": 91},
{"name": "Paula", "lastname": "Souza", "exam1": 95, "exam2": 98, "exam3": 99}]
}
# Criar uma função que escreve um arquivo .json
def escrever_json(dados):
with open('meu_arquivo.json', 'w', encoding='utf8') as f:
json.dump(dados, f, ensure_ascii=False, sort_keys=True, indent=4, separators=(',', ':'))
Depois criei outra função para ler o arquivo gerado.
# Criar uma função que lê o arquivo .json
def ler_json(arq_json):
with open(arq_json, 'r', encoding='utf8') as f:
return json.load(f)
Só depois é que criei uma lógica que colocasse os dados do arquivo .json
do exemplo dado em um DataFrame
do pandas
.
# Chamar a função escreve_jason()
escrever_json(dict)
# Ler o arquivo .json e jogar na variável 'data'
data = ler_json('meu_arquivo.json')
# Pegar as chaves de dentro de 'students' e jogar na variável 'keys'
keys = data['students'][0].keys()
# Pegar os de dentro de 'students' e jogar na variável 'values'
values = data['students'][0].values()
# Finalmente, criar a tabela que você queria em um DataFrame
df = pd.DataFrame(values, index=keys, columns=['Valores'])
df
O resultado saiu assim aqui no Jupyter
:
Valores
exam1 50
exam2 80
exam3 91
lastname Silva
name Alan
Bem provável que exista uma forma diferente que seja beeeem mais fácil que esta e que funcione para todo e qualquer arquivo .json
, mas eu não sei como fazer. Porém, para o seu exemplo, esse código funciona.
Espero ter dado ao menos uma luz aí.
Até!