Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

não consigo ralizar a normalização com o meta


#JSON COM METADADOS (PRECISA RECEBER UM OBJETO JSON E NÃO METADADOS)
dados_normalizados = pd.json_normalize(
    pacientes2, 
    record_path='Pacientes', 
    meta=['Pesquisa', 'Ano']
)
dados_normalizados




tento de toda forma, passando pacientes2.to_dict() e etc... porem ele não consegue fazer, já fiz um pd.to_json e etc, porem nunca vai, a não ser como o exemplo de passar o json para uma variavel e tal, mas não vejo como faria isso sem ser de forma tão manual, e que não iria usar, claro. há alguma solução ?

lembrando, pacientes2 = pd.read_json('https://raw.githubusercontent.com/alura-cursos/Pandas/main/pacientes_2.json')

consegui desta forma, mas se alguem tiver alguma solução bacana, iria me ajudar kkkk, estou quebrando a cabeça.


#JSON COM METADADOS (PRECISA RECEBER UM OBJETO JSON E NÃO METADADOS)
dados_normalizados = pd.json_normalize(pacientes2['Pacientes'])
dados_normalizados['Pesquisa'] = pacientes2['Pesquisa'].values[0]
dados_normalizados['Ano'] = pacientes2['Ano'].values[0]
dados_normalizados
4 respostas
solução!

Olá, Pedro! tudo bem?

Da forma como você colocou no primeiro código realmente não vai funcionar utilizar os parâmetros record_path e meta. Os dados precisariam estar em um dicionário para que isso desse certo, pois a função json_normalize recebe como entrada objeto do tipo dicionário.

Como eu comentei nessa atividade, no vídeo nós realizamos a normalização no arquivo pacientes_2 com o formato JSON, mas foi usada a estratégia de usar o código: pd.json_normalize(dados_pacientes_2['Pacientes']), especificando a coluna a ser normalizada (que continha os dados no formato de dicionário). Porém, se tentarmos usar parâmetros da função json_normalize em um arquivo JSON podem surgir erros.

Para contornar isso, precisamos importar o módulo json e ler os arquivos conforme o código abaixo:

import json

#Lendo arquivos json usando o módulo Python JSON
with open('arquivo.json','r') as f:
    dados = json.loads(f.read())

#Normalizando os dados 
pd.json_normalize(dados)

Se a dúvida ainda continuar pode chamar! Bons estudos

Obrigado ! E para eu colocar as colunas como meta ali ? Como seria ?

Oi, Pedro! Você pode fazer como está no código abaixo, adicionando os parâmetros record_path e meta à função json_normalize:

import pandas as pd
import json

#Lendo arquivos json usando o módulo Python JSON
with open('pacientes_2.json','r') as f:
    dados = json.loads(f.read())

#Normalizando os dados 
pd.json_normalize(dados, record_path='Pacientes', meta=['Pesquisa', 'Ano'])

Dessa forma o DataFrame vai aparecer com todas as colunas separadas :D

Valeu Valquiria, abraços.