Не обнаружены выбросы на боксплоте - PullRequest
1 голос
/ 02 апреля 2020

Я хотел бы построить графические диаграммы данных (см. Пример кода ниже). Что мне интересно: как я могу отключить обнаружение выбросов? Я не хочу их удалять, я просто хочу график, который визуализирует данные, помечая 0%, 25%, 50% и 75% точек данных без учета каких-либо критериев для выбросов и т. Д. c.

Как мне изменить мой код, чтобы добиться этого? Могу ли я изменить критерий обнаружения выбросов таким образом, чтобы он вел себя как отключенный?

Я был бы очень признателен за любую помощь, и если бы уже была другая угроза (которую я не нашел), я бы будьте счастливы получить ссылку на него.

Большое спасибо! Jordin

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

np.random.seed(1234)
df = pd.DataFrame(np.random.randn(10, 4),
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])

plt.figure()
plt.boxplot(df.values)
plt.show()

EDIT:

The outlier on the top right side is marked as an outlier

Я хотел бы включить этот выброс при рисовании усов, а не просто не показывать его .

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Если вы добавите sym='' в функцию графика, я думаю, вы получите то, что просите:

boxplot

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

np.random.seed(1234)
df = pd.DataFrame(np.random.randn(10, 4),
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])

df.boxplot(sym='')
0 голосов
/ 02 апреля 2020

Вы ищете параметр whis.

Для документации :

тиш : float, sequence или строка (по умолчанию = 1,5)

Как число с плавающей точкой, определяет радиус действия усов до первого и третьего квартилей. Другими словами, где IQR - межквартильный диапазон (Q3-Q1), верхний усик простирается до последнего уровня, меньшего, чем Q3 + тх IQR). Точно так же нижний усик простирается до первого значения больше Q1 - тх IQR. Помимо усов, данные считаются выбросами и изображаются как отдельные точки. Установите неоправданно высокое значение, чтобы усы показывали минимальное и максимальное значения. В качестве альтернативы, установите это значение в восходящей последовательности процентиля (например, [5, 95]), чтобы задать усы на определенных c процентилях данных. И наконец, Wh может быть строкой 'range', чтобы заставить усы переходить к минимуму и максимуму данных.

Добавьте это так:

df.boxplot(whis=99)
...