首页 > 解决方案 > 使用 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))) 是否正确,以获得图中点的值?

以下是我的数据框的描述:

描述数据框

标签: pandasstatisticsseabornboxplotoutliers

解决方案


你的计算是正确的。晶须长度计算为一些“晶须”因子(在 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'])

推荐阅读