iOSのヘルスケアデータをcsvで出力してみる。あとちょっとpythonで可視化してみる。

Python
LINEで送る
Pocket

こんにちは。
Apple Watchを購入して1年半経ちました。購入してモチベーションが上がり、運動もかなり継続的に行うことができたこともあって、この溜まってきたヘルスケアデータ使えないかなと思ったので、今回試してみました。

あ、ちなみにApple Watchは運動を習慣的にしていく仕組みが標準的に備わっているので、本当にめちゃくちゃおすすめです!個人的にはCellularモデルじゃなくても全然困らずに使えています。

ヘルスケアデータを出力する

まずは溜まったヘルスケアデータを出力しましょう。
iPhoneのヘルスケアアプリを開いて、右上のアイコンを押しましよう。
IMG_1787

そうしたら、下の方にある「すべてのヘルスケアデータを書き出す」を押します。
IMG_1788

出力が終わるまで少し時間がかかるので、気長に待ちましょう。
出力が終わると共有メニューが開くので、好きな方法でデータを転送しましょう。筆者はAirDropを使用してMacにデータを転送しました。

送られたデータは「書き出したデータ.zip」という名前です。これを解凍すると「apple_health_export」というフォルダが現れます。中身はcsv形式の心電図のフォルダや、gpx形式のワークアウトルートのフォルダ、後はさまざまなデータがxml形式のデータとしてまとまっています。xml形式だと使いにくいので、これをcsv形式に変換していきます。

ヘルスケアデータをcsv形式に

applehealthdataというツールを使います。
このリンク先のリポジトリをクローンしていただいても良いですし、ダウンロードしていただいてもいいですのでローカルにリポジトリを持ってきて、その内にヘルスケアデータの中にある「export.xml」を移動させます。
そうしたら「applehealthdata.py」を実行します。以下のコードのように、引数には「export.xml」のパスをする必要があります。

python applehealthdata.py ./export.xml

実行が終わると、csv形式のデータがたくさん入った「apple_health_export」フォルダが作成されます。中にあるcsv形式のデータは、種類ごとに分けられて作成されています。

seabornを使って少し可視化

たくさんデータがあるので色々できそうですが、今回は「ActivitySummary.csv」のデータのみを使って可視化をします。使用するのはpythonのseabornライブラリ。
ちなみに今回は自前のデータを使っています。運動のこととかバレて少し恥ずかしい…

まずはライブラリのインポートから

# ライブラリのインポート
from pandas import Series,DataFrame
import pandas as pd
import seaborn as sns
sns.set()

# 小数第3位まで表示
%precision 3

「ActivitySummary.csv」のデータを読み込んだ後、seabornを使ってpairplotとjointplotを作成します。

df = pd.read_csv("ActivitySummary.csv")
# ヒストグラム+散布図
sns.jointplot("activeEnergyBurned", "appleExerciseTime", data=df)

jointplot

# ヒストグラム+六角形の散布図
sns.jointplot("activeEnergyBurned", "appleExerciseTime", data=df, kind="hex")

jointplot_hex

# ヒストグラム+線形回帰
sns.jointplot("activeEnergyBurned", "appleExerciseTime", data=df, kind="reg")

jointplot_reg

df = df[["activeEnergyBurned", "appleExerciseTime", "appleStandHours"]]
sns.pairplot(df)

pairplot

# クラスターマップ(デンドログラム+ヒートマップ)
sns.clustermap(df.corr())

clustermap


以上、ヘルスケアデータをcsvデータに変換して、pythonで少し可視化をしてみました。Apple WatchなくてもiPhoneあればヘルスケアデータはあると思います。興味ある方は試してみてくださいね。

参考

Apple Watchで取得したバイタルデータをCSVで出力する
機械学習入門!seabornで便利でかっこいいグラフを簡単にplot!
Seaborn でヒートマップを作成する

LINEで送る
Pocket

コメント

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