我正在尝试将MATLAB中的算法转译成Python。该算法处理大型数据集,需要应用异常值检测和消除技术。
在MATLAB代码中,我使用的异常值删除技术是 movmedian:
Outlier_T=isoutlier(Data_raw.Temperatura,'movmedian',3);
Data_raw(find(Outlier_T),:)=[]
使用滑动中位数检测异常值,通过查找三个值移动的窗口中心的不成比例值。因此,如果我有一列名为“温度”的数据,在第3行上有一个40,则它将被检测到并删除整个行。
Temperatura Date
1 24.72 2.3
2 25.76 4.6
3 40 7.0
4 25.31 9.3
5 26.21 15.6
6 26.59 17.9
... ... ...
据我理解,这可以通过pandas.DataFrame.rolling实现。我看到过一些帖子展示了它的使用,但是我无法让它在我的代码中正常工作: 尝试A:
Dataframe.rolling(df["t_new"]))
尝试B:
df-df.rolling(3).median().abs()>200
#基于@Ami Tavory的答案
我是否漏掉了一些显而易见的东西? 做这件事的正确方式是什么? 感谢你的时间。