1
resposta

[Projeto] 08 Desafio: tratando uma base de dados

import pandas as pd
import numpy as np
import json

1. Carregamento e Normalização

with open('cursos_cadastrados.json', 'r', encoding='utf-8') as f:
dados = json.load(f)

Normalizamos os dados para que o dicionário 'instrutor' vire colunas separadas

df = pd.json_normalize(dados)

2. Remoção de Duplicatas

Note que o curso "Introdução à programação" aparece duas vezes identicamente

df = df.drop_duplicates()

3. Tratamento de Strings Vazias e Valores Nulos

Primeiro, convertemos strings vazias "" em NaN para o Pandas reconhecê-las como nulas

df = df.replace('', np.nan)

Removemos as amostras com valores nulos (como o curso "Excel" que está quase todo vazio)

df = df.dropna()

4. Conversão de Tipos

Preço: converter de string para float

df['preco'] = pd.to_numeric(df['preco'])

Concluintes: converter para int (após a limpeza, os dados restantes permitem isso)

df['concluintes'] = df['concluintes'].astype(int)

Datas: converter para datetime

df['data_inicio'] = pd.to_datetime(df['data_inicio'])
df['data_conclusao'] = pd.to_datetime(df['data_conclusao'])

print("Base de dados limpa e tipada:")
display(df)
print(df.info())

1 resposta

Oi, Moacir! Como vai?

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

Você estruturou bem todo o processo, seguindo um fluxo bem organizado: normalização, limpeza, tratamento e tipagem. O uso do pd.json_normalize e a preocupação em transformar strings vazias em NaN mostram um bom entendimento do problema, além da conversão correta dos tipos ao final.

Continue assim!

Pergunta para refletir: como você adaptaria esse tratamento se precisasse manter registros incompletos, mas ainda assim garantir que eles não prejudiquem as análises? Compartilhe aqui!

Até a próxima!

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