import pandas as pd
import json
import numpy as np
1. Carregando o arquivo
with open('dados.json', 'r') as f:
dados = json.load(f)
2. Normalizando os dados
Usamos record_path para os telefones e meta para o restante
df = pd.json_normalize(
dados['pessoas'],
record_path=['telefones'],
meta=['nome', 'idade', ['endereco', 'rua'], ['endereco', 'numero'], ['endereco', 'cidade']]
)
Renomeando a coluna do telefone que fica com o nome '0' por padrão
df.rename(columns={0: 'telefone'}, inplace=True)
3. Tratando dados vazios
Identificamos a string vazia na rua da Maria e trocamos por NaN
df.replace('', np.nan, inplace=True)
Removendo linhas com qualquer dado nulo (no caso, a rua vazia da Maria)
df.dropna(inplace=True)
4. Ajustando a tipagem
A idade do João está como string "25", precisamos converter tudo para int
df['idade'] = df['idade'].astype(int)
print("DataFrame Tratado:")
display(df)
print(df.info())