PythonとGoogle Colabを使ってFitbitの睡眠データを可視化しよう

チュートリアル

Fitbitは人気のフィットネストラッカーで、毎日の活動量や睡眠の質を記録してくれます。このデータを分析・可視化することで、自分の睡眠パターンを把握し、生活習慣の改善に役立てることができます。

この記事では、PythonとGoogle Colabを使ってFitbitの睡眠データをグラフ化する方法を解説します。プログラミングの知識がなくても、サンプルコードを実行するだけで簡単にできるので、ぜひお試しください。


こちらの記事もおすすめ

Fitbit APIの登録方法
Fitbit APIを使用すると、自分のアプリケーションからFitbitのユーザーデータにアクセスできるようになります。この記事では、初心者向けにFitbit APIの登録方法を詳しく解説します。こちらの記事もおすすめFitbit開発者アカ...
Fitbit APIの認可フロー
Fitbit APIを使用してユーザーデータにアクセスするには、OAuth 2.0認可フレームワークに従って安全に認可を行う必要があります。この記事では、Fitbitが推奨するPKCEを使用した認可コード付与フローについて詳しく解説します。...

手順

  1. Google Colabでノートブックを新規作成します。
  2. Fitbit APIの認証情報を取得します。(CLIENT_ID, CLIENT_SECRET, TOKEN_FILE
  3. 下記のサンプルコードをノートブックにコピペします。
  4. 認証情報とデータ取得日を入力し、全てのセルを実行します。
  5. グラフが表示されれば完了です。分かりやすく睡眠の状態が可視化されているはずです。

サンプルコード


import fitbit
import pandas as pd 
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 認証情報を入力
CLIENT_ID = '****'  
CLIENT_SECRET = '****'
TOKEN_FILE = "token.json"

# トークンファイルを読み込み  
with open(TOKEN_FILE) as f:
  TOKEN_DICT = json.load(f)
ACCESS_TOKEN = TOKEN_DICT['access_token']  
REFRESH_TOKEN = TOKEN_DICT['refresh_token']

# Fitbitクライアントを初期化  
client = fitbit.Fitbit(
  CLIENT_ID,
  CLIENT_SECRET,  
  access_token=ACCESS_TOKEN,
  refresh_token=REFRESH_TOKEN
)

# 睡眠データを取得する日付を指定
DATE = "2024-03-09"
data_sleep = client.sleep(DATE)

# 詳細な睡眠データを取得
data_sleep_levels = data_sleep["sleep"][0]["levels"]["data"]
df_sleep_levels = pd.DataFrame.from_dict(data_sleep_levels)
df_sleep_levels.index = pd.to_datetime(df_sleep_levels["dateTime"])

# 睡眠レベルを数値に変換  
sleep_level_map = {"wake":3, "rem":2, "light":1, "deep":0}
df_sleep_levels["level_int"] = df_sleep_levels["level"].map(sleep_level_map)

# グラフを描画
fig, ax = plt.subplots(figsize=(16,12),dpi=130) 
ax.step(df_sleep_levels.index, df_sleep_levels["level_int"], "-", where="post", lw=2)

# 軸の設定 
ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(mdates.AutoDateLocator()))  
ax.set_yticks(range(4)) 
ax.set_yticklabels(["Deep","Light","Rem","Wake"])
ax.set_xlabel("Time") 
ax.set_ylabel("Sleep level")

plt.savefig("sleep_analysis.png")
plt.show()

解説

  • Fitbit APIにアクセスするために、fitbitライブラリを使用します。事前にpip install fitbitでインストールしておいてください。
  • 認証情報(CLIENT_ID, CLIENT_SECRET, ACCESS_TOKEN, REFRESH_TOKEN)はFitbit開発者サイトで取得する必要があります。
  • client.sleep(DATE)で指定した日付の睡眠データを取得します。
  • 取得したデータをDataFrameに変換し、グラフ用に加工します。
  • plt.subplotsで新しいグラフを作成し、ax.stepで睡眠レベルの時系列データをプロットします。
  • X軸は時刻、Y軸は睡眠レベル(深い睡眠〜浅い睡眠〜REM睡眠〜覚醒)を表しています。
  • plt.savefigplt.showでグラフを保存・表示します。

ぜひ自分のFitbitデータで試してみてください。睡眠の質や生活リズムの改善に役立つはずです。コードや手順で不明な点があれば、気軽にコメントで質問してくださいね。

▼ Google Colabノートブック
Fitbitの睡眠データ可視化.ipynb

Google Colaboratory

以上が、Fitbitの睡眠データを可視化する方法の解説記事になります。プログラミング初心者でも分かりやすいよう、丁寧に手順を説明するように心がけました。実際に利用できるGoogle Colabのノートブックも用意したので、すぐに試していただけると思います。

Fitbit Development: Web API
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.

リポジトリ

GitHub - Sunwood-ai-labs/fitbit-python-analyzer
Contribute to Sunwood-ai-labs/fitbit-python-analyzer development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました