Пределы данных и максимальные расстояния для boxplot в пандах (Python) - PullRequest
1 голос
/ 06 марта 2019

Я использую Python для построения графика данных (исходя из многих экспериментов), и я хотел бы использовать boxplot метод pandas библиотеки.

Выполнение df = pd.DataFrame(value,columns=['Col1']) результат следующий:

enter image description here

Проблема в крайних значениях. В Matlab решением является использование опции «DataLimit»:

boxplot(bp1,'DataLim',[4.2,4.3])

Из документации Matlab:

Пределы данных и максимальные расстояния

'DataLim' - экстремальные пределы данных [-Inf, Inf] (по умолчанию) | двухэлементный числовой вектор

Экстремальные пределы данных, заданные в виде разделенной запятыми пары, состоящей из DataLim и двухэлементного числового вектора, содержащего нижний и верхний пределы соответственно. Значения, указанные для DataLim, используются ExtremeMode для определения экстремальных точек данных.

Есть ли что-то похожее для Python?

Walkaround : Однако я прогуляюсь (, который мне действительно не нравится , потому что это меняет статистическое распределение измерений): я просто исключаю "проблемные значения" вручную:

df = pd.DataFrame(value[100:],columns=['Col1'])
df.boxplot(column=['Col1'])

и результат:

enter image description here

Это потому, что я знаю, где проблема.

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете использовать ylim, чтобы ограничить ось, не пропуская выбросы в расчете:

data = np.concatenate((np.random.rand(50) * 100,  # spread
                       np.ones(25) * 50,  # center
                       np.random.rand(10) * 100 + 100,  # flier high
                       np.random.rand(10) * -100,  # flier low
                       np.random.rand(2) * 10_000))  # unwanted outlier
fig1, ax1 = plt.subplots()
ax1.boxplot(data)
plt.ylim([-100, 200])
plt.show()
...