自 HealthKit 随着 iOS 8 问世之后,每个人都可以通过 iPhone 将自己的健康数据收集起来了。如果你购买了 Apple Watch 以及第三方的血压仪、体脂秤等硬件设备,又或者锻炼时选择了接入 HealthKit 的应用,那么一年下来收集的数据也不算少了。

目前,查看自己的健康数据主要是通过系统自带的「健康」应用,该应用也针对每一项数据都进行了可视化展示,你可以基于时间维度浏览自己运动量、睡眠、以及体重等数据的变化。临近年末,我开始准备挖掘和分析自己一年来产生的健康数据,而将原始数据导出成为了首要步骤。

苹果一直以来都比较重视的用户数据,所以你的健康数据自然也全部交给了你。目前,通过「健康」应用就可以直接导出自己的全部健康数据。在应用中点击右上角头像图标,下滑到底就可以看到「导出健康数据」的选项。根据数据量的大小,这个导出的过程可能会持续数秒到数分钟不等。

从「健康」应用导出数据

在本地解压导出后的压缩包,你会发现数据文件是以 .xml 格式结尾,打开之后将是如下图所示密密麻麻的字符。如果你不会对 XML 进行解析,那么这个数据文件对你基本没有用处。

默认导出的 XML 文件预览

所以,普通人如何将这个文件转换为能看得懂的格式,也就是像 .csv / .xlsx 等传统以行和列组成的数据表的格式呢?下面就提供了 3 种方法。

1. Health Export 在线解析

Health Export 是国外一名独立开发者写的在线解析工具,它专门用于将健康应用导出的 XML 文件转换为 CSV 文件。

Health Export 在线解析工具

打开网页,选择本地解压好的 导出.xml 或者 export.xml 文件,解析就开始了。等待数分钟后,XML 就会被转换为独立的 CSV 文件用于下载。此时,打开下载好的 CSV 文件,就能看到转换后的数据了。

解析后的 CSV 数据文件

虽然 Health Export 是基于网页的在线工具,但是它并不会上传你的数据,一切都是通过 JavaScript 脚本在本地完成解析,所以隐私安全应该能得到保障。

2. QS Access 应用

除了 Health Export 这类直接解析 XML 文件的工具,是否有一类应用可以直接读取 HealthKit 数据并导出呢?于是,我在 App Store 中键入了相应的关键词搜索,的确有不少这类的应用。

浏览下来,发现具备类似功能的应用基本是都有两大特点:长得丑,以及上架之后就基本不更新。经过我试用了数款看起来相对还不错的免费或收费的应用之后,最好的就应该是 QS Access 了。

如下图所示,QS Access 使用起来非常简单。首先,选择按小时,或者每天为导出数据的间隔周期。然后,选择需要导出的数据项和对应的单位。最后,点击右下角「创建表格」选项,应用会提示你完成数据授权,接着就可以导出数据表了。

使用 QS Access 导出健康数据

QS Access 是由一个叫 Quantified Self Labs 的美国公司开发的产品。准确来讲,这是一个由个人创办的,旨在推行量化自我理念的组织。QS Access 设计简洁,免费且没有广告,应该是健康数据导出的不二之选了(App Store 下载)。


使用 Python 脚本

Python 应该是当下用于数据分析最热门的语言了吧,用于解析健康应用产生的 XML 数据可以说非常方便了。编程带来了极高的自由度和灵活性,当然也有一定的门槛。不用担心,下面的内容就算你不熟悉编程也能很轻松地搞明白。

这里使用了 @Radcliffe 提供的开源代码。目前,Github 可以在国内自由访问,所以直接通过此链接下载名称为 applehealthdata.py 的脚本文件。

然后,将之前下载好的 导出.xml 与该脚本文件放置在同一目录下方。为了防止报错,这里需要将 导出.xml 更名为 export.xml

接下来,在该文件夹下打开终端(macOS & Linux)或者命令行工具(Windows),使用 Python 2 执行该脚本:

python applehealthdata.py export.xml
使用 Python 脚本解析 XML 文件

稍等片刻,XML 文件就会被解析为数个 CSV 文件了。

小结

文中介绍了 3 种导出「健康」应用数据的方法。其中,最方便的应该是使用 QS Access 应用,但该方法有一个问题在于,你需要自行判断某一项健康指标下是否存在数据,如果选中全部选项就容易导出很多空值。而对 XML 文件进行解析,就可以很好地避免这个问题。所以,我比较推荐使用第一种方法。当然,如果你对 Python 熟悉,那么可以进一步 DIY 的方法 3 应该是最佳选择。