¿Cómo eliminar valores atípicos en Python?

Actualizado por ultima vez el 24 de noviembre de 2022, por Dereck Amesquita.

Un valor atípico es una observación que se encuentra anormalmente alejada de otros valores en un conjunto de datos. Los valores atípicos pueden ser problemáticos porque pueden afectar los resultados de un análisis.

Este tutorial explica cómo identificar y eliminar valores atípicos en Python.

¿Cómo identificar valores atípicos en Python?

Antes de poder eliminar los valores atípicos, primero debe decidir qué es lo que considera un valor atípico. Hay dos formas habituales de hacerlo:

Utilice el rango intercuartílico

El rango intercuartil (IQR) es la diferencia entre el percentil 75 (Q3) y el percentil 25 (Q1) en un conjunto de datos. Mide la dispersión del 50% medio de los valores.

Puede definir una observación como un valor atípico si es 1,5 veces el rango intercuartílico mayor que el tercer cuartil (Q3) o 1,5 veces el rango intercuartílico menor que el primer cuartil (Q1).

Valores atípicos = Observaciones> Q3 + 1.5 * IQR o Q1 – 1.5 * IQR

Utilice puntuaciones z 

Un puntaje z le dice cuántas desviaciones estándar tiene un valor dado de la media. Usamos la siguiente fórmula para calcular una puntuación z:

z = (X – μ) / σ

dónde:

  • X es un único valor de datos sin procesar
  • μ es la media de la población
  • σ es la desviación estándar de la población

Puede definir una observación como un valor atípico si tiene una puntuación z menor que -3 o mayor que 3.

Valores atípicos = observaciones con puntuaciones z> 3 o <-3

IMPORTANTE: Si no entendiste esto, no hay problema. A continuamos aplicaremos todos estos conceptos para que puedas replicarlos en tu propia información.

¿Cómo eliminar valores atípicos en Python?

Una vez que decida lo que considera un valor atípico, puede identificarlos y eliminarlos de un conjunto de datos. Para ilustrar cómo hacerlo, usaremos el siguiente DataFrame de pandas:

import numpy as np
import pandas as pd 
import scipy.stats as stats

# Creamos un Data Frame con 3 columnas 'A', 'B', 'C'
np.random.seed(10)
data = pd.DataFrame(np.random.randint(0, 10, size=(100, 3)), columns=['A', 'B', 'C'])

# Mostramos los 10 primeros elementos
data[:10]

           A          B          C
0  13.315865   7.152790 -15.454003
1  -0.083838   6.213360  -7.200856
2   2.655116   1.085485   0.042914
3  -1.746002   4.330262  12.030374
4  -9.650657  10.282741   2.286301
5   4.451376 -11.366022   1.351369
6  14.845370 -10.798049 -19.777283
7 -17.433723   2.660702  23.849673
8  11.236913  16.726222   0.991492
9  13.979964  -2.712480   6.132042

Luego, podemos definir y eliminar valores atípicos utilizando el método de puntuación z o el método de rango intercuartílico:

Método de puntuación Z para eliminar valores atípicos

# Encontramos el valor z-score de cada observación
z = np.abs(stats.zscore(data))

# Solo mantenemos las filas con puntuación z menor que el valor absoluto de 3 
data_clean = data[(z<3).all(axis=1)]

# Calculamos cuantas filas quedan
data_clean.shape

(99,3)

En este caso solo quedo 99 filas de 100

Método de rango intercuartílico para eliminar valores atípicos

# Encontramos el Q1, Q3, y el rango intercuartílico para cada columna
Q1 = data.quantile(q=.25)
Q3 = data.quantile(q=.75)
IQR = data.apply(stats.iqr)

# Solo mantenemos filas que esten dentro de 1.5*IQR de Q1 y Q3
data_clean = data[~((data < (Q1-1.5*IQR)) | (data > (Q3+1.5*IQR))).any(axis=1)]

# Calculamos cuantas filas desaparecerian
data_clean.shape

(89,3)

Solo quedan 89 de 100 filas.

Podemos ver que el método de puntuación z identificó y eliminó una observación como valor atípico, mientras que el método de rango intercuartílico identificó y eliminó 11 observaciones totales como valores atípicos.

¿Cuándo eliminar valores atípicos?

Si uno o más valores atípicos están presentes en sus datos, primero debe asegurarse de que no sean el resultado de un error de entrada de datos. A veces, una persona simplemente ingresa el valor de datos incorrecto al registrar datos.

Si el valor atípico resulta ser el resultado de un error de entrada de datos, puede decidir asignarle un nuevo valor, como la media o la mediana del conjunto de datos.

Si el valor es un valor atípico verdadero, puede optar por eliminarlo si tendrá un impacto significativo en su análisis general. Solo asegúrese de mencionar en su informe o análisis final que eliminó un valor atípico.

Recursos adicionales

Si está trabajando con varias variables a la vez, es posible que desee utilizar la distancia de Mahalanobis para detectar valores atípicos.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

I’m a Bachelor of Economics gratuaded from the National University of San Agustin. I have experience in Python, R and other languages with aplications in Finance or Econometrics, I also have knowledge of statistics and econometrics. If you need help on some issues you can write to me.

Deja un comentario

Un diseño de parcela dividida es un diseño experimental en el que los investigadores están interesados ​​en estudiar dos factores…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!