首页 > 解决方案 > 使用python中的滑动窗口检测数据集中的异常值

问题描述

我正在尝试构建滑动窗口以检测数据中的异常值(使用 5 窗口)。我想将异常值指定为超过 3 个标准偏差的值。谁能建议我应该如何进行?

以下是我数据集的一小部分:

Location            Height          Length       Width    
1                    150             95           18
2                    148             122          102
3                    162             127          16
4                    155             146          32
5                    230             112          96
6                    154             108          30
7                    160             127          22
8                    148             390          36
9                    159             142          28
10                   422             155          30

标签: pythonstatistics

解决方案


首先找到均值和标准:

>>> df.mean()
Height    188.8
Length    152.4
Width      41.0
dtype: float64
>>> df.std()
Height    85.442378
Length    85.454601
Width     31.230327
dtype: float64

然后您可以使用应用条件选择(请注意,我在这里使用了 df.std 的平方根,因为这在这里显示了一些结果,这可能不是您想要的,所以只需删除该np.sqrt部分):

>>> df[df > df.mean() + 3*np.sqrt(df.std())]
       Height  Length  Width
Index
1         NaN     NaN    NaN
2         NaN     NaN  102.0
3         NaN     NaN    NaN
4         NaN     NaN    NaN
5       230.0     NaN   96.0
6         NaN     NaN    NaN
7         NaN     NaN    NaN
8         NaN   390.0    NaN
9         NaN     NaN    NaN
10      422.0     NaN    NaN

>>> df[df < df.mean() - 3*np.sqrt(df.std())]
       Height  Length  Width
Index
1       150.0    95.0   18.0
2       148.0   122.0    NaN
3         NaN     NaN   16.0
4       155.0     NaN    NaN
5         NaN   112.0    NaN
6       154.0   108.0    NaN
7       160.0     NaN   22.0
8       148.0     NaN    NaN
9       159.0     NaN    NaN
10        NaN     NaN    NaN

推荐阅读