Python Dataframe boxplot,带有异常值的wisker caluclation

时间:2018-01-24 21:20:25

标签: python dataframe boxplot

我很好奇pandas数据帧如何处理计算上下胡须,以及异常值。通常它是1.5IQR-Q1, 1.5IQR+Q3。然而,我无法理解的问题,或者我对如何计算胡须的错误。它在https://pandas.pydata.org/pandas-docs/stable/visualization.html的boxplot部分显示了相同的问题 这是我随机选择的代码示例:

ray1=[0.217766,0.691315,0.289239,0.239135,0.161341,0.364297,0.373284,0.323216]
df = pd.DataFrame(ray1, dtype = float)

如果我使用df.describe(),它会给我这个数组的统计数据。

count  8.000000
mean   0.332449
std    0.162374
min    0.161341
25%    0.233793
50%    0.306227
75%    0.366544
max    0.691315

但根据上方的胡须,从正常1.5IQR-Q1, 1.5IQR+Q3开始,它应低于.565.035。如果我用df.boxplot()绘制它,它会将上方的胡须显示为0.373,将较低的胡须显示为.161。我尝试了其他变体(2.698σ)和medcouple以及那些不相同的变体。

那么,当存在异常值时,如何获得这些值?

1 个答案:

答案 0 :(得分:0)

为图计算的晶须落在数据中的值上。由于您的数据只有8个值,因此可以轻松查看晶须位置的位置。

下面的代码将生成箱线图,并覆盖其上的数据点。

df.boxplot()
plt.plot([1]*len(df),df[0],'x')
plt.show()

剧情产生:

boxplot

希望已经足够清楚地看到上部晶须落在数据点上。

摘自文档:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html: “上晶须延伸到最后一个基准点,小于Q3 + whis * IQR”