过滤时间序列数据中的高频-python

过滤时间序列数据中的高频-python,python,pandas,filter,Python,Pandas,Filter,我有以下csv文件,其中包含来自电生理学的数据。第三列包含使用软件过滤的数据。第二列包含未筛选的数据 data = pd.read_csv("trial_filtered.csv") datad = np.asarray(data) x1 = datad[:100,0] y1 = datad[:100,1] y2 = datad[:100, 2] 我想绘制这些数据,并比较过滤后的数据和非过滤后的数据 plt.subplot(2, 1, 1) plt.plot(x1, y1, 'yo-') p

我有以下csv文件,其中包含来自电生理学的数据。第三列包含使用软件过滤的数据。第二列包含未筛选的数据

data = pd.read_csv("trial_filtered.csv")
datad = np.asarray(data)

x1 = datad[:100,0]
y1 = datad[:100,1]
y2 = datad[:100, 2]
我想绘制这些数据,并比较过滤后的数据和非过滤后的数据

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'yo-')
plt.title('BB565 - OD')      
plt.ylabel('raw signal (voltage)')

plt.subplot(2, 1, 2)
plt.plot(x1, y2, 'r.-')
plt.xlabel('time (milliseconds)')
plt.ylabel('filtered data')

plt.show()
此外,我想为第二列过滤掉40Hz以上的所有内容,然后创建一个附加列

我已经尝试了以下方法,但我一直被卡住。是否有其他方法可以在不使用nitime模块的情况下从我的时间序列数据中过滤出高频

y3 = []
ts_y1 = nitime.TimeSeries(y1, time_unit='ms', sampling_interval=1.0)
#let's take out everything above 30 hertz
filter = nitime.analysis.FilterAnalyzer(ts_y1, lb=0., ub=40.)
filtered_ts = filter.fir.datad
y3.append(filtered_ts.copy()) 

如果要在单个图形中显示所有系列, 可以连续使用plt.plot()调用, 最后以plt.show()结束,这将把它们放在一个图形中

对于第二个问题,如果需要“硬”滤波器,可以尝试使用FFT模块,如下所示:

  • 对信号进行FFT,计算出30Hz的等效角频率

  • 找到存储箱,并将高于该频率的所有存储箱设置为零。(执行此操作前,请记住使用fftshift)

  • 做一个ifft,你有一个低通滤波信号。我将写一个小脚本来说明,并很快上传到这里

  • 我希望这有帮助