top of page

7 técnicas sencillas para detectar anomalías en Pandas para el análisis de datos

  • Foto del escritor: Claude Paugh
    Claude Paugh
  • 14 may
  • 4 Min. de lectura

Actualizado: 22 jun

El análisis de datos es un proceso apasionante, pero conlleva desafíos. Uno de los mayores obstáculos es identificar anomalías: resultados inesperados que pueden distorsionar nuestras conclusiones y predicciones. Ya sea que analices datos de ventas o monitorices el rendimiento del sistema, reconocer estas anomalías es fundamental. Como usuario apasionado de la biblioteca Pandas de Python, he descubierto varias técnicas prácticas para detectar estas anomalías de forma eficiente. En esta publicación, compartiré siete métodos fiables que puedes implementar fácilmente para mejorar tu análisis de datos.

pandas detectando anomalías
Pandas detecting anomalies

Comprensión de las anomalías


Las anomalías, a veces denominadas valores atípicos, son puntos de datos que se desvían significativamente de la distribución general. Pueden deberse a problemas como errores de medición o eventos excepcionales. Por ejemplo, si analiza un conjunto de datos sobre importes de compra de clientes, una sola transacción de 10 000 $ en un conjunto de datos donde la mayoría de las compras son de entre 20 $ y 200 $ se consideraría una anomalía. Reconocer estos puntos es fundamental, ya que pueden distorsionar la información y llevar a decisiones incorrectas.


1. Inspección visual con diagramas de caja


Una de las maneras más sencillas y eficaces de identificar anomalías es mediante diagramas de caja. Estos muestran claramente la distribución de los datos y facilitan la detección de valores atípicos.


Un diagrama de caja incluye cinco estadísticas: el mínimo, el primer cuartil, la mediana, el tercer cuartil y el máximo. Los puntos de datos fuera de los "bigotes" son posibles valores atípicos.


import pandas as pd
import matplotlib.pyplot as plt

Datos de muestra

data = {'Values': [1, 2, 3, 4, 5, 100]}
df = pd.DataFrame(data)

Diagrama de caja

plt.boxplot(df['Values'])
plt.title('Box Plot of Values')

plt.show()

Según estudios, los diagramas de caja pueden indicar eficazmente valores atípicos, lo que los convierte en una herramienta esencial. Un vistazo rápido al diagrama de caja le permitirá saber si hay valores que ameritan un análisis más profundo.


2. Análisis de puntuación Z


La puntuación Z ofrece un método sencillo para cuantificar la distancia entre un dato y la media. Un valor con una puntuación Z superior a 3 o inferior a -3 suele indicar una anomalía.


A continuación se explica cómo calcular puntuaciones Z utilizando 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)

Con esta técnica, se pueden ver claramente las medidas numéricas que resaltan las desviaciones del promedio. Por ejemplo, en un conjunto de datos de 1000 entradas, identificar solo unas pocas puntuaciones Z fuera de este rango podría indicar que se está dando un paso inusual que vale la pena investigar.


3. Rango intercuartil (RIC)


El Rango Intercuartil (RIC) es otro método robusto para detectar anomalías. El RIC se calcula como la diferencia entre el primer (percentil 25) y el tercer cuartil (percentil 75), capturando eficazmente el 50 % central de los datos.


Q1 = df['Values'].quantile(0.25)
Q3 = df['Values'].quantile(0.75)

IQR = Q3 - Q

Definir límites para identificar valores atípicos

lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

anomalies = df[(df['Values'] < lower_bound) | (df['Values'] > upper_bound)]

print(anomalies)

Las investigaciones demuestran que el uso del RIQ puede minimizar significativamente el impacto de los valores extremos. Por ejemplo, en un conjunto de datos de 500 registros de ventas, aplicar el RIQ puede ayudar a identificar transacciones que no se ajustan a los patrones de compra de los clientes.


4. Análisis de series de tiempo con media móvil y desviación estándar


Para los datos de series temporales, las estadísticas móviles son especialmente útiles. Permiten calcular la media y la desviación estándar dentro de una ventana móvil, lo que facilita la identificación de anomalías a medida que cambian las tendencias.


df['Rolling_Mean'] = df['Values'].rolling(window=3).mean()
df['Rolling_Std'] = df['Values'].rolling(window=3).std()

Identificar anomalías

anomalies = df[(df['Values'] > (df['Rolling_Mean'] + 2 * df['Rolling_Std'])) | (df['Values'] < (df['Rolling_Mean'] - 2 * df['Rolling_Std']))]

print(anomalies)

Por ejemplo, si está rastreando datos de sensores a lo largo del tiempo, este método puede alertarlo sobre fluctuaciones que podrían indicar un mal funcionamiento del equipo, lo que permite un mantenimiento oportuno antes de que los problemas empeoren.


5. Algoritmo de bosque de aislamiento


Para aquellos que se aventuran en el aprendizaje automático, el algoritmo Isolation Forest es una herramienta poderosa para identificar anomalías, especialmente en grandes conjuntos de datos.


Primero, asegúrese de tener instalada la biblioteca scikit-learn. El Bosque de Aislamiento aísla anomalías seleccionando aleatoriamente características y valores divididos, lo que le permite capturar patrones inusuales.


from sklearn.ensemble import IsolationForest

model = IsolationForest(contamination=0.1)

df['Anomaly'] = model.fit_predict(df[['Values']])
anomalies = df[df['Anomaly'] == -1]
print(anomalies)

Este método es particularmente eficaz para conjuntos de datos de decenas de miles de entradas, donde los métodos tradicionales pueden tener dificultades para detectar anomalías.


6. Factor de valor atípico local (LOF)


El factor de valor atípico local (LOF) es otra técnica avanzada que evalúa la densidad local de un punto de datos en comparación con sus vecinos. Los puntos con una densidad significativamente menor se marcan como anomalías.


from sklearn.neighbors import LocalOutlierFactor

lof = LocalOutlierFactor()
df['Anomaly'] = lof.fit_predict(df[['Values']])
anomalies = df[df['Anomaly'] == -1]

print(anomalies)


Por ejemplo, si está analizando patrones de tráfico, LOF puede ayudar a identificar picos o caídas inusuales en el volumen, alertándolo sobre posibles incidentes o inexactitudes en los datos.


7. Técnicas de visualización


Las herramientas visuales pueden mejorar significativamente su comprensión de los datos y ayudarle a identificar anomalías. Considere usar diagramas de dispersión o diagramas de pares para inspeccionar visualmente sus datos eficazmente.


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()

Según estudios, las visualizaciones pueden generar descubrimientos que los datos y las métricas sin procesar podrían no revelar por completo. Proporcionan información que permite identificar rápidamente patrones y valores atípicos en conjuntos de datos complejos.


Uniéndolo todo: Análisis de datos de Pandas


Reconocer anomalías es crucial para un análisis preciso de datos, especialmente en sectores donde la precisión es vital. Si bien herramientas como los diagramas de caja y el análisis de puntuación Z son excelentes para las inspecciones iniciales, métodos avanzados como el Bosque de Aislamiento y el Factor de Valores Atípicos Locales son excelentes en análisis complejos.

Experimente con estas técnicas, adáptelas a sus conjuntos de datos y perfeccione sus habilidades de análisis de datos con Pandas. Con estas herramientas, estará bien preparado para detectar anomalías eficientemente y tomar decisiones bien fundamentadas basadas en datos.

Pandas en busca de más anomalías en los datos
Pandas hunting for more data anomalies

+1 508-203-1492

Bedford, Massachusetts 01730

bottom of page