使用 Seaborn 绘制箱线图后如何删除异常值?
How to delete outliers after plotting a boxplot with Seaborn?
我正在尝试从我的数据集中删除离群值。
以下是箱线图:
如何获取胡须末端的值?
假设:
min 的值为:0
我的第 25 个四分位数的值为:125
我的第 75 个四分位数的值为:1938
max 的值为:113499
我试过类似下面的方法,但不确定是否正确:
clean_model.drop(clean_model[clean_model.num_likes > (1938 + (1.5* (1938-125)))].index, inplace=True)
计算(1938 + (1.5* (1938-125))) 是否正确,以获得图中点的值?
下面是我的数据框的描述:
你的计算是正确的。晶须长度计算为一些 'whisker' 因子(在 matplotlib / seaborn 中默认为 1.5)乘以四分位数间距 (iqr)。
例如使用numpy.percentile
:
import numpy as np
p_25, p_75 = np.percentile(clean_model['num_likes'], [25, 75])
iqr = p_75 - p_25
upper_bound = p_75 + 1.5 * iqr
lower_bound = p_25 - 1.5 * iqr
scipy.stats
还有一个方便的函数 iqr
你可以使用:
from scipy.stats import iqr
_iqr = iqr(clean_model['num_likes'])
我正在尝试从我的数据集中删除离群值。
以下是箱线图:
如何获取胡须末端的值?
假设: min 的值为:0 我的第 25 个四分位数的值为:125 我的第 75 个四分位数的值为:1938 max 的值为:113499
我试过类似下面的方法,但不确定是否正确:
clean_model.drop(clean_model[clean_model.num_likes > (1938 + (1.5* (1938-125)))].index, inplace=True)
计算(1938 + (1.5* (1938-125))) 是否正确,以获得图中点的值?
下面是我的数据框的描述:
你的计算是正确的。晶须长度计算为一些 'whisker' 因子(在 matplotlib / seaborn 中默认为 1.5)乘以四分位数间距 (iqr)。
例如使用numpy.percentile
:
import numpy as np
p_25, p_75 = np.percentile(clean_model['num_likes'], [25, 75])
iqr = p_75 - p_25
upper_bound = p_75 + 1.5 * iqr
lower_bound = p_25 - 1.5 * iqr
scipy.stats
还有一个方便的函数 iqr
你可以使用:
from scipy.stats import iqr
_iqr = iqr(clean_model['num_likes'])