7 técnicas fáceis para detectar anomalias no Pandas para análise de dados
- Claude Paugh
- 14 de mai.
- 4 min de leitura
Atualizado: 18 de ago.
A análise de dados é uma jornada empolgante, mas também traz consigo seus desafios. Um dos maiores obstáculos é identificar anomalias — resultados inesperados que podem distorcer nossas conclusões e previsões. Seja analisando dados de vendas ou monitorando o desempenho do sistema, reconhecer essas anomalias é fundamental. Como usuário apaixonado da biblioteca Pandas do Python, descobri diversas técnicas práticas para identificar essas anomalias com eficiência. Neste post, compartilharei sete métodos confiáveis que você pode implementar facilmente para aprimorar sua análise de dados.

Compreendendo anomalias
Anomalias, às vezes chamadas de outliers, são pontos de dados que se desviam significativamente da distribuição geral. Elas podem resultar de problemas como erros de medição ou eventos raros. Por exemplo, se você estiver analisando um conjunto de dados de valores de compras de clientes, uma única transação de US$ 10.000 em um conjunto de dados onde a maioria das compras está entre US$ 20 e US$ 200 seria considerada uma anomalia. Reconhecer esses pontos é vital, pois eles podem distorcer seus insights e levar a decisões equivocadas.
1. Inspeção visual com gráficos de caixa
Uma das maneiras mais simples, porém eficazes, de identificar anomalias é por meio de gráficos de caixa. Eles mostram claramente a distribuição dos dados e facilitam a identificação de valores discrepantes.
Um gráfico de caixa inclui cinco estatísticas: o mínimo, o primeiro quartil, a mediana, o terceiro quartil e o máximo. Pontos de dados fora dos "bigodes" são potenciais outliers.
import pandas as pd
import matplotlib.pyplot as plt
Dados de amostra
data = {'Values': [1, 2, 3, 4, 5, 100]}
df = pd.DataFrame(data)
Gráfico de caixa
plt.boxplot(df['Values'])
plt.title('Box Plot of Values')
plt.show()
De acordo com estudos, os gráficos de caixa podem indicar efetivamente valores discrepantes, tornando-os uma ferramenta essencial no seu kit de ferramentas. Uma rápida olhada no gráfico de caixa permitirá que você saiba se há valores que merecem uma análise mais aprofundada.
2. Análise de pontuação Z
O Z-score oferece um método simples para quantificar a distância entre um ponto de dados e a média. Um valor com Z-score acima de 3 ou abaixo de -3 geralmente indica uma anomalia.
Veja como calcular pontuações Z usando o Pandas:
from scipy import stats
import pandas as pd
df['Z-Score'] = stats.zscore(df['Values'])
anomalies = df[(df['Z-Score'] > 3) | (df['Z-Score'] < -3)]
print(anomalies)
Usando essa técnica, você pode ver claramente as medidas numéricas que destacam os desvios da média. Por exemplo, em um conjunto de dados com 1.000 entradas, identificar apenas alguns escores Z além dessa faixa pode indicar que você está diante de algo incomum que vale a pena investigar.
3. Intervalo interquartil (IQR)
O Intervalo Interquartil (IQR) é outro método robusto para identificar anomalias. O IQR é calculado como a diferença entre o primeiro (percentil 25) e o terceiro quartis (percentil 75), capturando efetivamente os 50% intermediários dos dados.
Q1 = df['Values'].quantile(0.25)
Q3 = df['Values'].quantile(0.75)
IQR = Q3 - Q
Definir limites para identificar valores discrepantes
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
anomalies = df[(df['Values'] < lower_bound) | (df['Values'] > upper_bound)]
print(anomalies)
Pesquisas mostram que o uso do IQR pode minimizar significativamente o impacto de valores extremos. Por exemplo, em um conjunto de dados de 500 registros de vendas, a aplicação do IQR pode ajudar a identificar transações que não são consistentes com os padrões de compra do cliente.
4. Análise de séries temporais com média móvel e desvio padrão
Para dados de séries temporais, estatísticas contínuas são particularmente úteis. Elas permitem calcular a média e o desvio padrão dentro de uma janela móvel, facilitando a identificação de anomalias conforme as tendências mudam.
df['Rolling_Mean'] = df['Values'].rolling(window=3).mean()
df['Rolling_Std'] = df['Values'].rolling(window=3).std()
Identificar anomalias
anomalies = df[(df['Values'] > (df['Rolling_Mean'] + 2 * df['Rolling_Std'])) | (df['Values'] < (df['Rolling_Mean'] - 2 * df['Rolling_Std']))]
print(anomalies)
Por exemplo, se você estiver monitorando dados do sensor ao longo do tempo, esse método pode alertá-lo sobre flutuações que podem indicar mau funcionamento do equipamento, permitindo manutenção oportuna antes que os problemas piorem.
5. Algoritmo de Floresta de Isolamento
Para aqueles que se aventuram no aprendizado de máquina, o algoritmo Isolation Forest é uma ferramenta poderosa para identificar anomalias, especialmente em grandes conjuntos de dados.
Primeiro, certifique-se de ter instalado a biblioteca scikit-learn. A Floresta de Isolamento isola anomalias selecionando aleatoriamente recursos e valores divididos, o que permite capturar padrões incomuns.
from sklearn.ensemble import IsolationForest
model = IsolationForest(contamination=0.1)
df['Anomaly'] = model.fit_predict(df[['Values']])
anomalies = df[df['Anomaly'] == -1]
print(anomalies)
Esse método é particularmente eficaz para conjuntos de dados com dezenas de milhares de entradas, onde os métodos tradicionais podem ter dificuldade para identificar anomalias.
6. Fator de Outlier Local (LOF)
O Fator de Outliers Locais (LOF) é outra técnica avançada que avalia a densidade local de um ponto de dados em comparação com seus vizinhos. Pontos que apresentam densidade significativamente menor são sinalizados como anomalias.
from sklearn.neighbors import LocalOutlierFactor
lof = LocalOutlierFactor()
df['Anomaly'] = lof.fit_predict(df[['Values']])
anomalies = df[df['Anomaly'] == -1]
print(anomalies)
Por exemplo, se você estiver analisando padrões de tráfego, o LOF pode ajudar a identificar picos ou quedas incomuns no volume, alertando você sobre possíveis incidentes ou imprecisões de dados.
7. Técnicas de visualização
Ferramentas visuais podem melhorar significativamente sua compreensão dos dados e ajudar a identificar anomalias. Considere usar gráficos de dispersão ou gráficos de pares para inspecionar seus dados visualmente de forma eficaz.
plt.scatter(df.index, df['Values'])
plt.title('Scatter Plot of Values')
plt.xlabel('Index')
plt.ylabel('Values')
plt.axhline(y=upper_bound, color='r', linestyle='-')
plt.axhline(y=lower_bound, color='r', linestyle='-')
plt.show()
Segundo estudos, as visualizações podem levar a descobertas que dados brutos e métricas podem não revelar completamente. Elas fornecem insights que permitem identificar rapidamente padrões e discrepâncias em conjuntos de dados complexos.
Juntando tudo: Análise de dados do Pandas
Reconhecer anomalias é crucial para uma análise precisa de dados, especialmente em setores onde a precisão é vital. Embora ferramentas como gráficos de caixa e análise de escore Z sejam ótimas para inspeções iniciais, métodos avançados como Floresta de Isolamento e Fator de Outliers Locais se destacam em análises complexas.
Experimente essas técnicas, adapte-as aos seus conjuntos de dados e aprimore suas habilidades de análise de dados usando o Pandas. Com essas ferramentas, você estará bem equipado para identificar anomalias com eficiência e tomar decisões bem embasadas e baseadas em dados.
