如何对不完整的数据应用scipy.signal.filtfilt()

时间:2018-11-12 12:16:21

标签: python pandas numpy matplotlib scipy

我想绘制不完整的数据(某些值为None)。另外,我想在数据集上应用黄油函数,并显示不完整和平滑的两个图形。过滤器功能似乎不适用于不完整的数据。

数据文件:data.csv

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from scipy import signal

data = np.genfromtxt('data.csv', delimiter = ',')
df = pd.DataFrame(data)
df.set_index(0, inplace = True)

b, a = signal.butter(5, 0.1)
y = signal.filtfilt(b,a, df[1].values)
df2 = pd.DataFrame(y, index=df.index)

df.plot()
df2.plot()

plt.show()

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

documentation page没有提及与NaN相关的任何内容。您可能必须首先从值列表中删除NaN。这是使用Numpy isnan函数实现的一种方法:

y = signal.filtfilt(b, a, df[1].values[~np.isnan(df[1].values)])
df2 = pd.DataFrame(y, index=df.index[~np.isnan(df[1].values)])