簡體   English   中英

Python:使用FFT進行數據分析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM