箱线图中没有异常值检测

3
我想绘制数据框的箱形图(见下面的示例代码)。 我想知道的是:如何禁用异常值检测? 我不想删除它们,我只想通过标记数据点的0%,25%,50%和75%来可视化数据的情况,而不考虑任何有关离群值等的标准。
要实现这个目标,需要修改代码吗?我能否更改异常值检测标准以使其行为类似于已禁用?
非常感谢您的帮助,如果已经有另一个相关主题(我没有找到),请给我链接。
非常感谢! Jordin
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

np.random.seed(1234)
df = pd.DataFrame(np.random.randn(10, 4),
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])

plt.figure()
plt.boxplot(df.values)
plt.show()

编辑:

右上角的异常值被标记为异常值

我想在绘制“箱须图”时包括这个异常值,而不仅仅是隐藏它。


“异常值检测”是什么意思? 箱线图不能检测异常值。它绘制中位数,四分位数和置信区间。 - Gonzalo Hernandez
1
例如,如果您执行上面的代码,则会用圆圈标记异常值。据我所知,在绘制四分位数的边界时,不考虑此异常值(异常值不在须之内)。因此,我想绘制四分位数、中位数等,而不忽略任何被视为异常值的点。 - jordin1987
2个回答

1
如果您在绘图函数中添加sym='',我认为您将得到您所要求的内容:

boxplot

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

np.random.seed(1234)
df = pd.DataFrame(np.random.randn(10, 4),
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])

df.boxplot(sym='')

问题是:你的解决方案只是不绘制异常值,但我想将它们包含在盒须图中。 - jordin1987
还是有其他适合我的目的的图表类型吗? - jordin1987

1

您需要查找whis参数。

请参阅文档

whis:浮点数、序列或字符串(默认值= 1.5)

作为浮点数,确定须至第一和第三四分位数之外延伸的范围。 换句话说,如果IQR是四分位距(Q3-Q1),那么上侧鬃毛将延伸到最后一个小于Q3 + whis IQR的数据。同样地,下侧鬃毛将延伸到第一个大于Q1-whis IQR的数据。超出鬃毛的数据被认为是异常值,并作为单独的点绘制。将此设置为非常高的值可以强制显示最小值和最大值的鬃毛。或者,将其设置为升序百分位数序列(例如[5,95])以在数据的特定百分位数处设置鬃毛。最后,whis可以是字符串“range”,以强制鬃毛显示数据的最小值和最大值。

将其添加如下:
df.boxplot(whis=99)

那正是我正在寻找的。非常感谢! - jordin1987

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接