Python module to export Apple Health dump file to a data frame for analysis
Project description
Apple Health Exporter
This Python 3 module takes a dump of Apple Health data (the export.zip
file
generated through an Apple Health data export) and saves a subset of fields and
records to a feather file. This can then be
read by both Python and R.
Getting started
The package can be used either as an executable module, or as an importable library.
First, install from PyPI (preferably in a new virtual environment):
# optional: create virtualenv within directory to avoid polluting system Python
python -m venv .venv
source .venv/bin/activate
pip install apple-health-exporter
This will also install the following dependencies:
Installing Feather in R
If you'd like to do data analysis on the generated data file in R, then you'll need the feather package:
install.packages("feather")
Usage
- Export Apple Health data from within the Health app.
- Pick a location (I usually export to Dropbox) and then run the script:
apple-health-exporter ~/Dropbox/export.zip ~/Downloads/data.feather
# alternative method:
python -m apple_health_exporter ~/Dropbox/export.zip ~/Downloads/data.feather
# Specify XML file name in case zip file has been renamed
apple-health-exporter ~/Dropbox/export_renamed.zip ~/Downloads/data.feather --xml_file_name export.zip
The export zip file contains an XML file containing actual data. By default, this name can be inferred from the stem of the zip file name (for example
export.zip
will contain a file namedexport.xml
). However, if the zip file has been renamed, you may need to explicitly provide the name of the XML file with the--xml_file_name
option.
-
Now you can load the data in either R or Python.
In R:
library(feather) library(dplyr) data <- read_feather("~/Downloads/data.feather") data %>% group_by(type) %>% summarize(entries = n())
# A tibble: 28 × 2 type entries <chr> <int> 1 HKQuantityTypeIdentifierActiveEnergyBurned 84742 2 HKQuantityTypeIdentifierAppleExerciseTime 5997 3 HKQuantityTypeIdentifierBasalEnergyBurned 52477 4 HKQuantityTypeIdentifierBodyFatPercentage 44 5 HKQuantityTypeIdentifierBodyMass 84 6 HKQuantityTypeIdentifierBodyMassIndex 40 7 HKQuantityTypeIdentifierDietaryCalcium 84 8 HKQuantityTypeIdentifierDietaryCarbohydrates 84 9 HKQuantityTypeIdentifierDietaryCholesterol 84 10 HKQuantityTypeIdentifierDietaryEnergyConsumed 84 # ... with 18 more rows
In Python:
import pandas as pd data = pd.read_feather("data.feather") data.groupby("type").size()
type HKQuantityTypeIdentifierActiveEnergyBurned 84742 HKQuantityTypeIdentifierAppleExerciseTime 5997 HKQuantityTypeIdentifierBasalEnergyBurned 52477 HKQuantityTypeIdentifierBodyFatPercentage 44 HKQuantityTypeIdentifierBodyMass 84 HKQuantityTypeIdentifierBodyMassIndex 40 HKQuantityTypeIdentifierDietaryCalcium 84 HKQuantityTypeIdentifierDietaryCarbohydrates 84 HKQuantityTypeIdentifierDietaryCholesterol 84 HKQuantityTypeIdentifierDietaryEnergyConsumed 84 HKQuantityTypeIdentifierDietaryFatMonounsaturated 84 HKQuantityTypeIdentifierDietaryFatPolyunsaturated 84 HKQuantityTypeIdentifierDietaryFatSaturated 84 HKQuantityTypeIdentifierDietaryFatTotal 84 HKQuantityTypeIdentifierDietaryFiber 84 HKQuantityTypeIdentifierDietaryIron 84 HKQuantityTypeIdentifierDietaryPotassium 84 HKQuantityTypeIdentifierDietaryProtein 84 HKQuantityTypeIdentifierDietarySodium 84 HKQuantityTypeIdentifierDietarySugar 84 HKQuantityTypeIdentifierDietaryVitaminC 84 HKQuantityTypeIdentifierDistanceCycling 21 HKQuantityTypeIdentifierDistanceWalkingRunning 49111 HKQuantityTypeIdentifierFlightsClimbed 562 HKQuantityTypeIdentifierHeartRate 26502 HKQuantityTypeIdentifierHeight 41 HKQuantityTypeIdentifierLeanBodyMass 39 HKQuantityTypeIdentifierStepCount 8810 dtype: int64
Examples
Some examples using this data export can be found in my apple-health-examples repo.
Contributing
This package uses Poetry for package management.
To build and test the package locally, check out the repo and:
-
Install Poetry (one-time) using one of the methods on the Installation page.
-
Install all dependencies (automatically creates a virtual environment):
poetry install
- Make changes, and test using the following commands:
# Type checking
poetry run mypy .
# Linting
poetry run flake8 apple_health_exporter/
# Formatting
poetry run black .
Contributors
Thanks to contributors who have helped improve this package!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for apple_health_exporter-1.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a388f0822cd423111544bc6b4e2fc7d9e73c065409934a333d266cd123fdc0b |
|
MD5 | d2c3faf314c51a964dab784832216da2 |
|
BLAKE2b-256 | 35c4f1ba38c92137b39708d5234c6451529ba7fafef0e3a8a6d76dbc0ab93b69 |
Hashes for apple_health_exporter-1.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcfa3ed99650bb8a70276e7f6760a5a481b744a55bd25184134b02658da25250 |
|
MD5 | d1e85463f7ba934783df8ab65f150e64 |
|
BLAKE2b-256 | c357550d195a92bc51cd4defcd3a5b5070096592eb939e350777171a6b056899 |