1分値データから30分平均へデータを変換する方法
1分毎のデータを用意します。
import pandas as pd import numpy as np df = pd.DataFrame({'value': range(1,62,1)}, index=pd.date_range('2018-08-01 12:00', '2018-08-01 13:00', freq='T'))
データはこんな感じになります
value 2018-08-01 12:00:00 1 2018-08-01 12:01:00 2 2018-08-01 12:02:00 3 2018-08-01 12:03:00 4 2018-08-01 12:04:00 5 2018-08-01 12:05:00 6 2018-08-01 12:06:00 7 2018-08-01 12:07:00 8 2018-08-01 12:08:00 9 2018-08-01 12:09:00 10 2018-08-01 12:10:00 11 2018-08-01 12:11:00 12 2018-08-01 12:12:00 13 2018-08-01 12:13:00 14 2018-08-01 12:14:00 15 2018-08-01 12:15:00 16 2018-08-01 12:16:00 17 2018-08-01 12:17:00 18 2018-08-01 12:18:00 19 2018-08-01 12:19:00 20 2018-08-01 12:20:00 21 2018-08-01 12:21:00 22 2018-08-01 12:22:00 23 2018-08-01 12:23:00 24 2018-08-01 12:24:00 25 2018-08-01 12:25:00 26 2018-08-01 12:26:00 27 2018-08-01 12:27:00 28 2018-08-01 12:28:00 29 2018-08-01 12:29:00 30 ... ... 2018-08-01 12:31:00 32 2018-08-01 12:32:00 33 2018-08-01 12:33:00 34 2018-08-01 12:34:00 35 2018-08-01 12:35:00 36 2018-08-01 12:36:00 37 2018-08-01 12:37:00 38 2018-08-01 12:38:00 39 2018-08-01 12:39:00 40 2018-08-01 12:40:00 41 2018-08-01 12:41:00 42 2018-08-01 12:42:00 43 2018-08-01 12:43:00 44 2018-08-01 12:44:00 45 2018-08-01 12:45:00 46 2018-08-01 12:46:00 47 2018-08-01 12:47:00 48 2018-08-01 12:48:00 49 2018-08-01 12:49:00 50 2018-08-01 12:50:00 51 2018-08-01 12:51:00 52 2018-08-01 12:52:00 53 2018-08-01 12:53:00 54 2018-08-01 12:54:00 55 2018-08-01 12:55:00 56 2018-08-01 12:56:00 57 2018-08-01 12:57:00 58 2018-08-01 12:58:00 59 2018-08-01 12:59:00 60 2018-08-01 13:00:00 61
ここで30分毎の平均値へ変換したいとします。
df.resample(rule='30Min').mean()
value 2018-08-01 12:00:00 15.5 2018-08-01 12:30:00 45.5 2018-08-01 13:00:00 75.5 2018-08-01 13:30:00 105.5 2018-08-01 14:00:00 121.0
30分毎の平均値の時系列データへ変換することができました。
念の為値の確認をしてみます。
a = np.arange(1,31) array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30])
np.average(a) 15.5
値は合致しました。 pandas強い。
次は、欠測値が含まれる場合を考えてみようかな。