Obtenez votre fréquence cardiaque à partir de l'API fitbit en Python!

Terminal portable multifonction Fitbit Charge2!

FullSizeRender.jpg のコピー.jpg

Pour une raison quelconque, j'ai récemment reçu le populaire terminal portable fitbit charge2, alors j'aimerais jouer avec. Étant donné que fitbit dispose d'une API officielle, nous l'utiliserons pour obtenir la fréquence cardiaque en Python et la représenter graphiquement.

【environnement】 ・ OS X EL Capitan ・ Python 3.5.2

Préparation API

Obtenez l'ID etc. requis pour l'API

Créer une application

Connectez-vous à https://dev.fitbit.com/login avec votre compte fitbit et créez une nouvelle application à partir de l'onglet ** ENREGISTRER UNE APP *.

nom de l'article Contenu
Application Name Nom de l'application(adapté)
Description Description de l'application(adapté)
Application Website URL de l'application(adapté)
Organization Organisation d'affiliation
Organization Website URL de votre organisation
OAuth 2.0 Application Type Type d'application(Sélectionnez Client ou Personnel)
Callback URL http://127.0.0.1:8080/Entrer
Default Access Type Puisque les données ne sont pas modifiées ici, lisez-Sélectionnez seulement

Obtenir l'ID client et le secret client

Lorsque vous créez l'application, vous pouvez obtenir l'ID client (OAuth 2.0) et le secret client à partir de ** GÉRER MES APPLICATIONS **, alors notez-le. スクリーンショット 2017-02-01 23.33.24.png

Définissez le type d'application OAuth 2.0 sur Personnel

Ouvrez la page ** Modifier les paramètres d'application ** à partir de * GÉRER MES APPLICATIONS * et définissez le type d'application OAuth 2.0 sur Personnel. スクリーンショット 2018-01-16 0.10.01.png Si vous souhaitez obtenir des données de séries chronologiques telles que des minutes, vous devez le définir sur Personnel. (Référence: https://dev.fitbit.com/build/reference/web-api/activity/)

Obtenez un jeton d'accès et un jeton d'actualisation

C'est un peu gênant d'ici. Démarrez le terminal. Accédez à un répertoire approprié, copiez et exécutez la commande suivante sur le terminal.

Terminal


git clone https://github.com/orcasgit/python-fitbit.git 

Cliquez ici pour savoir comment utiliser le terminal (http://qiita.com/kenju/items/77a2dc1b6a60697b1133) Si vous obtenez une erreur avec la commande git ici

Ensuite, copiez et collez la commande suivante dans le terminal et exécutez-la. Remplacez [OAuth 2.0 Client ID] et [Client Secret] par les valeurs obtenues précédemment.

python-fitbit/gather_keys_oauth2.py 【OAuth 2.0 Client ID】 【Client Secret】


Ensuite, le navigateur démarre et スクリーンショット 2017-02-01 12.12.52.png Puisqu'un tel écran d'authentification est affiché, vérifiez les éléments nécessaires et [Autoriser](j'ai tout vérifié pour le moment).

Lorsque vous revenez au terminal,

Terminal


access_token = XXXXXXXXXXXXXXXXXXXXXX
refresh_token == YYYYYYYYYYYYYYYYYYYYYYYYY

Est affiché, alors notez-le. Obtenu · Identité du client ・ Secret du client ・ Ass et Ken ・ Jeton de rafraîchissement Notez la valeur de et enregistrez-la.

Obtenir des données avec Python

Le codage Python a été effectué sur Jupyter.

Parce qu'il utilise la bibliothèque python-fitbit

Terminal


pip install fitbit

Je le ferai. python-fitbit GitHub Explication de python-fitbit

L'acquisition des données


import fitbit
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

#ID etc. que vous avez noté
CLIENT_ID =  "XXXXXXXXXXXXXXXXXXXXXXX"
CLIENT_SECRET  = "XXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN =  "XXXXXXXXXXXXXXXXXXXXXXX"
REFRESH_TOKEN =  "XXXXXXXXXXXXXXXXXXXXXXX"

#Date à laquelle vous souhaitez obtenir
DATE = "2017-01-31"

#Paramètres ID etc.
authd_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET
                             ,access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
#Obtenir la fréquence cardiaque (1 seconde unité)
data_sec = authd_client.intraday_time_series('activities/heart', DATE, detail_level='1sec') #'1sec', '1min', or '15min'
heart_sec = data_sec["activities-heart-intraday"]["dataset"]
heart_sec[:10]

Résultat de sortie


[{'time': '00:00:02', 'value': 56},
 {'time': '00:00:07', 'value': 55},
 {'time': '00:00:12', 'value': 54},
 {'time': '00:00:17', 'value': 54},
 {'time': '00:00:32', 'value': 54},
 {'time': '00:00:37', 'value': 56},
 {'time': '00:00:42', 'value': 55},
 {'time': '00:00:52', 'value': 58},
 {'time': '00:01:07', 'value': 58},
 {'time': '00:01:09', 'value': 57}]

J'ai une fréquence cardiaque! Je reçois des données pendant 24 heures à partir de minuit, mais je ne reçois pas de données toutes les secondes sans tout obtenir, mais je reçois plutôt moins de secondes.

En définissant l'argument "detail_level" sur "1min" et "15min", vous pouvez l'obtenir en unités de 1 ou 15 minutes.

Traiter les données et tracer

Convertir les données de type dict en blocs de données


heart_df = pd.DataFrame.from_dict(heart_sec)
print(heart_df.shape)
heart_df.head()
スクリーンショット 2017-02-02 0.30.25.png

From_dict est très pratique car il convertit les données de type dict en dataframe en un seul coup.

index des données de séries chronologiques


heart_df.index = pd.to_datetime([DATE + " " + t for t in heart_df.time])
heart_df.head()
スクリーンショット 2017-02-02 0.34.26.png Convertissez l'index en données de série chronologique car il est facile à tracer. 1. 1. Créez une chaîne qui relie la date et l'heure avec la notation d'inclusion de liste 2. Convertissez la liste de chaînes en datetimeIndex avec to_datetime. 3. 3. Modifiez l'index du dataframe.

complot de pandas

plot


heart_df.plot(y="value", figsize=(20,5))
heart_df.head()

0JblsRxM2NAAAAAAElFTkSuQmCC.png

Votre fréquence cardiaque est faible pendant le sommeil de 1h30 à 8h00. Eh bien, l'analyse revient!

conseillé

"Pot Kimuchi où vous pouvez manger la moitié des légumes dont vous avez besoin en une journée" @ Seven Eleven

Recommended Posts

Obtenez votre fréquence cardiaque à partir de l'API fitbit en Python!
Enregistrez votre fréquence cardiaque sur des feuilles de calcul en temps réel (?) En utilisant Python x fitbit API!
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Mettez le taux de change obtenu à partir de l'API REST Oanda en Python dans MongoDB
Obtenir l'API arXiv en Python
Obtenir des données de Quandl en Python
Frappez l'API Sesami en Python
Obtenez le chemin du bureau en Python
Obtenez le chemin du script en Python
Obtenez la valeur tout en spécifiant la valeur par défaut de dict en Python
Accédez à l'API Web en Python
Utilisez l'API Flickr de Python
python Obtenez la météo à venir de l'API météo
Obtenez le chemin du bureau en Python
Obtenez le nom d'hôte en Python
Accéder à l'API Twitter avec Python
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Accédez à l'API New Relic en Python pour obtenir l'état du serveur
Obtenez des taux de change à partir des taux de change ouverts en Python
Essayez d'utiliser l'API Kraken avec Python
Tweet à l'aide de l'API Twitter en Python
Obtenez les données de l'API Google Fit en Python
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Obtenez le niveau de la batterie de SwitchBot avec Python
Obtenir la liste de codes EDINET en Python
Obtenez la probabilité de précipitation de XML avec Python
[Python] Obtenez la couleur principale de la capture d'écran
Obtenir l'historique des métriques de MLflow en Python
Obtenez votre propre adresse IP en Python
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Obtenez des données de séries chronologiques de k-db.com avec Python
Récupérer le contenu de git diff depuis python
[Python] Récupérez les fichiers dans le dossier avec Python
Obtenez la météo à Osaka via l'API Web (python)
Récupérer l'appelant d'une fonction en Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Obtenir l'URL de l'image à l'aide de l'API Flickr en Python
Conseils pour accéder à l'API ATND avec Python
Obtenez le titre de la fenêtre du système X Window en Python
Utilisez Python dans votre environnement depuis Win Automation
Comment obtenir les fichiers dans le dossier [Python]
Accédez à l'API Firebase Dynamic Links en Python
Obtenez uniquement des articles de pages Web en Python
Essayez d'accéder à l'API YQL directement depuis Python 3
Essayez d'utiliser l'API DropBox Core avec Python
Obtenez des utilisateurs appartenant à votre organisation à partir de l'API Garoon REST avec les requêtes Python +
API Evernote en Python
Obtenir la date en Python
API C en Python 3
Comment obtenir le nom de la variable lui-même en python
Traduire de Visual Studio 2017 vers Python (API Microsoft Translator Text)
Comment obtenir le nombre de chiffres en Python
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
[Python] Obtenez les nombres dans l'image graphique avec OCR
Affiche l'heure à partir du moment où le programme a été lancé en python
[python] Récupère la liste des classes définies dans le module
Obtenez des données LEAD à l'aide de l'API REST de Marketo en Python
Obtenir le calendrier de l'API Garoon SOAP avec Python + Zeep
Obtenez des données du module GPS à 10 Hz avec Python
Récupérer le code retour d'un script Python depuis bat