[英]Python: Data analysis using FFT
我有一个看起来像这样的数据 :
YYYY-MO-DD HH-MI-SS_SSS, ATMOSPHERIC PRESSURE (hPa) mean, ATMOSPHERIC PRESSURE (hPa) std
2016-04-20 00:00:00,1006.0515000000001,0.029159119281803602
2016-04-20 00:01:00,1006.039666666667,0.03565211699642609
2016-04-20 00:02:00,1006.0148333333334,0.036891580347842706
2016-04-20 00:03:00,1006.0058333333335,0.03351152934243721
2016-04-20 00:04:00,1005.9714999999999,0.03155973620213212
2016-04-20 00:05:00,1005.955666666667,0.027207094455343653
.............
我对每分钟采样的压力均值感兴趣。 我的目标是在数据中查找周期性频率。
我尝试过以下方法:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft
df3 = pd.read_csv('Pressure - Dates by Minute.csv', sep=",", skiprows=0)
Pressure = df3['ATMOSPHERIC PRESSURE (hPa) mean']
frate = 1/60
Pfft = np.fft.fft(Pressure[0])
freqs = fft.fftfreq(len(Pfft), 1/frate)
但我得到“元组索引超出范围”的错误
有关如何分析fft并根据原始数据绘制匹配频率的任何想法?
原始数据如下所示:
谢谢!
您只检索Pressure
的第一个元素,但是您应该对所有样本进行傅立叶分析。 如果你更换
Pfft = np.fft.fft(Pressure[0])
同
Pfft = np.fft.fft(Pressure)
有用:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df3 = pd.read_csv('Pressure - Dates by Minute.csv', sep=",", skiprows=0)
Pressure = df3['ATMOSPHERIC PRESSURE (hPa) mean']
frate = 1. / 60
Pfft = np.fft.fft(Pressure)
Pfft[0] = 0 # Set huge DC component to zero, equates to Pressure = Pressure - numpy.mean(Pressure)
freqs = np.fft.fftfreq(len(Pfft), 1. / frate)
plt.plot(freqs, Pfft)
plt.show()
我正在考虑这个,我认为问题是Pressure[0]
是一个值,你需要将一个数组传递给np.fft.fft()
所以试试Pfft = np.fft.fft(Pressure)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.