前提
DataFrameに格納されているデータを1つずつずらして解析する方法が分からない状況です。
実現したいこと
以下のようなデータを,一定の区間でずらしながら解析することを計画しております。
例えば,『試したこと』にAnkleのデータにおける1から150frameまでを周波数解析をする例を示しておりますが,これに続いて,2から151frame,3から152frame,4から153frame…と最後のフレームまでまとめて解析したいです。
最終的には,一定の区間でずらして解析したフレーム毎の面積比(例:1から150frame=0.7,2から151frame=0.8,3から152frame=1.2…)を算出することをゴールとしております。
frame | ANKLE |
---|---|
1 | 90 |
2 | 87 |
3 | 65 |
4 | 66 |
5 | 82 |
6 | 89 |
… | … |
300 | 32 |
試したこと
python
1import pandas as pd 2import numpy as np 3from scipy import integrate 4 5# 周波数解析 6rate = 30 7 8ankle = df["ANKLE"][0:149] 9 10han = np.hanning(ankle.size) 11 12fft_data = np.abs(np.fft.rfft(ankle * han)) 13freqList = np.fft.rfftfreq(ankle.size, 1.0 / rate) # 横軸 14 15# 周波数帯域の指定 16fft_df = pd.DataFrame(freqList) 17fft_df['fft'] = pd.DataFrame(fft_data) 18fft_df.columns=['freq', 'fft'] 19 20low = fft_df.query("3> freq >= 0.5") 21high = fft_df.query("8>= freq >= 3") 22 23# 面積比の算出 24s1 = integrate.trapz(low["fft"]) 25s2 = integrate.trapz(high["fft"]) 26print("Index:", s2/s1)
補足情報(FW/ツールのバージョンなど)
- jupyter notebookを使用
- プログラミングは初学者レベル
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/02 10:51