如何在 Python 中打印箱线图的异常值?
How can I print the outliers of a Boxplot in Python?
我想打印我的箱线图的异常值(绿点),但我不知道如何:
boxplot
这是我的代码:
flierprops = dict(marker='o', markerfacecolor='green', markersize=2,
linestyle='none')
plt.boxplot(derivation, vert=False, flierprops=flierprops)
谢谢你的帮助!
IIUC:
在胡须(上部和下部)之外有 (n) 个点,您希望从数据集中打印(显示)这些点的值。
背景:
通常,离群值可以可视化为箱线图上下须线之外的值。可以通过多种方式定义上部和下部晶须。
一种方法是:
Lower: Q1 - k * IQR
Upper: Q3 + k * IQR
其中 k
(通常)定义为 1.5,IQR(内四分位数范围)为 defined as:
IQR = Q3 - Q1 = qn(0.75) - qn(0.25)
示例:
以下数据集可以可视化为:
array([ 65.46329369, 91.64897781, 96.85666088, 60.18189851,
30.53996122, 55.12666144, 63.00161253, 29.97804178,
...,
47.98458963, 37.69556267, 44.26758617, 58.60869412,
150. , 155. , 160. , 165. ,
170. , 175. ])
要提取异常值(我们将重点关注较高的异常值),我们首先需要知道 IQR,可以使用以下方法找到:
pandas.Series(data).describe()
输出:
count 106.000000
mean 62.569111
std 29.698729
min 0.000000
25% 46.934198
50% 57.002615
75% 69.516237
max 175.000000
确定粗略的晶须值:
iqr = (69.516 - 46.934)
upper = 69.516 + (iqr*1.5)
lower = 46.934 - (iqr*1.5)
>>> iqr, upper, lower
>>> (22.582, 103.389, 13.06)
提取(检查)上异常值:
data[data > upper]
>>> array([150., 155., 160., 165., 170., 175.])
我想打印我的箱线图的异常值(绿点),但我不知道如何: boxplot
这是我的代码:
flierprops = dict(marker='o', markerfacecolor='green', markersize=2,
linestyle='none')
plt.boxplot(derivation, vert=False, flierprops=flierprops)
谢谢你的帮助!
IIUC:
在胡须(上部和下部)之外有 (n) 个点,您希望从数据集中打印(显示)这些点的值。
背景:
通常,离群值可以可视化为箱线图上下须线之外的值。可以通过多种方式定义上部和下部晶须。
一种方法是:
Lower: Q1 - k * IQR
Upper: Q3 + k * IQR
其中 k
(通常)定义为 1.5,IQR(内四分位数范围)为 defined as:
IQR = Q3 - Q1 = qn(0.75) - qn(0.25)
示例:
以下数据集可以可视化为:
array([ 65.46329369, 91.64897781, 96.85666088, 60.18189851,
30.53996122, 55.12666144, 63.00161253, 29.97804178,
...,
47.98458963, 37.69556267, 44.26758617, 58.60869412,
150. , 155. , 160. , 165. ,
170. , 175. ])
要提取异常值(我们将重点关注较高的异常值),我们首先需要知道 IQR,可以使用以下方法找到:
pandas.Series(data).describe()
输出:
count 106.000000
mean 62.569111
std 29.698729
min 0.000000
25% 46.934198
50% 57.002615
75% 69.516237
max 175.000000
确定粗略的晶须值:
iqr = (69.516 - 46.934)
upper = 69.516 + (iqr*1.5)
lower = 46.934 - (iqr*1.5)
>>> iqr, upper, lower
>>> (22.582, 103.389, 13.06)
提取(检查)上异常值:
data[data > upper]
>>> array([150., 155., 160., 165., 170., 175.])