pandas

Pandas

Tutorial Pandas: Identificar y corregir outliers

Pandas: identificar y corregir outliers en DataFrames. Aprende métodos como desviación estándar, IQR y visualización para manejar valores atípicos y mejorar tus análisis y modelos predictivos.

¿Qué son los outliers en DataFrames?

Los outliers, también conocidos como valores atípicos, son observaciones en un conjunto de datos que se desvían significativamente de otras observaciones. En el contexto de un DataFrame en Pandas, los outliers pueden distorsionar el análisis estadístico y afectar negativamente a los modelos de aprendizaje automático. Identificar y gestionar estos valores es crucial para asegurar la integridad y calidad de los datos.

Los valores atípicos pueden surgir por diversas razones, tales como errores de medición, errores de entrada de datos, o simplemente porque representan casos excepcionales que son inherentemente diferentes del resto de las observaciones.

En un DataFrame, los outliers se pueden identificar en diferentes tipos de datos, pero son más comunes en datos numéricos. Los outliers pueden ser un valor extremadamente alto o bajo en comparación con el resto de los datos. Por ejemplo, en un DataFrame que contiene información sobre los ingresos de personas, un ingreso extremadamente alto o bajo comparado con el promedio puede ser considerado un outlier.

Para ilustrar cómo se ven los outliers en un DataFrame, consideremos el siguiente ejemplo de un conjunto de datos que contiene la edad de un grupo de personas:

import pandas as pd

data = {'Nombre': ['Ana', 'Luis', 'Carlos', 'Marta', 'Pedro'],
        'Edad': [22, 23, 120, 24, 25]}

df = pd.DataFrame(data)
print(df)

En este ejemplo, la edad de Carlos es 120, que es significativamente mayor que las edades de los demás. Este valor es un claro outlier.

Los outliers pueden tener efectos adversos en el análisis de datos y en la construcción de modelos predictivos. Algunos de los problemas que pueden causar incluyen:

  • Distorsión de estadísticas descriptivas: Los outliers pueden afectar medidas como la media y la desviación estándar, haciendo que no representen adecuadamente la distribución central de los datos.
  • Influencia en modelos de aprendizaje automático: Los modelos de regresión y otros algoritmos pueden ser muy sensibles a los outliers, lo que puede llevar a predicciones menos precisas.
  • Impacto en la visualización de datos: Los outliers pueden hacer que las visualizaciones sean menos claras y más difíciles de interpretar.

Es importante tener en cuenta que no todos los outliers son necesariamente incorrectos o deben ser eliminados. En algunos casos, los outliers pueden contener información valiosa. Por ello, es esencial analizar el contexto y la causa de los outliers antes de decidir cómo manejarlos.

¿Cómo se detectan los outliers en DataFrames?

Detectar outliers en DataFrames utilizando Pandas puede realizarse a través de diversas técnicas, cada una adecuada para diferentes tipos de datos y contextos. Aquí se describen algunas de las técnicas más comunes y efectivas para la detección de outliers:

  • Método de la desviación estándar: Los outliers son identificados como aquellos valores que se desvían significativamente de la media. Se utiliza la desviación estándar como criterio para determinar qué tan lejos está un valor de la media.
import pandas as pd
import numpy as np

data = {'Nombre': ['Ana', 'Luis', 'Carlos', 'Marta', 'Pedro'],
        'Edad': [22, 23, 120, 24, 25]}

df = pd.DataFrame(data)

# Calcular la media y la desviación estándar
mean = df['Edad'].mean()
std_dev = df['Edad'].std()

# Definir el umbral para los outliers (por ejemplo, 1 desviación estándar)
threshold = 1

# Identificar los outliers
df['Es_Outlier'] = np.abs(df['Edad'] - mean) > (threshold * std_dev)
print(df)
  • Método del rango intercuartílico (IQR): Este método es robusto frente a la presencia de outliers y se basa en calcular el rango intercuartílico, que es la diferencia entre el tercer cuartil (Q3) y el primer cuartil (Q1). Los valores que se encuentran fuera de 1.5 veces el IQR por debajo de Q1 o por encima de Q3 son considerados outliers.
Q1 = df['Edad'].quantile(0.25)
Q3 = df['Edad'].quantile(0.75)
IQR = Q3 - Q1

# Definir los límites inferior y superior
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# Identificar los outliers
df['Es_Outlier'] = (df['Edad'] < lower_bound) | (df['Edad'] > upper_bound)
print(df)
  • Método de visualización: Las técnicas de visualización como los gráficos de caja (boxplots) y los gráficos de dispersión (scatter plots) pueden ser útiles para detectar outliers de manera visual. Estas técnicas permiten identificar rápidamente valores que se desvían del patrón general de los datos.
import matplotlib.pyplot as plt

# Crear un boxplot para visualizar los outliers
plt.boxplot(df['Edad'])
plt.title("Boxplot de Edad")
plt.show()

  • Método Z-Score: El Z-Score mide la distancia de un valor respecto a la media en términos de desviaciones estándar. Un valor Z-Score alto o bajo indica que el valor es un outlier.
from scipy import stats

# Calcular el Z-Score
df['Z_Score'] = stats.zscore(df['Edad'])

# Definir el umbral para los outliers (por ejemplo, Z-Score > 1 o < -1)
df['Es_Outlier'] = (df['Z_Score'] > 1) | (df['Z_Score'] < -1)
print(df)

Cada uno de estos métodos tiene sus propias ventajas y desventajas. La elección del método adecuado depende del contexto del análisis y de las características específicas del conjunto de datos. Es importante considerar el impacto potencial de los outliers en el análisis y en los modelos predictivos y elegir el método que mejor se adapte a las necesidades del proyecto.

¿En qué consiste la técnica del rango intercuartílico y cómo arregla los outliers?

La técnica del rango intercuartílico (IQR, por sus siglas en inglés) es un método estadístico robusto utilizado para identificar y manejar outliers en un conjunto de datos. El IQR se calcula como la diferencia entre el tercer cuartil (Q3) y el primer cuartil (Q1), representando la dispersión de la mitad central de los datos. Esta técnica es especialmente útil porque no se ve afectada por la presencia de valores extremos como la media y la desviación estándar.

Para aplicar la técnica del IQR en Pandas y corregir los outliers, se deben seguir estos pasos:

Calcular los cuartiles

Determinar el primer cuartil (Q1) y el tercer cuartil (Q3) del conjunto de datos. Estos cuartiles dividen los datos en cuatro partes iguales.

import pandas as pd

data = {'Nombre': ['Ana', 'Luis', 'Carlos', 'Marta', 'Pedro', 'Juan', 'Sara'],
        'Edad': [22, 23, 120, 24, 25, 22, 23]}

df = pd.DataFrame(data)

# Calcular Q1 y Q3
Q1 = df['Edad'].quantile(0.25)
Q3 = df['Edad'].quantile(0.75)

Calcular el IQR

El IQR es la diferencia entre Q3 y Q1.

IQR = Q3 - Q1

Determinar los límites inferior y superior

Estos límites se utilizan para identificar los outliers. Los valores que se encuentran fuera de estos límites se consideran outliers. Los límites se calculan como:

  • Límite inferior: Q1 - 1.5 * IQR
  • Límite superior: Q3 + 1.5 * IQR
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

Identificar los outliers

Utilizando los límites calculados, se marcan los valores que están por debajo del límite inferior o por encima del límite superior.

df['Es_Outlier'] = (df['Edad'] < lower_bound) | (df['Edad'] > upper_bound)
print(df)

Corregir los outliers

Existen varias estrategias para manejar los outliers una vez identificados. Algunas de las más comunes son:

  • Eliminación de outliers: Esta estrategia consiste en eliminar las filas del DataFrame que contienen outliers.
df_sin_outliers = df[~df['Es_Outlier']]
print(df_sin_outliers)
  • Imputación de outliers: Sustituir los outliers por valores más representativos, como la media o la mediana de los datos.
# Imputar con la mediana
mediana = df['Edad'].median()
df['Edad'] = df.apply(lambda row: mediana if row['Es_Outlier'] else row['Edad'], axis=1)
print(df)
  • Transformación de datos: Aplicar transformaciones como logaritmos o raíces cuadradas para reducir la influencia de los outliers.
import numpy as np

# Aplicar la transformación logarítmica
df['Edad_log'] = np.log(df['Edad'])
print(df)

La técnica del IQR es particularmente útil en datasets con distribuciones no normales, ya que no se ve influenciada por la asimetría de los datos. Además, es fácil de implementar y entender, lo que la hace una herramienta valiosa en la limpieza y preparación de datos.

Certifícate en Pandas con CertiDevs PLUS

Ejercicios de esta lección Identificar y corregir outliers

Evalúa tus conocimientos de esta lección Identificar y corregir outliers con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Pandas

Accede a todas las lecciones de Pandas y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Pandas

Supera todos los ejercicios de programación del curso de Pandas y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender qué son los outliers y por qué es crucial manejarlos.

  • Identificar outliers en DataFrames utilizando Pandas.

  • Implementar métodos de detección de outliers: desviación estándar, IQR, Z-Score y visualización.

  • Aplicar técnicas para corregir outliers e integrar datos confiables.