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

fitbit

はじめに

Fitbitは、心拍数、歩数、睡眠などの健康データをトラッキングできるスマートウォッチです。このデバイスが記録する睡眠データは、自分の睡眠の質を把握するのに役立ちます。本記事では、Fitbit APIを使って一月分の睡眠効率データを取得し、Pythonの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関数はトークンの更新用の関数です。

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パラメータを設定すると、ヒートマップの各セルに実際のデータ値が表示されます。

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

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

まとめ

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

参考

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 f...
seaborn.heatmap — seaborn 0.13.2 documentation

コメント