使用Pandas中的窗口进行动态离群值检测

时间:2018-05-07 06:25:44

标签: python pandas series

我想实现异常值检测,它将使用一个窗口来检查下一个元素是否是异常值。假设我们在pd上使用长度为3的窗口。这样的系列:[0,1,2,3,4]。我会在[0,1,2]上计算中位数和疯狂(或平均值和标准值)并检查3是否是异常值 我实现了一个for循环解决方案,但它确实很慢。

1 个答案:

答案 0 :(得分:5)

假设您从

开始
s = pd.Series([1, 2, 1, 4, 2000, 2])

然后使用rolling,以下将显示第5个元素距离长度为3的窗口中位数为200:

(s - s.rolling(3).median()).abs() > 200
0    False
1    False
2    False
3    False
4     True
5    False
dtype: bool

它是矢量化的,因此应该比for循环快得多。