我很好奇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以及那些不相同的变体。
那么,当存在异常值时,如何获得这些值?
答案 0 :(得分:0)
为图计算的晶须落在数据中的值上。由于您的数据只有8个值,因此可以轻松查看晶须位置的位置。
下面的代码将生成箱线图,并覆盖其上的数据点。
df.boxplot()
plt.plot([1]*len(df),df[0],'x')
plt.show()
剧情产生:
希望已经足够清楚地看到上部晶须落在数据点上。
摘自文档:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html: “上晶须延伸到最后一个基准点,小于Q3 + whis * IQR”