Nueve años de datos de actividad física
Procesamiento de 2,74 millones de registros de Apple Health con Python: lectura en streaming de un XML de 1,2 GB, agregación con pandas e informe HTML sin dependencias.
El punto de partida
La app Salud del iPhone guarda todo lo que mide, desde 2017 en mi caso. Pero te lo muestra por día, por semana o por mes. Nunca los nueve años juntos. La pregunta era operativa: qué se puede extraer de nueve años de registros si se los trata como una base de datos y no como una aplicación.
Pedí la exportación completa. Llegó un zip con un archivo XML de 1,24 GB. Ningún Excel lo abre. En unas horas lo convertí en un informe navegable, con Claude Code como apoyo.
De 1,2 GB a un informe de 234 KB
- xmlLeer sin ahogarseparse.py recorre el XML línea a línea con expresiones regulares y escribe un CSV por tipo de dato.
- csvResumirbuild_data.py usa pandas para medianas, meses y promedios móviles de 30 días.
- jsonCompactarTodo lo necesario para los gráficos cabe en un JSON de 145 KB.
- svgDibujarUna pequeña librería propia de gráficos SVG, sin dependencias.
- htmlExplicarUn informe que funciona sin internet. Cada gráfico dice cómo leerlo y compara con rangos de referencia publicados.
Un problema clásico de doble conteo: el teléfono y el reloj registran los mismos pasos. Sumarlos duplica la cifra. La solución fue quedarse, hora por hora, con el dispositivo que más registró.
# pasos por hora y por dispositivo → el máximo de cada hora → suma del día
por_hora = df.groupby(["hora", "fuente"]).pasos.sum()
pasos_dia = por_hora.groupby("hora").max().resample("D").sum()
Pasos diarios por año
Mediana de pasos diarios por año. La mediana, y no el promedio, para que un día de trekking no infle el año.
- 2020 es la pandemia en un solo número: 3.591 pasos al día, menos de la mitad del año anterior.
- 2021 no existe. No hay un solo registro de ese año. Un buen recordatorio de que los datos faltantes también cuentan algo, aunque no siempre sepamos qué.
- 2025 fue mi mejor año: 13.867 pasos de mediana y 85% de los días sobre 8.000.
- En total, unos 25,3 millones de pasos y 18.300 km. Más que la distancia en línea recta entre Santiago y Tokio.
2022 tiene solo 37 días con datos y 2026 llega hasta septiembre.
Actividad registrada por año
1.183 entrenamientos registrados, unas 535 horas. El reloj llegó a fines de 2022 y desde ahí se ve cómo cambian las costumbres:
CaminataBicicletaCarreraOtros
En 2023 salí en bicicleta 243 veces. En 2025 la bici casi desaparece y la reemplazan 349 caminatas. No hace falta un modelo para ver una mudanza, un cambio de trabajo o simplemente otra rutina.
Qué no se publica
El informe completo también cubre indicadores cardíacos, sueño, oxígeno y ruido. Esos gráficos no se publican. Las rutas GPS tampoco se usaron, porque permiten reconstruir domicilio y desplazamientos.
Trabajar con datos de personas también es decidir qué no publicar. Eso vale para un censo y para mi propio teléfono.
Pruébalo con tus datos
- En el iPhone abre Salud, toca tu foto de perfil y elige Exportar todos los datos de salud.
- Pasa el archivo
exportar.zipa tu computador. - Arrástralo aquí abajo. Puede tardar un par de minutos si tienes años de datos.
¿Prefieres Python? Estos son los scripts, listos para correr en tu computador.