Carregando
0x20Lição 3 de 10

Inspecione e limpe um conjunto de dados

Encontre valores ausentes, duplicatas, rótulos inconsistentes, unidades erradas e outliers - e trate cada um de forma deliberada.

24 min Questionário com 6 perguntas 3 exercícios de código
Ao final desta lição, você saberá
  • Identificar problemas comuns de qualidade de dados
  • Tratar valores ausentes e duplicatas de forma deliberada
  • Padronizar categorias e sinalizar outliers com a regra do IQR

Dados reais são bagunçados, e a limpeza muitas vezes ocupa a maior parte de um projeto. Procure:

  • Valores ausentes - em branco, NA, -1, 999. Ausente não é zero: pode significar desconhecido, não registrado ou não aplicável.
  • Duplicatas - a mesma observação registrada duas vezes.
  • Categorias inconsistentes - Bus, bus, BUS, bicycle contra bike.
  • Unidades e tipos - minutos misturados com segundos, números guardados como texto, datas em dois formatos.
  • Valores impossíveis ou extremos - uma viagem de 9.000 minutos, uma idade negativa.

Para cada problema, escolha uma regra, aplique-a no código (nunca à mão numa planilha) e registre-a - as suas conclusões dependem dessas escolhas.

Experimente

Até 15 XP

Caça aos problemas de qualidade

Aqui está uma exportação bruta. Clique em todos os valores que precisam de limpeza antes da análise.

trips.csv (rodada 1 de 1)Sinais encontrados 0/0

Clique em todos os trechos suspeitos. São 7.

trip_id,start,minutes,mode,member 101,2026-03-02 08:14,12,bus,yes 102,2026-03-02 08:20,-1,walk,no 102,2026-03-02 08:20,-1,walk,no 103,03/02/2026 09:05,9, Bus,yes 104,2026-03-02 09:40,1260,bike,Y 105,2026-03-02 10:02,15,bicycle,no

No pandas, as correções comuns ocupam uma linha cada:

1trips["minutes"] = trips["minutes"].replace(-1, pd.NA)        # sentinel → missing
2trips = trips.drop_duplicates(subset="trip_id")                # keep the first copy
3trips["mode"] = trips["mode"].str.strip().str.lower()          # " Bus" → "bus"
4trips["mode"] = trips["mode"].replace({"bicycle": "bike"})     # merge aliases
5trips["start"] = pd.to_datetime(trips["start"], format="mixed") # one date type

Outliers: sinalize e depois pense

A regra de John Tukey sinaliza valores que ficam mais de 1,5 × IQR abaixo do primeiro quartil (Q1) ou acima do terceiro (Q3), em que o intervalo interquartil IQR = Q3 − Q1 é a dispersão da metade central dos dados. Um valor sinalizado é uma pergunta, não um veredito: pode ser um erro a corrigir, ou a observação mais interessante do conjunto de dados. Nunca apague outliers só para deixar os resultados mais bonitos.

quartiles.py
1import statistics
2minutes = [12, 15, 18, 20, 21, 22, 25, 27, 30, 75]
3q1, q2, q3 = statistics.quantiles(minutes, n=4)
4print(q1, q2, q3)
Saída
17.25 21.5 27.75

Principais conclusões

  • Verifique valores ausentes, duplicatas, categorias, unidades e valores extremos antes da análise.

  • Limpe no código, com regras explícitas e documentadas.

  • Sinalize outliers com a regra do IQR e depois investigue, em vez de apagar.

Quiz da aula

6 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: escreva código em Python

Escreva código Python no editor e execute os testes com exemplos. O Python roda localmente no navegador usando WebAssembly.

Exercício 1

Tire a média dos valores conhecidos

+25 XP

Leia um array JSON de números e valores null. Imprima a média dos números conhecidos. A entrada tem pelo menos um número conhecido.

  • Uma nota ausente
  • Sem valores ausentes
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Exercício 2

Limpe duplicatas e categorias

+25 XP

Leia um CSV com trip_id e mode. Remova as viagens duplicadas (mantenha a primeira), padronize mode tirando os espaços e passando para minúsculas, e mapeie bicycle para bike. Imprima duplicates removed: N e depois cada modal com a sua contagem, do mais comum para o menos comum (empates em ordem alfabética).

  • Modais bagunçados
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Exercício 3

Sinalize outliers com a regra do IQR

+25 XP

Leia um array JSON de números. Usando statistics.quantiles(values, n=4), imprima Q1=… Q3=… IQR=…, depois fences: LOW to HIGH (Q1 − 1.5×IQR e Q3 + 1.5×IQR) e depois outliers: [...] (na ordem da entrada). Formate todos os números com :g.

  • Tempos de deslocamento
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…