はじめに
本記事では、SciPyのinterpolate.interp1dを使用して時系列データを効果的に補間する方法を解説します。不規則な間隔で取得されたデータポイントから、均等な間隔のデータを生成する技術について、具体的なコード例と共に詳しく説明していきます。データ分析や科学計算における時系列データの前処理として役立つ内容です。
コード

解説
モジュールのインポート
バージョン
データの読み込み
本記事では、Fitbit APIで取得した睡眠データを使用します。Fitbit APIからのデータ取得方法については、下記の記事で解説したデータをpd.read_html()を使って読み込みます。

時間とレベルの抽出
データフレームからデータを抽出します。時間データはto_datetime関数を使用してdatetime64形式に変換しておきます。
時間とレベルの関係を表示すると下記のようになります。各レベルはsecondsの時間だけ継続するため、空いている時間帯を同一データで補間する必要があります。

補間用関数をinterp1dで作成
interp1dはdatetime64形式のデータを受け付けないため、astype(float)で型変換する必要があります。interp1dでは、kind=”previous”パラメータを指定することで、前のデータ値を使用して補間が行われます。
補間データの作成
np.arangeとnp.timedelta64(1,’m’)を使用して1分間隔のデータを作成します。その後、f(new_t.astype(float))を実行することで、補間されたレベルデータを取得できます。
補間データの表示

横軸の時間データはConciseDateFormatterを使用して、簡潔で見やすく表示しています。ConciseDateFormatterについては下記記事で詳しく解説しています。


コメント