首页 > 解决方案 > Python - 用组中的最大值替换异常值

问题描述

你能帮忙解决这个编码部分吗?

我需要通过分组来替换异常值,在 Python 的这个数据框中:

df = pd.DataFrame(['A', 'A',    'A',    'A',    'A',    'A',    'A',    'B',    'B',    'B',    'B',    'B',    'B',    'B',    'B',    'B'], columns = ['Key'])
df['Value'] = [22,  10, -100,   34, 780,    34, 29, 89, 53, 85, 77, 2,  90, 1,  298,    65]

我需要首先按 Key 列分组,然后使用类似于以下的代码检测异常值:

    def is_outlier(s):
        lower_limit = s.mean() - (s.std() * 4.7)
        upper_limit = s.mean() + (s.std() * 4.7)
        return ~s.between(lower_limit, upper_limit)

识别出记录后,我需要用第二个最大值(或中位数 * 2?)替换高异常值,用次低值替换低异常值。

与示例中相同的组中可能有多个异常值。

感谢您的帮助!

标签: pythonpandas

解决方案


推荐阅读