[fitbit] 8. Fitbit APIで睡眠効率を取得してカレンダーヒートマップで表示(sns.heatmap)

fitbit

はじめに

fitbitとは、心拍数、歩数や睡眠をトラッキングするために腕に着用するタイプのスマートウォッチです。ここでは、Fitbit APIを使って一月分の睡眠効率を取得し、seabornのヒートマップで表示する方法を解説します。

手順

APIの登録など

その1を参照してください。

[fitbit] 1. PythonでFitbit APIを使ってデータ取得 その1 アプリの登録とtokenの取得
fitbitとは、心拍数、歩数や睡眠をトラッキングするために腕に着用するタイプのスマートウォッチです。日々の健康状態を把握するのにとても役立っています。ここでは、Fitbit APIを使ってデータを取得するために、アプリの登録からtokenの取得まで解説します。

fitbit-pythonのインストールなど

その2を参照してください。

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

モジュールのインポートなど

バージョン

APIの認証

CLIENT_ID, tokenなどを定義

その1で取得したCLIENT_IDとCLIENT_SECRETとtoken.txtをここで使います。token.txtは実行ファイルと同じ場所に置いておきます。

認証

fitbit.Fitbit()により、認証を行います。updateToken関数はtokenの更新用の関数でrefresh_cbupdateTokenとすることでtokenが期限切れの際に随時更新してくれるようになります。

1ヶ月分のデータの取得

日付の設定

2021-10-01と2021-10-31の日付をそれぞれdatetime形式で作成します。

睡眠データの取得

client.time_series()によって睡眠データを取得します。base_dateとend_dateに先ほど作成した日付を入れます。

[‘dateOfSleep’]で取得したデータの日付を調べると、リストの最初に’2021-10-31’のデータ、最後に ‘2021-10-01’のデータが入っていることがわかります。

睡眠データから睡眠効率の抽出

睡眠効率は”efficiency”の値となります。この睡眠効率はアプリで閲覧できる睡眠スコアとは違うもののようです。睡眠データリストの中から、睡眠効率のみを取り出し、睡眠効率リストを作成します。

リストの要素数は31なので1月分のデータが得られていると思われます。

カレンダーの形式に整形

カレンダー形式にするため、np.hstack()でnanの配列を前後に結合し、reshapeで(6,7)の形状にします。

カレンダーの日付の作成

上のデータと同様にして、日付のデータも作成します。

カレンダー形式のヒートマップを表示

睡眠効率データをseabornのヒートマップで表示します。annot=dayssとすることで各セルに日付が表示されます。なお、nanの位置には何も表示されません。
ax.set_xticklabelsで曜日を設定します。

各セルにデータを表示

annot=Trueとすることでデータの値がヒートマップの各セルに表示されます。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

Overview — Python-Fitbit 0.3.0 documentation
Fitbit Development: Sleep
You'll fit in here. Using JavaScript, CSS, and SVG, developers now have a fast, easy way to build apps and clock faces for Fitbit OS.
seaborn.heatmap — seaborn 0.11.2 documentation

コメント