【问题标题】:Dataframe Boxplot in Python displays incorrect whiskersPython中的数据框箱线图显示不正确的胡须
【发布时间】:2020-09-01 09:04:04
【问题描述】:

在这个简单的例子中,它给出了错误的最小值和最大值。

df = pd.DataFrame(np.array([1,2,3, 4, 5]),
                  columns=['a'])
df.boxplot() 

结果:

按照常规公式 (Q3 + 1.5 * IQR),它应该是 7 和 -1,但如图所示,它是 5 和 1。看起来公式使用 0.5 而不是 1.5。如何改回标准?

Q1 = df['a'].quantile(0.25)
Q2 = df['a'].quantile(0.50)
Q3 = df['a'].quantile(0.75)

print(Q1,Q2, Q3)
IQR = Q3 - Q1
MaxO = (Q3 + 1.5 * IQR)
MinO = (Q1 - 1.5 * IQR)
print("IQR:", IQR, "Max:", MaxO, "Min:" ,MinO)

结果:

2.0 3.0 4.0

IQR:2.0 最大值:%:7.0 最小值:%-1.0

(Q1、Q2、Q3 和 IQR 是正确的,但不是 Min 或 Max)

【问题讨论】:

  • 我相信胡须是在最接近 (Q1/3 + 1.5*IQR) 的值处绘制的。这些值在您的情况 1 和 5 中。
  • 你是对的。我虽然胡须应该正好在 Q3 + 1.5*IQR 值。感谢您的澄清。

标签: python pandas plot boxplot


【解决方案1】:

Source

从上四分位数上方,测量出 IQR 的 1.5 倍的距离,并在数据集中在此距离内的最大观察点画出一条须线。类似地,IQR 的 1.5 倍距离在下四分位以下测量,并且从数据集中在该距离内的较低观察点画出一条须线。所有其他观察到的点都被绘制为异常值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2012-07-26
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多