はじめに
scipy.interpolateのinterp1dにより時系列データを補間する方法について説明する。
コード

解説
モジュールのインポート
バージョン
データの読み込み
fitbit APIを使って読み込んだ睡眠データを使う。fitbit APIによるデータの取得について解説した下記事からpd.read_html()を使って読み込む。

[fitbit] 2. PythonでFitbit APIを使ってデータ取得 その2 fitbit-pythonによる睡眠データの取得とmatplotlibによる表示
fitbitとは、心拍数、歩数や睡眠をトラッキングするために腕に着用するタイプのスマートウォッチです。日々の健康状態を把握するのにとても役立っています。ここでは、アプリの登録からtokenの取得までを解説したその1の続きとして、Fitbit APIを使って睡眠データを取得してmatplotlibで表示するところまで解説します。
時間とレベルの抽出
Data Frameからデータを取り出す。時間データは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には下記記事で解説した。

[matplotlib] 54. ConciseDateFormatterで時系列グラフの軸ラベルをシンプルにする
matplotlib.datesのConciseDateFormatterで時系列グラフの目盛りラベルを簡潔に表示する方法について説明する。
参考
interp1d — SciPy v1.15.2 Manual

[python] 時系列データの補間 - Qiita
目的pythonで時系列データの補間処理をしたい。下の図はサンプルプログラムの実行結果。1時間間隔のデータを30分間隔に補間している。サンプルコードnumpyとscipyのそれぞれの補間関数を…
コメント