DataFrameの時系列データのリサンプリング¶
時系列データは、1秒や1時間など一定の間隔のデータが多いです。 この時間の間隔を変更することをリサンプリングと呼びます。 リサンプリングする理由は、データを圧縮してサイズを小さくしたい、別のデータと結合するために揃えるなど、いろいろあります。
DataFrame.resample
メソッドでリサンプリングすることができます。
第1引数のrule
で時間間隔を指定できます。
指定方法 |
内容 |
区切り位置 |
---|---|---|
AS |
年 |
年初 |
A |
年 |
年末 |
MS |
月 |
月初 |
M |
月 |
月末 |
W |
週 |
日曜 |
D |
日 |
0時 |
H |
時 |
0分 |
T |
分 |
0秒 |
S |
秒 |
resample
メソッドの返り値は、新しい時間間隔で集約されたオブジェクトになっており、扱うためには、平均を取るなどの処理が必要になります。
主な処理 |
内容 |
---|---|
min |
最小 |
max |
最大 |
sum |
合計 |
mean |
平均 |
first |
最初の値 |
interpolate |
補間 |
DataFrame.resample('W').mean()[列名]
とするとリサンプリング後の該当列の平均になります。
また、DataFrame.resample('W')[列名].mean()
やDataFrame[列名].resample('W').mean()
など、柔軟に扱うこともできます。
わかりやすい使い方をするといいでしょう。
また、欠損値があるデータをリサンプリングすると、平均を取るなどの処理で欠損値でなくなることもありますが、データの精度が落ちることになるので注意が必要です。
リサンプリングは時間間隔を細かくすることもできますが、その場合は、interpolate
で線形補間すると良いでしょう。
interpolate
のオプションで2次補間('quadratic')や3次補間('cubic')などもできますが、大きく変動することもあります。
さらに詳しくは、pandas.DataFrame.resampleを参照ください。