打破围城:将 Apple Health 导出的 XML数据转换为友好的 CSV 格式

01. 前言:Apple Health 的数据围城

导出过 Apple 健康数据的朋友都深有体会:苹果给我们的不仅是数据,更是一道技术门槛。

1、文件巨大: 数 GB 的 导出.xml

2、格式混乱: 记事本打不开,Excel 内存溢出。

3、AI 难读: 原始 XML 的层级结构让 LLM在处理长周期趋势时产生幻觉。

为打破这道门槛,我开发了Apple Health Pro🍎 前往 GitHub 下载安装包


02. 用户指南:3 步实现“健康数据自由”

第一步:iPhone 端的原始导出

在健康 App 中点击头像 -> “导出所有健康数据”。这一步你将得到一个 导出.zip

第二步:Apple Health Pro 精准洗数

启动应用(支持 macOS , windows 以及 Linux 三平台)

1、加载: 点击 SELECT DATA ARCHIVE并选择你在上一步导出的 ZIP 压缩包。

2、过滤:IDENTIFIED SOURCES 列表中勾选你信任的来源,剔除冗余的第三方 App 记录。

3、隐私和时间:Date range 输入你期望的起止日期,同时选择是否隐藏设备名(这一步会将初始数据的设备名覆盖为 AppleHealthPro_device

4、执行: 点击 EXECUTE EXPORT

第三步:让 AI 成为你的“数字私人医生”

导出的 CSV 已经过专业的维度归纳,**在最新的 v8.6.0 版本中,已全面升级为 15 大医疗与运动维度。**如下方表格所示,如果未提取到相关数据则不会生成对应文件。

分类序号 维度名称 (Category) 导出文件名 (Exported CSV) 核心指标涵盖 (Key Metrics Included)
01 核心心血管 (Heart & Cardio) 1_Heart_Cardio.csv 心率、静息心率、HRV (心率变异性)、步行平均心率
02 身体成分 (Body Metrics) 2_Body_Metrics.csv 体重、BMI、体脂率、瘦体重、身体水分
03 日常基础消耗 (Daily Activity) 3_Daily_Activity.csv 步数、活动能量消耗、静息能量消耗、步行距离、爬楼层数
04 睡眠与恢复 (Sleep Recovery) 4_Sleep_Recovery.csv 睡眠分析 (核心、深度、快速动眼、清醒等状态)
05 步态与行动力 (Mobility & Gait) 5_Mobility_Gait.csv 步行速度、步长、不对称性、双足支撑时间、步态稳定性
06 生殖与生理健康 (Reproductive) 6_Reproductive.csv 经期记录、排卵测试结果、宫颈粘液质量
07 生命体征 (Vitals & Respiratory) 7_Vitals_Respiratory.csv 血氧饱和度、呼吸率、体温、血压
08 跑步硬核动态 (Running Dynamics) 8_Running_Dynamics.csv 跑步功率、垂直振幅、触地时间、跑步步幅、跑步速度
09 骑行表现 (Cycling Stats) 9_Cycling_Stats.csv 骑行功率、踏频、骑行速度、功能性阈值功率 (FTP)
10 游泳与水域 (Swimming & Water) 10_Swimming_Water.csv 游泳距离、划水次数、水下深度、水温
11 通用体能训练 (Workouts & Training) 11_Workouts_Training.csv 力量训练、瑜伽、HIIT、传统跑/骑/游等所有手动开启的运动记录
12 环境与感官 (Environment & Senses) 12_Environment_Senses.csv 日照时间、环境音量暴露、耳机音量暴露
13 营养与摄入 (Nutrition & Hydration) 13_Nutrition_Hydration.csv 膳食能量、碳水、蛋白质、饮水量、咖啡因摄入
14 心理状态与正念 (Mindfulness & Mental) 14_Mindfulness_Mental.csv 心理状态打卡、情绪追踪、正念冥想时间
15 症状与病史 (Symptoms & Illness) 15_Symptoms_Illness.csv 头痛、咳嗽、疲劳等手动打卡的各类症状记录

你可以直接将这些文件喂给 ChatGPT 或 Gemini 等大模型,配合我推荐的提示词:

[你是一名具备运动生理学、 心血管医学 和健康数据建模能力的专业分析师。我将提供Apple Health原始数据(CSV),请基于数据进行接近专业体检级别的分析,并严格按照以下结构输出:首先给出【一句话结论】,直接判断整体健康状态(健康 / 亚健康 / 风险状态),不得模糊;然后进行【生理系统拆解分析】,从心血管系统(心率、HRV、静息心率)、神经系统(基于HRV分析交感/副交感平衡)、睡眠恢复系统、代谢与活动水平四个层面分析,必须解释背后的生理机制而非表象;接着进行【趋势建模】,基于时间序列判断是否存在周期性波动、长期改善或恶化趋势]


03. 技术深挖:我是如何驯服 15GB+ “数据巨兽”的?

面对极端的全量 Apple Health 数据(部分极客用户的 导出.xml 高达 13GB 以上),传统的读取方式会让内存瞬间红温宕机。在 v8.4.0 版本中,我重构了底层的解析引擎:

697

1、 O(1) 流式清洗管道 (CleanStream) 苹果的 XML 中偶发带有 \x0b 等乱码字符,常规的 f.read().replace() 会将十几个 G 的文件瞬间载入物理内存。我写了一个流式清洗代理,将内存消耗从 O(N) 全量读取降维至 O(1) 按块读取,彻底消灭了闪退的元凶。

2、C 语言级内存池去重 (String Interning) 在 3000 万条健康记录中,typeunit存在海量重复。我调用了 Python 底层的 sys.intern() 机制,让几百万个相同的字符串在内存中共享同一个物理地址,再辅以 gc.collect() 强制垃圾回收,打破了 Python 字典对象的物理内存瓶颈。

3、智能安全分割 (Smart Chunking) 为了防止导出的巨型 CSV 撑爆用户的 Excel,系统内置了自动分卷算法。经过压力测试,我将分卷阈值精准踩在 88 万行(单文件约 90MB),这是兼顾数据连续性与软件加载稳定性的绝佳甜点。


04. 开源与未来

目前项目已在 GitHub 开源,欢迎各位 Star 指教。

GitHub 地址 leecdiang/Apple-Health-Pro
未来计划: 支持更多运动指标提取,图标显示数据 …