如何将 5Hz 的低通滤波器应用于 pandas 数据帧?

Posted

技术标签:

【中文标题】如何将 5Hz 的低通滤波器应用于 pandas 数据帧?【英文标题】:How to apply a low-pass filter of 5Hz to a pandas dataframe? 【发布时间】:2017-07-10 04:01:21 【问题描述】:

我有一个按时间索引的pandas.DataFrame,如下所示。另一列包含从设备测量电流记录的数据。我想通过频率为5Hz的低通滤波器过滤到第二列,以消除高频噪声。我想返回一个数据框,但我不介意它是否会更改过滤器应用程序的类型(numpy 数组等)。

In [18]: print df.head()
Time
1.48104E+12    1.1185
1.48104E+12    0.8168
1.48104E+12    0.8168
1.48104E+12    0.8168
1.48104E+12    0.8168

我正在通过df.plot(legend=True, use_index=False, color='red') 绘制此数据,但想改为绘制过滤后的数据。

我正在使用pandas 0.18.1,但我可以更改。

我访问过https://oceanpython.org/2013/03/11/signal-filtering-butterworth-filter/ 和许多其他类似方法的来源。

【问题讨论】:

“有时第二列中可能会有一个空单元格。” 如果您想使用任何 scipy 信号处理功能,您将决定您想要的方式首先处理这些缺失值。 (替换缺失值的过程在统计学中称为imputation。) 欢迎来到 Stack Overflow!您可以先take the tour 学习How to Ask a good question 并创建Minimal, Complete, and Verifiable 示例。这使我们更容易为您提供帮助。具体来说,有没有可用的样本数据?到目前为止,您尝试过什么? “我访问过oceanpython.org/2013/03/11/signal-filtering-butterworth-filter 和许多其他类似方法的来源。” 还有...? 尝试了什么?向我们展示代码。它奏效了吗?如果不是,请解释发生了什么。你收到错误了吗?如果是这样,请在问题中包含完整的错误消息。是不是产生了意想不到的结果?如果是这样,请展示你得到了什么,并解释你的期望。 这是另一个您可能会发现有用的 *** 问答:***.com/questions/25191620/… 【参考方案1】:

也许我过于简化了,但您创建了一个简单的条件,使用过滤器创建一个新的数据框,然后从新的数据框创建您的图表。基本上只是将数据框减少为仅满足条件的记录。我承认我不知道高频的确切数字是多少,但我们假设您的第二列名称是“频率”

condition = df["Frequency"] < 1.0
low_pass_df = df[condition]
low_pass_df.plot(legend=True, use_index=False, color='red')

【讨论】:

以上是关于如何将 5Hz 的低通滤波器应用于 pandas 数据帧?的主要内容,如果未能解决你的问题,请参考以下文章

EMG信号的低通滤波器的matlab仿真实现

具有 FFT 卷积的低通 FIR 滤波器 - 重叠相加,为啥以及如何

使用 Avaudioengine iOS 的低通滤波器 + 采样率转换

MATLAB 中的低通/带通滤波器设计

模拟模拟伪随机 LFO 信号(Javascript 中的低通滤波)

使用 c 中的低通滤波器过滤 .wav 文件