Aus irgendeinem Grund habe ich kürzlich das beliebte tragbare Terminal Fitbit Charge2 bekommen, also würde ich gerne damit spielen. Da fitbit über eine offizielle API verfügt, werden wir diese verwenden, um die Herzfrequenz in Python zu ermitteln und grafisch darzustellen.
【Umgebung】 ・ OS X EL Capitan ・ Python 3.5.2
Holen Sie sich die für die API erforderliche ID usw.
Melden Sie sich mit Ihrem Fitbit-Konto bei https://dev.fitbit.com/login an und erstellen Sie eine neue Anwendung auf der Registerkarte ** ANMELDEN EINER APP *.
Artikelname | Inhalt |
---|---|
Application Name | Anwendungsname(geeignet) |
Description | Anwendungsbeschreibung(geeignet) |
Application Website | Anwendungs-URL(geeignet) |
Organization | Zugehörigkeitsorganisation |
Organization Website | URL Ihrer Organisation |
OAuth 2.0 Application Type | App-Typ(Wählen Sie Client oder Personal) |
Callback URL | http://127.0.0.1:8080/Eingeben |
Default Access Type | Da die Daten hier nicht geändert werden, lesen Sie-Wählen Sie Nur |
Wenn Sie die Anwendung erstellen, können Sie die (OAuth 2.0) Client-ID und das Client-Geheimnis von ** MANAGE MY APPS ** abrufen. Notieren Sie sich dies.
Öffnen Sie die Seite ** Anwendungseinstellungen bearbeiten ** unter * MEINE APPS VERWALTEN * und setzen Sie den OAuth 2.0-Anwendungstyp auf Persönlich. Wenn Sie Zeitreihendaten wie Minuten abrufen möchten, müssen Sie diese auf Persönlich setzen. (Referenz: https://dev.fitbit.com/build/reference/web-api/activity/)
Von hier aus ist es etwas mühsam. Starten Sie das Terminal. Wechseln Sie in ein geeignetes Verzeichnis, kopieren Sie den folgenden Befehl und führen Sie ihn auf dem Terminal aus.
Terminal
git clone https://github.com/orcasgit/python-fitbit.git
Verwendung des Terminals hier Wenn Sie mit dem Befehl git [hier] eine Fehlermeldung erhalten (http://qiita.com/furusin_oriver/items/974a7b7fb8c56ad88d6e)
Kopieren Sie anschließend den folgenden Befehl, fügen Sie ihn in das Terminal ein und führen Sie ihn aus. Ersetzen Sie [OAuth 2.0 Client ID] und [Client Secret] durch die zuvor erhaltenen Werte.
python-fitbit/gather_keys_oauth2.py 【OAuth 2.0 Client ID】 【Client Secret】
Dann startet der Browser und Da ein solcher Authentifizierungsbildschirm angezeigt wird, überprüfen Sie die erforderlichen Elemente und [Zulassen](ich habe vorerst alle überprüft).
Wenn Sie zum Terminal zurückkehren,
Terminal
access_token = XXXXXXXXXXXXXXXXXXXXXX
refresh_token == YYYYYYYYYYYYYYYYYYYYYYYYY
Wird angezeigt, notieren Sie sich dies. Erhalten · Kunden ID ・ Kundengeheimnis ・ Arsch und Ken ・ Token aktualisieren Notieren Sie sich den Wert von und speichern Sie ihn.
Die Python-Codierung erfolgte unter Jupyter.
Weil es die Python-Fitbit-Bibliothek verwendet
Terminal
pip install fitbit
Ich werde das machen. python-fitbit GitHub Erklärung von Python-Fitbit
Datenerfassung
import fitbit
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
#ID usw., die Sie aufgeschrieben haben
CLIENT_ID = "XXXXXXXXXXXXXXXXXXXXXXX"
CLIENT_SECRET = "XXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX"
REFRESH_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX"
#Datum, das Sie erhalten möchten
DATE = "2017-01-31"
#ID usw. Einstellungen
authd_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET
,access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
#Holen Sie sich die Herzfrequenz (1 Sekunde Einheit)
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]
Ausgabeergebnis
[{'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}]
Ich habe eine Herzfrequenz! Ich erhalte ab Mitternacht 24 Stunden lang Daten, aber ich erhalte nicht jede Sekunde Daten, ohne alles zu erhalten, sondern weniger Sekunden.
Wenn Sie das Argument detail_level auf "1min" und "15min" setzen, können Sie es in Einheiten von 1 Minute oder 15 Minuten abrufen.
Konvertieren Sie Daten vom Typ dikt in Datenrahmen
heart_df = pd.DataFrame.from_dict(heart_sec)
print(heart_df.shape)
heart_df.head()
From_dict ist sehr praktisch, da es Daten vom Typ "dict" auf einmal in einen Datenrahmen konvertiert.
Index zu Zeitreihendaten
heart_df.index = pd.to_datetime([DATE + " " + t for t in heart_df.time])
heart_df.head()
Konvertieren Sie den Index in Zeitreihendaten, da die Darstellung einfach ist.
1. 1. Erstellen Sie eine Zeichenfolge, die Datum und Uhrzeit mit der Listeneinschlussnotation verbindet
2. Konvertieren Sie die Zeichenfolgenliste mit to_datetime in datetimeIndex.
3. 3. Ändern Sie den Index des Datenrahmens.
plot
heart_df.plot(y="value", figsize=(20,5))
heart_df.head()
Ihre Herzfrequenz ist im Schlaf von 1:30 bis 8:00 Uhr niedrig. Nun, die Analyse kommt wieder!
"Kimuchi-Topf, in dem Sie die Hälfte des Gemüses essen können, das Sie an einem Tag benötigen" @ Seven Eleven
Recommended Posts