2016-05-13 7 views
1

を使用してデータ解析、私はこのようになりますdataを持っている: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.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を分析し、反対のマッチング周波数をプロットする方法上の任意のアイデア:

は、私は次のことを試してみました生データ?

生データは次のようになります。

enter image description here

ありがとう!

+0

圧力のデータ? 'len(Pressure)'を印刷してみてください。 –

+0

はい、私は28171 – ValientProcess

+0

です。私は仮定していますが、あなたにエラーを出すものを与える最後の行ですか? –

答えて

2

Pressureの最初の要素だけを取得していますが、すべてのサンプルについてフーリエ解析を行う必要があります。あなたは

Pfft = np.fft.fft(Pressure) 

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

、私は問題がPressure[0]が値とあなたであるということだと思いnp.fft.fft()に配列を渡す必要がありますのでお試しくださいPfft = np.fft.fft(Pressure)