###前提・実現したいこと
お世話になります。時間ごとに区切って単純移動平均を出したいと思っています。
例えばこんなデータがあるとします。
//data.csv time,val 10:00:00.111,65 10:00:00.555,68 10:00:00.888,37 10:00:01.111,34 10:00:01.222,36 10:00:01.333,34 10:00:01.555,12 10:00:01.888,64 10:00:02.111,94 10:00:02.555,54 10:00:02.888,47 10:00:03.111,35 10:00:03.555,48 10:00:03.888,43 ・ ・
一秒ごとに取れる値の数がまちまちで,10:00:00台では3個、10:00:01台では5個だったりします。
この中で3秒ごとに取れたデータを平均して1.5秒づつずらして単純移動平均計算したいと思っています。
例えば
- 10:00:03.000では10:00:00.000から10:00:03.000の間に取れた値を平均して10:00:03.000の横に出力する
- 10:00:04.500では10:00:01.500から10:00:04.500の間に取れた値を平均して10:00:04.500の横に出力する
- 10:00:06.000では10:00:03.000から10:00:06.000の間に取れた値を平均して10:00:06.000の横に出力する
という計算を繰り返します。アウトプットイメージとしてはこんな感じでしょうか。
//Output.csv(aveの値は適当に入れた) time,ave 10:00:00,000,Nan 10:00:01.500,Nan 10:00:03.000,37 10:00:04.500,34 10:00:06.000,64 ・ ・ ・
###試したこと
先程調べた限りでは、rollingを使えばのようなものは出来るみたいです。
python
1import pandas as pd 2 3my_parser = lambda date: pd.datetime.strptime('%h:%m:%s.%f') 4 5# ファイルを読み込む 6df = pd.read_csv('data.csv', date_parser=my_parser) 7 8df_new = df.rolling(window=3, min_periods=3).mean()
rollingの場合は移動平均に必要な個数が決まっています。今回行いたいのは時間ごとに枠をずらして,任意の枠に取得できた個数分を平均したいです。
お手数ですが、方法を教えていただければと思います。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/22 13:24