例えば、1分ごとに時系列データをpandasのデータフレームに格納しているとして、数分前のデータと現在のデータとの差分を求める場合、どのようにすれば速く処理することができますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
shiftメソッドを使って必要な分だけシフトして必要な計算をするのはいかがでしょうか?
コードイメージは以下です。
python
1df[シフトしたい列].shift(periods=ずらしたい数(正なら前・負なら後)) 2
投稿2018/02/28 14:21
総合スコア3376
0
ベストアンサー
データが
1分ごとに時系列データ
になっているのであれば、diff()
を使って行間の差にて求めることができます。
Python
1import pandas as pd 2import numpy as np 3 4N = 10 5df = pd.DataFrame( 6 {'data':np.random.randint(0,10,N)}, 7 index = pd.date_range('2018/01/01', periods=N, freq='min')) 8 9df['diff_1'] = df.data.diff() 10df['diff_5'] = df.data.diff(5) 11print(df) 12# data diff_1 diff_5 13#2018-01-01 00:00:00 3 NaN NaN 14#2018-01-01 00:01:00 5 2.0 NaN 15#2018-01-01 00:02:00 2 -3.0 NaN 16#2018-01-01 00:03:00 8 6.0 NaN 17#2018-01-01 00:04:00 7 -1.0 NaN 18#2018-01-01 00:05:00 2 -5.0 -1.0 19#2018-01-01 00:06:00 1 -1.0 -4.0 20#2018-01-01 00:07:00 0 -1.0 -2.0 21#2018-01-01 00:08:00 5 5.0 -3.0 22#2018-01-01 00:09:00 5 0.0 -2.0
投稿2018/03/01 01:18
総合スコア15898
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
diff()でできたんですね。調べてもあまり引数について出てこなかったので知りませんでした。
ありがとうございます!
2018/03/01 04:20
diff()でできたんですね。調べてもあまり引数について出てこなかったので知りませんでした。
ありがとうございます!
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/01 04:20
2018/03/01 04:20