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
Obtenez l'ID etc. requis pour l'API
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 |
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.
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. 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/)
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 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.
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.
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()
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()
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.
plot
heart_df.plot(y="value", figsize=(20,5))
heart_df.head()
Votre fréquence cardiaque est faible pendant le sommeil de 1h30 à 8h00. Eh bien, l'analyse revient!
"Pot Kimuchi où vous pouvez manger la moitié des légumes dont vous avez besoin en une journée" @ Seven Eleven
Recommended Posts