【问题标题】:box plot: whisker definition in pandas and matplotlib箱线图:pandas 和 matplotlib 中的晶须定义
【发布时间】:2018-08-13 14:04:29
【问题描述】:
来自https://en.wikipedia.org/wiki/Box_plot
箱线图的胡须有以下可能的定义:
- 所有数据的最小值和最大值[1]
- 最低基准仍在下四分位数 1.5 IQR 范围内,最高基准仍在上四分位数 1.5 IQR 范围内
- 高于和低于数据平均值的一个标准差
- 第 9 个百分位和第 91 个百分位
- 第 2 个百分位和第 98 个百分位。
我在想pandas:
df['data'].plot(kind = 'box', sym='bD')
胡须使用哪个定义?
另外,对于matplotlib 库:
ax.boxplot(dfa.duration)
胡须使用哪个定义?
谢谢!
【问题讨论】:
标签:
python-3.x
pandas
matplotlib
boxplot
【解决方案1】:
boxplot documentaton 说的是胡须
whis:浮点数、序列或字符串(默认 = 1.5)
作为浮点数,确定胡须的范围超出第一和第三四分位数。换句话说,如果 IQR 是四分位距 (Q3-Q1),则上须线将延伸到小于 Q3 + whisIQR) 的最后一个数据。同样,下须线将延伸到大于 Q1 - whisIQR 的第一个数据。除了胡须,数据被认为是异常值,并被绘制为单个点。将此设置为不合理的高值以强制胡须显示最小值和最大值。或者,将其设置为百分位数的升序(例如,[5, 95])以将胡须设置为数据的特定百分位数。最后,whis 可以是字符串 'range' 来强制胡须为数据的最小值和最大值。
问题列表中唯一无法轻松实现的定义是“一个标准偏差”,所有其他定义都可以使用此参数轻松设置。默认为 1.5IQR 定义。
pandas.DataFrame.boxplot 调用 matplotlib 函数。因此它们应该是相同的。