Gestión de valores atípicos

Análisis exploratorio de datos en Python

George Boorman

Curriculum Manager, DataCamp

¿Qué es un valor atípico?

  • Una observación muy alejada de otros puntos de datos
    • Precio medio de la vivienda: $400,000
    • Precio atípico de la vivienda: $5,000,000

 

  • Debes considerar por qué el valor es diferente:
    • Ubicación, número de dormitorios, tamaño total, etc.

Casa grande con piscina

1 Crédito de la imagen: https://unsplash.com/@ralphkayden
Análisis exploratorio de datos en Python

Uso de estadísticas descriptivas

print(salaries["Salary_USD"].describe())
count       518.000
mean     104905.826
std       62660.107
min        3819.000
25%       61191.000
50%       95483.000
75%      137496.000
max      429675.000
Name: Salary_USD, dtype: float64
Análisis exploratorio de datos en Python

Uso del rango intercuartílico

Intervalo intercuartílico (IQR)

  • IQR = percentil 75 - percentil 25
Análisis exploratorio de datos en Python

IQR en gráficos de caja

sns.boxplot(data=salaries,
            y="Salary_USD")
plt.show()

Gráfico de caja de los salarios de los profesionales de datos, que muestra el percentil 25 en la parte inferior de la caja, el percentil 50 como línea media, el percentil 75 en la parte superior de la caja y los valores atípicos como rombos fuera de la caja

Análisis exploratorio de datos en Python

Uso del rango intercuartílico

Intervalo intercuartílico (IQR)

  • IQR = percentil 75 - percentil 25
  • Valores atípicos superiores > percentil 75 + (1,5 * IQR)
  • Valores atípicos inferiores < percentil 25 - (1,5 * IQR)
Análisis exploratorio de datos en Python

Identificación de umbrales

# 75th percentile
seventy_fifth = salaries["Salary_USD"].quantile(0.75)

# 25th percentile twenty_fifth = salaries["Salary_USD"].quantile(0.25)
# Interquartile range salaries_iqr = seventy_fifth - twenty_fifth
print(salaries_iqr)
76305.0
Análisis exploratorio de datos en Python

Identificar valores atípicos

# Upper threshold
upper = seventy_fifth + (1.5 * salaries_iqr)

# Lower threshold lower = twenty_fifth - (1.5 * salaries_iqr)
print(upper, lower)
251953.5 -53266.5
Análisis exploratorio de datos en Python

Subconjuntos de datos

salaries[(salaries["Salary_USD"] < lower) | (salaries["Salary_USD"] > upper)] \

[["Experience", "Employee_Location", "Salary_USD"]]
        Experience    Employee_Location    Salary_USD
29      Mid           US                   429675.0
67      Mid           US                   257805.0
80      Senior        US                   263534.0
83      Mid           US                   429675.0
133     Mid           US                   403895.0
410     Executive     US                   309366.0
441     Senior        US                   362837.0
445     Senior        US                   386708.0
454     Senior        US                   254368.0
Análisis exploratorio de datos en Python

¿Por qué buscar valores atípicos?

  • Los valores atípicos son valores extremos

    • Puede que no represente con exactitud los datos
  • Puede cambiar la media y la desviación típica

  • Las pruebas estadísticas y los modelos de machine learning necesitan datos distribuidos normalmente

Análisis exploratorio de datos en Python

¿Qué hacer con los valores atípicos?

Preguntas que debes hacer:

  • ¿Por qué existen estos valores atípicos?
    • Los puestos de mayor responsabilidad y en otros países están mejor remunerados.
    • Considera la posibilidad de dejarlos en el conjunto de datos.

 

  • ¿Son precisos los datos?
    • ¿Podría haber habido un error en la recopilación de datos?
      • Si es así, quítalos.
Análisis exploratorio de datos en Python

Eliminar valores atípicos

no_outliers = salaries[(salaries["Salary_USD"] > lower) & (salaries["Salary_USD"] < upper)]
print(no_outliers["Salary_USD"].describe())
count       509.000000
mean     100674.567780
std       53643.050057
min        3819.000000
25%       60928.000000
50%       95483.000000
75%      134059.000000
max      248257.000000
Name: Salary_USD, dtype: float64
Análisis exploratorio de datos en Python

Distribución de los salarios

Histograma de salarios tras sustituir los valores atípicos por la mediana, con valores extremos de entre 250 000 y 450 000 dólares aproximadamente.

Histograma de los salarios tras sustituir los valores atípicos por la mediana, que se asemeja casi a una distribución normal.

Análisis exploratorio de datos en Python

¡Vamos a practicar!

Análisis exploratorio de datos en Python

Preparing Video For Download...