【发布时间】:2018-03-29 12:09:19
【问题描述】:
我有一个用于快速傅立叶变换信号的 DataFrame。
有一列以赫兹为单位表示频率,另一列表示相应的幅度。
我读过几年前发表的一篇文章,您可以使用一个简单的布尔函数来排除或仅包含最终数据帧中高于或低于几个标准偏差的异常值。
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
问题是当频率增加到 50 000Hz 时,我的信号会下降几个幅度(最多小 10 000 倍)。因此,我无法使用仅导出高于 3 个标准差的值的函数,因为我只会从前 50 Hz 中提取“峰值”异常值。
有没有办法可以在我的数据框中导出高于滚动平均值的 3 个滚动标准差的异常值?
【问题讨论】:
-
所以我试图在导出之前将所有过滤的值(大于我的平均值+3SD)添加到我的数据框中的另一列中。现在他们只从
N1['Peaks'] = (N1['Cell 1-1'] > N1['Filter'])显示为真或假有没有办法得到数字呢?单元格 1-1 和过滤器列只是我的数据和过滤器的值。
标签: python pandas dataframe standard-deviation outliers