如何使用多列pandas删除异常值?

问题描述 投票:0回答:1

在我的整个数据框架中,我有两列价格和数量。这些都包含异常值。如何删除这两列中的异常值,以便返回的数据帧排除这两列中的异常值?我可以将它应用于一个但不确定如何将它应用于两个列。

我试过以下

def make_mask(df, column):
    standardized = (df[column] - df[column].mean())/df[column].std()
    return standardized.abs() >= 2

def filter_outliers(df, columns):
    print(columns)
    masks = (make_mask(df, column) for column in columns)
    print(masks)
    full_mask = np.logical_or.reduce(masks)
    print(full_mask)
    return df[full_mask]

outliersremoved_df=filter_outliers(df,['price','qty']) 

我用过这个,但我一次只能将它应用到一列:

def remove_outlier(df_in, col_name):
    q1 = df_in[col_name].quantile(0.25)
    q3 = df_in[col_name].quantile(0.75)
    iqr = q3-q1 #Interquartile range
    fence_low  = q1-1.5*iqr
    fence_high = q3+1.5*iqr
    df_out = df_in.loc[(df_in[col_name] > fence_low) & (df_in[col_name] < fence_high)]
    return df_out

前2个函数出错:

ValueError: too many values to unpack (expected 1)
python-3.x pandas dataframe outliers
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.