Я могу нарисовать коробку из данных:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(100)
plt.boxplot(data)
Затем поле будет варьироваться от 25-процентного до 75-го процентиля, а усов будет варьироваться от наименьшего значения до самого большого значения между (25-процентный - 1,5 * IQR, 75-процентный плюс + 1,5 * IQR), где IQR обозначает межквартильный диапазон. (Конечно, значение 1.5 настраивается).
Теперь я хочу знать значения, используемые в boxplot, то есть медианный, верхний и нижний квартили, конечная точка верхнего низа и нижняя конечная точка нижнего уса. В то время как первые три легко получить с помощью np.median() и np.percentile(), конечная точка усов потребует некоторого подробного кодирования:
median = np.median(data)
upper_quartile = np.percentile(data, 75)
lower_quartile = np.percentile(data, 25)
iqr = upper_quartile - lower_quartile
upper_whisker = data[data<=upper_quartile+1.5*iqr].max()
lower_whisker = data[data>=lower_quartile-1.5*iqr].min()
Мне было интересно, хотя это приемлемо, был бы более простой способ сделать это? Кажется, что ценности должны быть готовы вытащить из ящика, как он уже нарисован.
Спасибо!