はじめに
Fitbitは、心拍数、歩数、睡眠などの健康データをトラッキングできるスマートウォッチです。このデバイスが記録する睡眠データは、自分の睡眠の質を把握するのに役立ちます。本記事では、Fitbit APIを使って一月分の睡眠効率データを取得し、Pythonのseabornライブラリを使ってカレンダー形式のヒートマップとして視覚化する方法について解説します。これにより、睡眠パターンの傾向を一目で確認できるようになります。
手順
APIの登録など
その1を参照してください。

fitbit-pythonのインストールなど
その2を参照してください。

モジュールのインポートなど
バージョン
APIの認証
CLIENT_ID, tokenなどを定義
「その1」で取得したCLIENT_IDとCLIENT_SECRET、そしてtoken.txtをここで使用します。token.txtは実行ファイルと同じディレクトリに配置してください。
認証
fitbit.Fitbit()を使用して認証を行います。updateToken関数はトークンの更新用の関数です。
refresh_cbにupdateTokenを設定することで、トークンが期限切れになった際に自動的に更新されるようになります。
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=daysパラメータを設定することで、各セル内に対応する日付が表示されます。ただし、nan(欠損値)のセルには何も表示されません。また、ax.set_xticklabelsメソッドを使用して曜日ラベルを設定します。

各セルにデータを表示
annot=Trueパラメータを設定すると、ヒートマップの各セルに実際のデータ値が表示されます。

まとめ
本記事では、Fitbit APIを使って睡眠効率データを取得し、seabornのヒートマップ機能を使ってカレンダー形式で可視化する方法を解説しました。この方法を使えば、一月分の睡眠効率の変化を視覚的に確認でき、自分の睡眠パターンの傾向を把握することができます。Pythonのデータ可視化ライブラリと組み合わせることで、Fitbitデータの分析の幅が広がります。
参考

コメント