0
我有一个用于快速傅立叶变换信号的DataFrame。使用滚动标准偏差检测Pandas数据框中的离群值
有一列频率为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
的问题是,我的信号下降几个数量级(最多小10 000倍),其频率的增加可达50 000Hz。因此,我无法使用仅输出高于3个标准差的值的函数,因为我只会从前50赫兹中挑选出“峰值”异常值。
有没有一种方法可以在我的数据框中导出超出滚动平均值的3个滚动标准偏差的异常值?
所以我想在导出之前将所有过滤的值(大于我的平均值+ 3SD)添加到我的数据框中的另一列中。现在他们只显示为真或假,从'N1 ['Peaks'] =(N1 ['Cell 1-1']> N1 ['Filter'])'有没有办法得到数字呢?单元格1-1和过滤器只是我的数据和过滤器的值。 – Jack