Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:使用FFT进行数据分析_Python_Fft - Fatal编程技术网

Python:使用FFT进行数据分析

Python:使用FFT进行数据分析,python,fft,Python,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.014833

我有一个像这样的

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并根据原始数据绘制匹配频率的想法

原始数据如下所示:

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
.............


谢谢

您仅检索
压力的第一个元素,但应对所有样本进行傅里叶分析。如果你更换

Pfft = np.fft.fft(Pressure[0])

它的工作原理是:

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()

我想尝试一下,我认为问题在于
压力[0]
是一个值,您需要将一个数组传递给
np.fft.fft()
,所以尝试
Pfft=np.fft.fft(压力)

您是否验证了
压力中有数据?试着打印出
len(Pressure)
是的,我假设是28171,但是你给出的最后一行是给你错误的那一行吗?不,是“Pfft=np.fft.fft(Pressure[0])”行你的
Pressure
是一个熊猫系列,粗略地说是一个numpy ndarray,你通过
Pfft=np.fft.fft(Pressure)计算它的DFT
(无索引!)-我不知道这个问题是否与您向我们展示的问题有关。