Diagrama de caja de Seaborn sin valores atípicos

Salman Mehmood 15 febrero 2024
Diagrama de caja de Seaborn sin valores atípicos

Este artículo tiene como objetivo demostrar qué son los diagramas de caja y los valores atípicos, cómo crear un diagrama de caja modificado y cómo utilizar un resumen de cinco números para eliminar los valores atípicos en Seaborn.

Crear diagrama de caja sin valores atípicos en Seaborn

El diagrama de caja es un gráfico estadístico para visualizar una media estadística descriptiva, la mediana del cuartil 1, el cuartil 2, el cuartil 3 y los valores mínimo-máximo. Los valores atípicos son números fuera del grupo del resto de los datos.

Importemos el paquete requerido en nuestro programa.

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

Ahora trabajaremos en el conjunto de datos de consejos, que ya está precargado en nuestra biblioteca Seaborn.

TIPS = sb.load_dataset("tips")
TIPS.head()

Veamos el conjunto de datos; este conjunto de datos es sobre un restaurante con varias columnas.

Conjunto de datos de consejos

Necesitamos trazar el diagrama de caja usando el método boxplot() y pasar una columna de un conjunto de datos.

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

TIPS = sb.load_dataset("tips")

sb.boxplot(TIPS["total_bill"])
plot.show()

Producción:

Cuenta total

Ahora podemos ver que los puntos punteados están muy lejos del resto de todos los puntos, por lo que esto es como una situación atípica. Hay otra forma de comprobar los valores atípicos calculando las estadísticas de esta columna.

TIPS["total_bill"].describe()

La función describe() calcula automáticamente las estadísticas, y podemos ver que el tercer cuartil es 24. Podemos ver que nuestro valor máximo y el tercer cuartil tienen mucha diferencia.

Usar la función describir

Veamos cómo afrontar esta situación; hay dos soluciones para eliminar los valores atípicos. La primera solución es eliminar directamente este valor atípico de un conjunto de datos y la segunda es reemplazar estos valores atípicos con valores adecuados.

Veamos la primera solución. Necesitamos establecer la condición para el primer y el tercer cuartil en esta solución.

TIPS = TIPS[(TIPS.total_bill <= 24) & (TIPS.total_bill >= 13)]

El código fuente completo está aquí sin valores atípicos.

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

TIPS = sb.load_dataset("tips")
TIPS = TIPS[(TIPS.total_bill <= 24) & (TIPS.total_bill >= 13)]

sb.boxplot(TIPS["total_bill"])
plot.show()

Ahora podemos ver que no hay ningún valor atípico porque eliminamos este valor atípico mediante operadores condicionales.

sin valores atípicos

La primera solución no funciona siempre. Podemos convertir este valor atípico en valores adecuados porque perderemos información importante del conjunto de datos si eliminamos los valores atípicos directamente.

Entonces, necesitamos convertir este valor atípico en valores adecuados, y vamos a reemplazar el tercer cuartil con 24 si el rango del tercer cuartil sale de 24.

TIPS["new_total_bill"] = np.where(TIPS["total_bill"] >= 24, 24, TIPS["total_bill"])

Código fuente completo:

import seaborn as sb
import matplotlib.pyplot as plot
import numpy as np
import pandas as pd

TIPS = sb.load_dataset("tips")

TIPS["new_total_bill"] = np.where(TIPS["total_bill"] >= 24, 24, TIPS["total_bill"])
sb.boxplot(TIPS["new_total_bill"])
plot.show()

Producción:

Nueva factura total

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn