【问题标题】:How to apply a low-pass filter of 5Hz to a pandas dataframe?如何将 5Hz 的低通滤波器应用于 pandas 数据帧?
【发布时间】: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 和许多其他类似方法的来源。” 还有...? 尝试了什么?向我们展示代码。它奏效了吗?如果不是,请解释发生了什么。你收到错误了吗?如果是这样,请在问题中包含完整的错误消息。是不是产生了意想不到的结果?如果是这样,请展示你得到了什么,并解释你的期望。
  • 这是另一个您可能会发现有用的 Stackoverflow 问答:stackoverflow.com/questions/25191620/…

标签: python pandas numpy filter lowpass-filter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 2020-03-14
    • 2016-02-29
    • 2010-10-23
    • 2021-06-12
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多