はじめに
fitbitとは、心拍数、歩数や睡眠をトラッキングするために腕に着用するタイプのスマートウォッチです。ここでは、Fitbit APIを使って睡眠時の心拍数データを取得してmatplotlibで表示する方法を解説します。
手順
APIの登録など
その1を参照してください。
fitbit-pythonのインストールなど
その2を参照してください。
モジュールのインポート
バージョン
APIの認証
CLIENT_ID, tokenなどを定義
その1で取得したCLIENT_IDとCLIENT_SECRETとtoken.txtをここで使います。token.txtは実行ファイルと同じ場所に置いておきます。
認証
fitbit.Fitbit()
により、認証を行います。updateToken
関数はtokenの更新用の関数でrefresh_cb
に updateToken
とすることでtokenが期限切れの際に随時更新してくれるようになります。
睡眠データの取得
DATEを設定し、client.sleep(DATE)
とすることで睡眠データが得られます。
睡眠の開始・終了時間の取得
data_sleep["sleep"][0]["startTime"]
で睡眠開始時間が、data_sleep["sleep"][0]["endTime"]
で睡眠終了時間が取得できます。np.datetime64
でdatetime型に変換しときます。
安静時心拍数の取得
安静時心拍数のデータは、client.time_series('activities/heart')
で取得できます。
睡眠終了日の心拍数の取得
intraday_time_seriesでdetail_level=’1min’とすることで1分間隔でデータを取得できます。
pd.DataFrame.from_dictでデータフレームにします。
日付つき時刻データの作成
日付つき時刻データと心拍数のデータフレームの作成
pd.concatでデータフレームを結合して日付つき時刻データと心拍数のデータフレームを作成します。
睡眠開始日の心拍数データの取得
睡眠終了日と同様の方法で取得します。
開始日と終了日のデータフレームの結合
pd.concatで結合して、df.set_indexで時刻データをインデックスにします。
開始時間と終了時間でスライスしてデータ抽出
indexがDatetimeIndexなので、スライスによるデータ抽出ができます。
睡眠時の心拍数変化の表示
上で得られた結果を表示すると以下のようになります。
睡眠時の心拍数変化と安静時心拍数の表示
安静時心拍数以下をfill_betweenで塗りつぶして表示しています。安静時心拍数より心拍数が低いところにある時に安らかな眠りについているらしいです。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)
コメント