1
resposta

[Sugestão] Desafio: tratando os dados

https://raw.githubusercontent.com/MARINALDOSOUZA/dados_json/refs/heads/main/dados_json_V1

O que o código faz?
Obtenção de Dados Inteligente: Ele verifica se já existe um arquivo de dados local. Se sim, ele pergunta ao usuário se deseja usar a versão existente ou atualizar. Se o arquivo não existir ou se a atualização for solicitada, ele baixa os dados de uma URL e os salva localmente. Isso evita downloads desnecessários e oferece flexibilidade.

Processamento Robusto de JSON: O código lê o arquivo JSON e o converte em um DataFrame do pandas. Ele lida com estruturas aninhadas, como listas e dicionários, normalizando-as e expandindo-as em colunas separadas.

Limpeza e Tratamento de Dados:

Substitui valores vazios, como '', ' ' ou None, por NaN.

Preenche os valores numéricos NaN com o valor -1, facilitando a identificação e exclusão desses dados em análises posteriores sem perder as linhas.

Preenche os valores de texto NaN com a string 'Desconhecido'.

Otimização de Memória: Para grandes conjuntos de dados, o código otimiza o uso de memória convertendo os tipos de dados para o menor formato possível. Ele converte colunas de texto com poucos valores únicos para o tipo category e colunas numéricas para tipos inteiros ou de ponto flutuante menores.

Análise Final e Relatório:

Calcula a economia de memória alcançada pela otimização.

Verifica e informa o número de linhas duplicadas, dando ao usuário a opção de removê-las.

Exibe um resumo completo do DataFrame final, incluindo uma amostra com os nomes das colunas simplificados para melhor visualização.

Em resumo, este script é uma poderosa ferramenta de pré-processamento de dados que transforma um arquivo JSON complexo em um DataFrame limpo, otimizado e pronto para análise, demonstrando automação, resiliência a falhas e eficiência.

1 resposta

Oi, Marinaldo! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu script está muito bem estruturado e mostra uma abordagem inteligente para automação do pré-processamento de dados. A parte de normalização das listas aninhadas e otimização de memória ficou excelente, e o uso do logging para acompanhamento do fluxo também deixou o código mais robusto.

Uma dica interessante para o futuro é usar o método pd.set_option para controlar a visualização do DataFrame, útil em exibições mais longas.
Veja este exemplo:


import pandas as pd

pd.set_option('display.max_columns', None)
pd.set_option('display.width', 1000)

print(df.head())

Esse ajuste permite visualizar todas as colunas no terminal, evitando cortes nas exibições longas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!