我有一个用于快速傅立叶变换信号的数据帧。
有一列表示频率(以 Hz 为单位),另一列表示相应的幅度。
我读过几年前发表的一篇文章,您可以使用一个简单的布尔函数来排除或仅包含最终数据框中高于或低于几个标准偏差的异常值。
df = pd.DataFrame({'Data':np.random.normal(size=200)}) # example dataset of normally distributed data.
df[~(np.abs(df.Data-df.Data.mean())>(3*df.Data.std()))] # or if you prefer the other way around
Run Code Online (Sandbox Code Playgroud)
问题是当频率增加到 50 000Hz 时,我的信号会下降几个幅度(最多小 10 000 倍)。因此,我无法使用仅导出高于 3 个标准差的值的函数,因为我只会从前 50 Hz 中提取“峰值”异常值。
有没有办法可以在我的数据框中导出高于滚动平均值的 3 个滚动标准偏差的异常值?