視覺化 Apple Health Data (Streamlit + Altair)

Online Demo: https://boboru-apple-health.streamlit.app/

意外發現手機裡面的 Apple Health 儲存了大量歷年來的資料,於是想說來做個專案轉換一下心情,順便練習一下新的玩具。想法是要做一些 Apple 沒有做到的事情,比如說使用者其實不太能自由地選擇要分析的時間區段(但使用上很直覺,也沒什麼不好);Apple 基本上都是選擇「平均數」當作敘述統計量,但想想許多資料分佈肯定是長尾,而平均數對於極端值很敏感,所以這個時候或許可以考慮其他敘述統計的方式。

目前的專案主要是以「睡眠資料」為主,iPhone 會記錄每天的睡眠時間 (In bed),又如果同時有 Apple Watch 的話,會再進一步紀錄不同的睡覺階段(快速動眼期、深層睡眠等等),既然如此,就可以透過這些資料視覺化自己過去的睡眠狀態,包括:

  • 每天的睡眠時間,及其四分位數
  • 每天的起床時間與入睡時間,及其中位數
  • 某一天的睡眠狀態(有幾個睡眠週期、醒來幾次等等)
  • 某一天的睡眠狀態與心跳疊圖

至於實作上,我自己用 streamlit 的體驗真的是挺好的,可以很快速地做出 prototype,尤其全 Python 的架構可以擺脫 MVC,實在是感天謝地,又這次的圖表都用 altair 做,很容易做出專業且美觀的圖表,而且內建互動式設計,小小的缺點大概就是 docs 沒有寫得很好吧。整套用下來 streamlit + altair 的學習曲線蠻平緩的,也可以很好很快速地展現一個資料科學的專案。

雖然把整個服務打包,應該可以更快速地擴散,但健康資料真的是太敏感了,要是我也不願隨意上傳資料,最後決定如果要用自己的資料的話,還是要從 GitHub 拉 repo 下來,但另外寫了一個模擬資料的生成,讓 online demo 可以用假資料玩一下,希望可以提高用戶體驗,減少使用者流失…

未來應該會做更多不同種類的分析,透過資料持續帶來洞見。

Contributions Welcome, GitHub.

作者: boboru

A NTU IM master student. I am interested in causal inference, statistics and machine learning. / boru0713@gmail.com

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *