DataFrameの時系列データのリサンプリング

時系列データは、1秒や1時間など一定の間隔のデータが多いです。 この時間の間隔を変更することをリサンプリングと呼びます。 リサンプリングする理由は、データを圧縮してサイズを小さくしたい、別のデータと結合するために揃えるなど、いろいろあります。

DataFrame.resampleメソッドでリサンプリングすることができます。 第1引数のruleで時間間隔を指定できます。

主な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を参照ください。