Erlangung der Werte im boxplot, mit python und matplotlib

Kann ich das zeichnen eines boxplots von Daten:

import numpy as np
import matplotlib.pyplot as plt

data = np.random.rand(100)
plt.boxplot(data)

Dann, die box reicht vom 25-Perzentil, 75-Perzentil, und die whisker reichen vom kleinsten Wert zum größten Wert zwischen (25- % - Perzentil - 1.5*IQR, 75-Perzentil + 1.5*IQR), wo die IQR bezeichnet die inter-Quartil-range. (Natürlich, der Wert 1.5 ist anpassbar).

Ich will jetzt wissen, die Werte, die in der boxplot, also der median, das Obere und untere Quartil, der Obere whisker-end-Punkt und der untere whisker-Ende-Punkt. Während die ersteren drei leicht zu erhalten, durch die Verwendung von np.median() und np.Perzentile(), der Endpunkt des whiskers wird einige ausführliche Codierung:

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()

Wunderte ich mich, dies ist zwar akzeptabel, wäre es ein eleganter Weg, dies zu tun? Es scheint, dass die Werte sollten bereit sein, um pull-out aus der boxplot, da bereits gezogen.

Danke!

Warum müssen wir mit max() und min() für die oberen und unteren whisker ?. Können wir nicht (upper_quartile +1.5*iqr) und (lower_quartile -1.5*iqr) direkt als schnurrhaare ?
Da die whisker ist eine tatsächliche Daten-Punkt in der Menge, die nicht unterschritten werden darf Recht auf die upper_quartile + 1.5 * iqr Wert.

InformationsquelleAutor Yuxiang Wang | 2014-05-04

Schreibe einen Kommentar