相关疑难解决方法(0)

检测并排除Pandas数据帧中的异常值

我有一个包含很少列的pandas数据帧.

现在我知道某些行是基于某个列值的异常值.

例如列 - 'Vol'的所有值都大约为12xx,一个值为4000(异常值).

现在我想排除那些有'Vol'列的行.因此,基本上我需要在数据框上放置一个过滤器,以便我们选择所有行,其中某列的值在与平均值相差3个标准差的范围内.

实现这一目标的优雅方式是什么?

python filtering outliers dataframe pandas

174
推荐指数
12
解决办法
19万
查看次数

使用 IQR 作为参数自动从 pandas 数据框中删除异常值并将变量放入列表中

我正在尝试使用 IQR 作为参数自动从 Pandas 数据框中删除异常值,并将变量放入列表中。

此代码有效 - (其中 dummy_df 是数据帧,“pdays”是我想要删除异常值的第一个变量)。

q1 = np.percentile(dummy_df['pdays'], 25, interpolation = 'midpoint')
 
q3 = np.percentile(dummy_df['pdays'], 75, interpolation = 'midpoint') 

iqr = q3 - q1

upper = np.where(dummy_df['pdays'] >= (q3+1.5*iqr))

lower = np.where(dummy_df['pdays'] <= (q1-1.5*iqr))

dummy_df.drop(upper[0], inplace = True)

dummy_df.drop(lower[0], inplace = True)

print("New Shape: ", dummy_df.shape)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,这并不——

remove_outliers = ['pdays','poutcome', 'campaign', 'previous']

for outlier in remove_outliers:

    q1 = np.percentile(dummy_df[outlier], 25, interpolation = 'midpoint')
 
    q3 = np.percentile(dummy_df[outlier], 75, interpolation = 'midpoint') 

    iqr = q3 - q1 …
Run Code Online (Sandbox Code Playgroud)

python numpy outliers pandas

1
推荐指数
1
解决办法
9312
查看次数

标签 统计

outliers ×2

pandas ×2

python ×2

dataframe ×1

filtering ×1

numpy ×1