在python中使用滑动窗口检测数据集中的异常值

在python中使用滑动窗口检测数据集中的异常值,python,statistics,Python,Statistics,我正在尝试构建滑动窗口来检测数据中的异常值(使用窗口5)。我想将异常值指定为超过3个标准差的值。有人能建议我该怎么做吗 以下是我的数据集的一小部分: Location Height Length Width 1 150 95 18 2 148 122 102 3

我正在尝试构建滑动窗口来检测数据中的异常值(使用窗口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

首先找出平均值和标准差:

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

>>df[df>df.mean()+3*np.sqrt(df.std())]
高度长度宽度
指数
1楠楠楠楠楠楠
2楠楠102.0
3楠楠楠楠楠
4楠楠楠楠楠
5230.0 NaN 96.0
6楠楠楠楠楠
7楠楠楠楠楠
8 NaN 390.0 NaN
9楠楠楠楠楠
10422.0楠楠楠
>>>df[df
>>> 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