Detecção e remoção de valores discrepantes
Método do z-score, método do IQR, conceito de floresta de isolamento e tratamento de valores discrepantes na prática.
Detecção e remoção de valores discrepantes é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
O que é um valor atípico?
Um valor atípico é um valor muito distante do restante dos dados. Ele pode ser um extremo genuíno, um erro de entrada de dados ou uma falha do sensor. Valores atípicos podem distorcer médias, variâncias e modelos; por isso, detecte-os deliberadamente.
O método da pontuação z
Uma pontuação z mede quantos desvios padrão um valor está distante da média: z = (x - mean) / std. Uma regra comum sinaliza qualquer ponto com |z| > 3 como valor atípico.
import numpy as np
data = np.array([10, 12, 11, 13, 12, 100])
z = (data - data.mean()) / data.std()
print(np.round(z, 2))Sinalizando com scipy zscore
scipy.stats.zscore calcula pontuações z para uma matriz. Combine-o com um limite para criar uma máscara booleana de valores atípicos.
from scipy import stats
z = np.abs(stats.zscore(data))
outliers = z > 3
print(data[outliers])Limitação da pontuação z
A pontuação z usa a média e std, que também são influenciados por valores atípicos. Com dados muito assimétricos ou valores extremos, as pontuações z podem detectar menos valores atípicos do que deveriam. O método IQR é mais robusto.
O método IQR
O intervalo interquartil IQR = Q3 - Q1 abrange os 50 por cento centrais. Ele é calculado a partir dos quartis, que quase não são deslocados por valores atípicos, o que o torna robusto.
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
print(q1, q3, iqr)Limites do IQR
Os limites de Tukey definem as fronteiras: inferior = Q1 - 1.5*IQR, superior = Q3 + 1.5*IQR. Qualquer valor fora desses limites é sinalizado. A mesma regra determina os bigodes de um boxplot.
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
mask = (data < lower) | (data > upper)
print(data[mask]) # outliersVisualização com boxplot
Um boxplot visualiza a regra do IQR: a caixa vai de Q1 a Q3, a linha representa a mediana, os bigodes alcançam os limites e os pontos além deles são desenhados como pontos individuais de valores atípicos.
# import matplotlib.pyplot as plt
# plt.boxplot(data)
# plt.show()Removendo valores atípicos
Depois de sinalizar os valores atípicos, você pode remover as linhas correspondentes com DROP. Faça isso com cautela, pois remover dados reais pode introduzir viés nos resultados. Mantenha um registro do que foi removido e do motivo.
clean = data[~mask]
print(clean) # outlier removedWinsorização com np.clip
Em vez de excluir os valores, a winsorização limita os valores extremos aos limites escolhidos com np.clip. Assim, o número de linhas é preservado e a influência dos extremos é reduzida.
capped = np.clip(data, lower, upper)
print(capped) # extreme value pulled to the upper fenceLimitando aos percentis
Uma escolha comum para a winsorização é limitar os valores aos percentis 1 e 99, removendo apenas os 2 por cento mais extremos de forma simétrica.
lo, hi = np.percentile(data, [1, 99])
print(np.clip(data, lo, hi))Remover ou limitar?
Escolha de acordo com o contexto: use REMOVE para erros claros (valores impossíveis), CAP para valores genuínos, mas extremos, que você deseja manter, e, às vezes, KEEP quando os valores atípicos são o próprio sinal (detecção de fraude). Documente a decisão.
Verificação rápida
Teste seus conhecimentos sobre valores atípicos.
Recapitulação
Kit de ferramentas para lidar com valores atípicos:
- Pontuação z: sinalize
|z| > 3usandoscipy.stats.zscore(sensível a valores atípicos) - Limites do IQR: de Q1-1.5*IQR a Q3+1.5*IQR (robustos e base dos boxplots)
- Remova erros genuínos; faça a winsorização com
np.clippara limitar os extremos - Documente sempre por que os valores foram removidos ou limitados
Perguntas Frequentes
A aula “Detecção e remoção de valores discrepantes” é grátis?
Sim — o texto completo de “Detecção e remoção de valores discrepantes” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Detecção e remoção de valores discrepantes”?
Método do z-score, método do IQR, conceito de floresta de isolamento e tratamento de valores discrepantes na prática. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Detecção e remoção de valores discrepantes”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Detecção e remoção de valores discrepantes
- Codificação de variáveis categóricas
- Escalonamento de atributos: normalização e padronização
- Construindo pipelines de pré-processamento