python - 使用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
解决方案
首先找到均值和标准:
>>> 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
推荐阅读
- angular - Angular 2,带有可观察的管道测试没有转换访问
- javascript - chart.js 和 vue 的问题
- python - Python递归函数,索引超出范围
- oauth-2.0 - 如果我们不需要 SSO 或 OAuth 2,我们的身份服务器是否必要?
- javascript - OverlappingMarkerSpiderfier - 谷歌地图 - 获取可蜘蛛标记的特殊图标
- c# - C# Entity Framework 6 项目构建但没有从数据库中显示数据
- c# - 在 Python3 中是否有与 C# 中的 xmlDoc.LoadXml(myStr) 等价的东西?
- python - 跨列查找位平均值的有效方法
- javascript - 返回 javascript 字符串中第一个空格之后的所有内容
- java - 每个循环的两个之间的控制流