Use python-fitbit
to interact with the Fitbit API and download sleep data. Convert data to pandas dataframe and write to disk.
In [1]:
import fitbit
import os
import pandas as pd
from tqdm import tqdm
from dotenv import load_dotenv, find_dotenv
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set_context('poster')
In [51]:
# find .env automagically by walking up directories until it's found
dotenv_path = find_dotenv()
# load up the entries as environment variables
load_dotenv(dotenv_path)
client_id = os.environ.get("CLIENT_ID")
client_secret = os.environ.get("CLIENT_SECRET")
access_token = os.environ.get("ACCESS_TOKEN")
refresh_token = os.environ.get("REFRESH_TOKEN")
expires_at = float(os.environ.get("EXPIRES_AT"))
In [53]:
authd_client = fitbit.Fitbit(client_id, client_secret, access_token=access_token,
refresh_token=refresh_token, expires_at=expires_at)
In [8]:
sleep_logs = []
rate_limit = 145
datetimes = pd.date_range('2016-11-09', '2017-07-31', freq='1D')
for datetime in tqdm(datetimes[:rate_limit]):
sleep_log = authd_client.get_sleep(datetime)
sleep_logs.append(sleep_log)
100%|██████████| 145/145 [00:30<00:00, 6.03it/s]
In [10]:
for datetime in tqdm(datetimes[rate_limit:]):
sleep_log = authd_client.get_sleep(datetime)
sleep_logs.append(sleep_log)
0%| | 0/120 [00:00<?, ?it/s]
1%| | 1/120 [00:00<00:42, 2.77it/s]
2%|▏ | 2/120 [00:00<00:40, 2.93it/s]
100%|██████████| 120/120 [00:30<00:00, 6.62it/s]
In [11]:
len(sleep_logs)
Out[11]:
265
In [12]:
sleep_logs[-1]
Out[12]:
{'sleep': [{'awakeCount': 2,
'awakeDuration': 3,
'awakeningsCount': 10,
'dateOfSleep': '2017-07-31',
'duration': 26940000,
'efficiency': 93,
'endTime': '2017-07-31T06:28:30.000',
'isMainSleep': True,
'logId': 15376396496,
'minuteData': [{'dateTime': '22:59:30', 'value': '1'},
{'dateTime': '23:00:30', 'value': '1'},
{'dateTime': '23:01:30', 'value': '1'},
{'dateTime': '23:02:30', 'value': '1'},
{'dateTime': '23:03:30', 'value': '1'},
{'dateTime': '23:04:30', 'value': '1'},
{'dateTime': '23:05:30', 'value': '1'},
{'dateTime': '23:06:30', 'value': '1'},
{'dateTime': '23:07:30', 'value': '1'},
{'dateTime': '23:08:30', 'value': '1'},
{'dateTime': '23:09:30', 'value': '1'},
{'dateTime': '23:10:30', 'value': '1'},
{'dateTime': '23:11:30', 'value': '1'},
{'dateTime': '23:12:30', 'value': '1'},
{'dateTime': '23:13:30', 'value': '1'},
{'dateTime': '23:14:30', 'value': '1'},
{'dateTime': '23:15:30', 'value': '1'},
{'dateTime': '23:16:30', 'value': '1'},
{'dateTime': '23:17:30', 'value': '1'},
{'dateTime': '23:18:30', 'value': '1'},
{'dateTime': '23:19:30', 'value': '1'},
{'dateTime': '23:20:30', 'value': '1'},
{'dateTime': '23:21:30', 'value': '1'},
{'dateTime': '23:22:30', 'value': '1'},
{'dateTime': '23:23:30', 'value': '1'},
{'dateTime': '23:24:30', 'value': '1'},
{'dateTime': '23:25:30', 'value': '1'},
{'dateTime': '23:26:30', 'value': '1'},
{'dateTime': '23:27:30', 'value': '1'},
{'dateTime': '23:28:30', 'value': '1'},
{'dateTime': '23:29:30', 'value': '1'},
{'dateTime': '23:30:30', 'value': '1'},
{'dateTime': '23:31:30', 'value': '1'},
{'dateTime': '23:32:30', 'value': '1'},
{'dateTime': '23:33:30', 'value': '1'},
{'dateTime': '23:34:30', 'value': '1'},
{'dateTime': '23:35:30', 'value': '1'},
{'dateTime': '23:36:30', 'value': '1'},
{'dateTime': '23:37:30', 'value': '1'},
{'dateTime': '23:38:30', 'value': '1'},
{'dateTime': '23:39:30', 'value': '1'},
{'dateTime': '23:40:30', 'value': '1'},
{'dateTime': '23:41:30', 'value': '1'},
{'dateTime': '23:42:30', 'value': '1'},
{'dateTime': '23:43:30', 'value': '1'},
{'dateTime': '23:44:30', 'value': '1'},
{'dateTime': '23:45:30', 'value': '1'},
{'dateTime': '23:46:30', 'value': '1'},
{'dateTime': '23:47:30', 'value': '1'},
{'dateTime': '23:48:30', 'value': '1'},
{'dateTime': '23:49:30', 'value': '1'},
{'dateTime': '23:50:30', 'value': '1'},
{'dateTime': '23:51:30', 'value': '1'},
{'dateTime': '23:52:30', 'value': '1'},
{'dateTime': '23:53:30', 'value': '1'},
{'dateTime': '23:54:30', 'value': '1'},
{'dateTime': '23:55:30', 'value': '1'},
{'dateTime': '23:56:30', 'value': '1'},
{'dateTime': '23:57:30', 'value': '1'},
{'dateTime': '23:58:30', 'value': '1'},
{'dateTime': '23:59:30', 'value': '1'},
{'dateTime': '00:00:30', 'value': '1'},
{'dateTime': '00:01:30', 'value': '1'},
{'dateTime': '00:02:30', 'value': '1'},
{'dateTime': '00:03:30', 'value': '1'},
{'dateTime': '00:04:30', 'value': '1'},
{'dateTime': '00:05:30', 'value': '1'},
{'dateTime': '00:06:30', 'value': '1'},
{'dateTime': '00:07:30', 'value': '1'},
{'dateTime': '00:08:30', 'value': '1'},
{'dateTime': '00:09:30', 'value': '1'},
{'dateTime': '00:10:30', 'value': '1'},
{'dateTime': '00:11:30', 'value': '1'},
{'dateTime': '00:12:30', 'value': '1'},
{'dateTime': '00:13:30', 'value': '1'},
{'dateTime': '00:14:30', 'value': '1'},
{'dateTime': '00:15:30', 'value': '1'},
{'dateTime': '00:16:30', 'value': '1'},
{'dateTime': '00:17:30', 'value': '1'},
{'dateTime': '00:18:30', 'value': '1'},
{'dateTime': '00:19:30', 'value': '1'},
{'dateTime': '00:20:30', 'value': '1'},
{'dateTime': '00:21:30', 'value': '1'},
{'dateTime': '00:22:30', 'value': '1'},
{'dateTime': '00:23:30', 'value': '1'},
{'dateTime': '00:24:30', 'value': '1'},
{'dateTime': '00:25:30', 'value': '1'},
{'dateTime': '00:26:30', 'value': '1'},
{'dateTime': '00:27:30', 'value': '1'},
{'dateTime': '00:28:30', 'value': '1'},
{'dateTime': '00:29:30', 'value': '1'},
{'dateTime': '00:30:30', 'value': '1'},
{'dateTime': '00:31:30', 'value': '1'},
{'dateTime': '00:32:30', 'value': '1'},
{'dateTime': '00:33:30', 'value': '1'},
{'dateTime': '00:34:30', 'value': '1'},
{'dateTime': '00:35:30', 'value': '1'},
{'dateTime': '00:36:30', 'value': '1'},
{'dateTime': '00:37:30', 'value': '1'},
{'dateTime': '00:38:30', 'value': '1'},
{'dateTime': '00:39:30', 'value': '1'},
{'dateTime': '00:40:30', 'value': '1'},
{'dateTime': '00:41:30', 'value': '1'},
{'dateTime': '00:42:30', 'value': '1'},
{'dateTime': '00:43:30', 'value': '1'},
{'dateTime': '00:44:30', 'value': '2'},
{'dateTime': '00:45:30', 'value': '2'},
{'dateTime': '00:46:30', 'value': '2'},
{'dateTime': '00:47:30', 'value': '1'},
{'dateTime': '00:48:30', 'value': '1'},
{'dateTime': '00:49:30', 'value': '1'},
{'dateTime': '00:50:30', 'value': '1'},
{'dateTime': '00:51:30', 'value': '1'},
{'dateTime': '00:52:30', 'value': '1'},
{'dateTime': '00:53:30', 'value': '1'},
{'dateTime': '00:54:30', 'value': '1'},
{'dateTime': '00:55:30', 'value': '1'},
{'dateTime': '00:56:30', 'value': '1'},
{'dateTime': '00:57:30', 'value': '1'},
{'dateTime': '00:58:30', 'value': '1'},
{'dateTime': '00:59:30', 'value': '1'},
{'dateTime': '01:00:30', 'value': '1'},
{'dateTime': '01:01:30', 'value': '1'},
{'dateTime': '01:02:30', 'value': '1'},
{'dateTime': '01:03:30', 'value': '1'},
{'dateTime': '01:04:30', 'value': '1'},
{'dateTime': '01:05:30', 'value': '1'},
{'dateTime': '01:06:30', 'value': '1'},
{'dateTime': '01:07:30', 'value': '1'},
{'dateTime': '01:08:30', 'value': '1'},
{'dateTime': '01:09:30', 'value': '1'},
{'dateTime': '01:10:30', 'value': '1'},
{'dateTime': '01:11:30', 'value': '1'},
{'dateTime': '01:12:30', 'value': '1'},
{'dateTime': '01:13:30', 'value': '1'},
{'dateTime': '01:14:30', 'value': '1'},
{'dateTime': '01:15:30', 'value': '1'},
{'dateTime': '01:16:30', 'value': '1'},
{'dateTime': '01:17:30', 'value': '1'},
{'dateTime': '01:18:30', 'value': '1'},
{'dateTime': '01:19:30', 'value': '1'},
{'dateTime': '01:20:30', 'value': '1'},
{'dateTime': '01:21:30', 'value': '1'},
{'dateTime': '01:22:30', 'value': '1'},
{'dateTime': '01:23:30', 'value': '1'},
{'dateTime': '01:24:30', 'value': '1'},
{'dateTime': '01:25:30', 'value': '1'},
{'dateTime': '01:26:30', 'value': '1'},
{'dateTime': '01:27:30', 'value': '1'},
{'dateTime': '01:28:30', 'value': '1'},
{'dateTime': '01:29:30', 'value': '1'},
{'dateTime': '01:30:30', 'value': '1'},
{'dateTime': '01:31:30', 'value': '1'},
{'dateTime': '01:32:30', 'value': '1'},
{'dateTime': '01:33:30', 'value': '1'},
{'dateTime': '01:34:30', 'value': '1'},
{'dateTime': '01:35:30', 'value': '1'},
{'dateTime': '01:36:30', 'value': '1'},
{'dateTime': '01:37:30', 'value': '1'},
{'dateTime': '01:38:30', 'value': '1'},
{'dateTime': '01:39:30', 'value': '1'},
{'dateTime': '01:40:30', 'value': '1'},
{'dateTime': '01:41:30', 'value': '1'},
{'dateTime': '01:42:30', 'value': '3'},
{'dateTime': '01:43:30', 'value': '1'},
{'dateTime': '01:44:30', 'value': '1'},
{'dateTime': '01:45:30', 'value': '1'},
{'dateTime': '01:46:30', 'value': '1'},
{'dateTime': '01:47:30', 'value': '1'},
{'dateTime': '01:48:30', 'value': '1'},
{'dateTime': '01:49:30', 'value': '1'},
{'dateTime': '01:50:30', 'value': '1'},
{'dateTime': '01:51:30', 'value': '1'},
{'dateTime': '01:52:30', 'value': '1'},
{'dateTime': '01:53:30', 'value': '1'},
{'dateTime': '01:54:30', 'value': '1'},
{'dateTime': '01:55:30', 'value': '1'},
{'dateTime': '01:56:30', 'value': '1'},
{'dateTime': '01:57:30', 'value': '1'},
{'dateTime': '01:58:30', 'value': '1'},
{'dateTime': '01:59:30', 'value': '1'},
{'dateTime': '02:00:30', 'value': '1'},
{'dateTime': '02:01:30', 'value': '1'},
{'dateTime': '02:02:30', 'value': '1'},
{'dateTime': '02:03:30', 'value': '1'},
{'dateTime': '02:04:30', 'value': '1'},
{'dateTime': '02:05:30', 'value': '1'},
{'dateTime': '02:06:30', 'value': '1'},
{'dateTime': '02:07:30', 'value': '1'},
{'dateTime': '02:08:30', 'value': '1'},
{'dateTime': '02:09:30', 'value': '1'},
{'dateTime': '02:10:30', 'value': '1'},
{'dateTime': '02:11:30', 'value': '1'},
{'dateTime': '02:12:30', 'value': '1'},
{'dateTime': '02:13:30', 'value': '1'},
{'dateTime': '02:14:30', 'value': '1'},
{'dateTime': '02:15:30', 'value': '1'},
{'dateTime': '02:16:30', 'value': '1'},
{'dateTime': '02:17:30', 'value': '1'},
{'dateTime': '02:18:30', 'value': '1'},
{'dateTime': '02:19:30', 'value': '1'},
{'dateTime': '02:20:30', 'value': '1'},
{'dateTime': '02:21:30', 'value': '1'},
{'dateTime': '02:22:30', 'value': '1'},
{'dateTime': '02:23:30', 'value': '1'},
{'dateTime': '02:24:30', 'value': '1'},
{'dateTime': '02:25:30', 'value': '1'},
{'dateTime': '02:26:30', 'value': '1'},
{'dateTime': '02:27:30', 'value': '1'},
{'dateTime': '02:28:30', 'value': '1'},
{'dateTime': '02:29:30', 'value': '1'},
{'dateTime': '02:30:30', 'value': '1'},
{'dateTime': '02:31:30', 'value': '1'},
{'dateTime': '02:32:30', 'value': '1'},
{'dateTime': '02:33:30', 'value': '1'},
{'dateTime': '02:34:30', 'value': '1'},
{'dateTime': '02:35:30', 'value': '1'},
{'dateTime': '02:36:30', 'value': '1'},
{'dateTime': '02:37:30', 'value': '1'},
{'dateTime': '02:38:30', 'value': '1'},
{'dateTime': '02:39:30', 'value': '1'},
{'dateTime': '02:40:30', 'value': '1'},
{'dateTime': '02:41:30', 'value': '1'},
{'dateTime': '02:42:30', 'value': '1'},
{'dateTime': '02:43:30', 'value': '1'},
{'dateTime': '02:44:30', 'value': '1'},
{'dateTime': '02:45:30', 'value': '1'},
{'dateTime': '02:46:30', 'value': '1'},
{'dateTime': '02:47:30', 'value': '1'},
{'dateTime': '02:48:30', 'value': '1'},
{'dateTime': '02:49:30', 'value': '1'},
{'dateTime': '02:50:30', 'value': '1'},
{'dateTime': '02:51:30', 'value': '1'},
{'dateTime': '02:52:30', 'value': '1'},
{'dateTime': '02:53:30', 'value': '1'},
{'dateTime': '02:54:30', 'value': '1'},
{'dateTime': '02:55:30', 'value': '1'},
{'dateTime': '02:56:30', 'value': '1'},
{'dateTime': '02:57:30', 'value': '1'},
{'dateTime': '02:58:30', 'value': '1'},
{'dateTime': '02:59:30', 'value': '1'},
{'dateTime': '03:00:30', 'value': '1'},
{'dateTime': '03:01:30', 'value': '1'},
{'dateTime': '03:02:30', 'value': '1'},
{'dateTime': '03:03:30', 'value': '1'},
{'dateTime': '03:04:30', 'value': '1'},
{'dateTime': '03:05:30', 'value': '1'},
{'dateTime': '03:06:30', 'value': '1'},
{'dateTime': '03:07:30', 'value': '1'},
{'dateTime': '03:08:30', 'value': '1'},
{'dateTime': '03:09:30', 'value': '1'},
{'dateTime': '03:10:30', 'value': '1'},
{'dateTime': '03:11:30', 'value': '1'},
{'dateTime': '03:12:30', 'value': '1'},
{'dateTime': '03:13:30', 'value': '1'},
{'dateTime': '03:14:30', 'value': '1'},
{'dateTime': '03:15:30', 'value': '1'},
{'dateTime': '03:16:30', 'value': '1'},
{'dateTime': '03:17:30', 'value': '1'},
{'dateTime': '03:18:30', 'value': '1'},
{'dateTime': '03:19:30', 'value': '1'},
{'dateTime': '03:20:30', 'value': '1'},
{'dateTime': '03:21:30', 'value': '1'},
{'dateTime': '03:22:30', 'value': '1'},
{'dateTime': '03:23:30', 'value': '1'},
{'dateTime': '03:24:30', 'value': '1'},
{'dateTime': '03:25:30', 'value': '1'},
{'dateTime': '03:26:30', 'value': '1'},
{'dateTime': '03:27:30', 'value': '1'},
{'dateTime': '03:28:30', 'value': '1'},
{'dateTime': '03:29:30', 'value': '1'},
{'dateTime': '03:30:30', 'value': '1'},
{'dateTime': '03:31:30', 'value': '1'},
{'dateTime': '03:32:30', 'value': '1'},
{'dateTime': '03:33:30', 'value': '1'},
{'dateTime': '03:34:30', 'value': '1'},
{'dateTime': '03:35:30', 'value': '1'},
{'dateTime': '03:36:30', 'value': '1'},
{'dateTime': '03:37:30', 'value': '1'},
{'dateTime': '03:38:30', 'value': '2'},
{'dateTime': '03:39:30', 'value': '2'},
{'dateTime': '03:40:30', 'value': '2'},
{'dateTime': '03:41:30', 'value': '2'},
{'dateTime': '03:42:30', 'value': '1'},
{'dateTime': '03:43:30', 'value': '1'},
{'dateTime': '03:44:30', 'value': '1'},
{'dateTime': '03:45:30', 'value': '1'},
{'dateTime': '03:46:30', 'value': '1'},
{'dateTime': '03:47:30', 'value': '1'},
{'dateTime': '03:48:30', 'value': '1'},
{'dateTime': '03:49:30', 'value': '1'},
{'dateTime': '03:50:30', 'value': '1'},
{'dateTime': '03:51:30', 'value': '1'},
{'dateTime': '03:52:30', 'value': '1'},
{'dateTime': '03:53:30', 'value': '1'},
{'dateTime': '03:54:30', 'value': '1'},
{'dateTime': '03:55:30', 'value': '1'},
{'dateTime': '03:56:30', 'value': '1'},
{'dateTime': '03:57:30', 'value': '1'},
{'dateTime': '03:58:30', 'value': '1'},
{'dateTime': '03:59:30', 'value': '1'},
{'dateTime': '04:00:30', 'value': '1'},
{'dateTime': '04:01:30', 'value': '1'},
{'dateTime': '04:02:30', 'value': '1'},
{'dateTime': '04:03:30', 'value': '1'},
{'dateTime': '04:04:30', 'value': '1'},
{'dateTime': '04:05:30', 'value': '1'},
{'dateTime': '04:06:30', 'value': '1'},
{'dateTime': '04:07:30', 'value': '1'},
{'dateTime': '04:08:30', 'value': '1'},
{'dateTime': '04:09:30', 'value': '1'},
{'dateTime': '04:10:30', 'value': '1'},
{'dateTime': '04:11:30', 'value': '2'},
{'dateTime': '04:12:30', 'value': '2'},
{'dateTime': '04:13:30', 'value': '2'},
{'dateTime': '04:14:30', 'value': '1'},
{'dateTime': '04:15:30', 'value': '1'},
{'dateTime': '04:16:30', 'value': '1'},
{'dateTime': '04:17:30', 'value': '1'},
{'dateTime': '04:18:30', 'value': '1'},
{'dateTime': '04:19:30', 'value': '1'},
{'dateTime': '04:20:30', 'value': '1'},
{'dateTime': '04:21:30', 'value': '1'},
{'dateTime': '04:22:30', 'value': '1'},
{'dateTime': '04:23:30', 'value': '1'},
{'dateTime': '04:24:30', 'value': '1'},
{'dateTime': '04:25:30', 'value': '1'},
{'dateTime': '04:26:30', 'value': '1'},
{'dateTime': '04:27:30', 'value': '1'},
{'dateTime': '04:28:30', 'value': '1'},
{'dateTime': '04:29:30', 'value': '1'},
{'dateTime': '04:30:30', 'value': '1'},
{'dateTime': '04:31:30', 'value': '1'},
{'dateTime': '04:32:30', 'value': '1'},
{'dateTime': '04:33:30', 'value': '1'},
{'dateTime': '04:34:30', 'value': '1'},
{'dateTime': '04:35:30', 'value': '1'},
{'dateTime': '04:36:30', 'value': '1'},
{'dateTime': '04:37:30', 'value': '2'},
{'dateTime': '04:38:30', 'value': '2'},
{'dateTime': '04:39:30', 'value': '2'},
{'dateTime': '04:40:30', 'value': '2'},
{'dateTime': '04:41:30', 'value': '2'},
{'dateTime': '04:42:30', 'value': '2'},
{'dateTime': '04:43:30', 'value': '2'},
{'dateTime': '04:44:30', 'value': '2'},
{'dateTime': '04:45:30', 'value': '2'},
{'dateTime': '04:46:30', 'value': '2'},
{'dateTime': '04:47:30', 'value': '2'},
{'dateTime': '04:48:30', 'value': '1'},
{'dateTime': '04:49:30', 'value': '1'},
{'dateTime': '04:50:30', 'value': '2'},
{'dateTime': '04:51:30', 'value': '2'},
{'dateTime': '04:52:30', 'value': '2'},
{'dateTime': '04:53:30', 'value': '2'},
{'dateTime': '04:54:30', 'value': '3'},
{'dateTime': '04:55:30', 'value': '3'},
{'dateTime': '04:56:30', 'value': '1'},
{'dateTime': '04:57:30', 'value': '1'},
{'dateTime': '04:58:30', 'value': '1'},
{'dateTime': '04:59:30', 'value': '2'},
{'dateTime': '05:00:30', 'value': '2'},
{'dateTime': '05:01:30', 'value': '1'},
{'dateTime': '05:02:30', 'value': '1'},
{'dateTime': '05:03:30', 'value': '1'},
{'dateTime': '05:04:30', 'value': '1'},
{'dateTime': '05:05:30', 'value': '1'},
{'dateTime': '05:06:30', 'value': '1'},
{'dateTime': '05:07:30', 'value': '1'},
{'dateTime': '05:08:30', 'value': '1'},
{'dateTime': '05:09:30', 'value': '1'},
{'dateTime': '05:10:30', 'value': '1'},
{'dateTime': '05:11:30', 'value': '1'},
{'dateTime': '05:12:30', 'value': '1'},
{'dateTime': '05:13:30', 'value': '1'},
{'dateTime': '05:14:30', 'value': '1'},
{'dateTime': '05:15:30', 'value': '1'},
{'dateTime': '05:16:30', 'value': '1'},
{'dateTime': '05:17:30', 'value': '1'},
{'dateTime': '05:18:30', 'value': '1'},
{'dateTime': '05:19:30', 'value': '1'},
{'dateTime': '05:20:30', 'value': '1'},
{'dateTime': '05:21:30', 'value': '1'},
{'dateTime': '05:22:30', 'value': '1'},
{'dateTime': '05:23:30', 'value': '1'},
{'dateTime': '05:24:30', 'value': '1'},
{'dateTime': '05:25:30', 'value': '1'},
{'dateTime': '05:26:30', 'value': '1'},
{'dateTime': '05:27:30', 'value': '1'},
{'dateTime': '05:28:30', 'value': '1'},
{'dateTime': '05:29:30', 'value': '1'},
{'dateTime': '05:30:30', 'value': '1'},
{'dateTime': '05:31:30', 'value': '1'},
{'dateTime': '05:32:30', 'value': '1'},
{'dateTime': '05:33:30', 'value': '1'},
{'dateTime': '05:34:30', 'value': '1'},
{'dateTime': '05:35:30', 'value': '1'},
{'dateTime': '05:36:30', 'value': '1'},
{'dateTime': '05:37:30', 'value': '1'},
{'dateTime': '05:38:30', 'value': '1'},
{'dateTime': '05:39:30', 'value': '1'},
{'dateTime': '05:40:30', 'value': '1'},
{'dateTime': '05:41:30', 'value': '1'},
{'dateTime': '05:42:30', 'value': '1'},
{'dateTime': '05:43:30', 'value': '1'},
{'dateTime': '05:44:30', 'value': '1'},
{'dateTime': '05:45:30', 'value': '1'},
{'dateTime': '05:46:30', 'value': '1'},
{'dateTime': '05:47:30', 'value': '1'},
{'dateTime': '05:48:30', 'value': '1'},
{'dateTime': '05:49:30', 'value': '1'},
{'dateTime': '05:50:30', 'value': '1'},
{'dateTime': '05:51:30', 'value': '1'},
{'dateTime': '05:52:30', 'value': '1'},
{'dateTime': '05:53:30', 'value': '1'},
{'dateTime': '05:54:30', 'value': '1'},
{'dateTime': '05:55:30', 'value': '1'},
{'dateTime': '05:56:30', 'value': '1'},
{'dateTime': '05:57:30', 'value': '1'},
{'dateTime': '05:58:30', 'value': '1'},
{'dateTime': '05:59:30', 'value': '1'},
{'dateTime': '06:00:30', 'value': '1'},
{'dateTime': '06:01:30', 'value': '1'},
{'dateTime': '06:02:30', 'value': '1'},
{'dateTime': '06:03:30', 'value': '1'},
{'dateTime': '06:04:30', 'value': '1'},
{'dateTime': '06:05:30', 'value': '1'},
{'dateTime': '06:06:30', 'value': '1'},
{'dateTime': '06:07:30', 'value': '2'},
{'dateTime': '06:08:30', 'value': '2'},
{'dateTime': '06:09:30', 'value': '1'},
{'dateTime': '06:10:30', 'value': '1'},
{'dateTime': '06:11:30', 'value': '1'},
{'dateTime': '06:12:30', 'value': '1'},
{'dateTime': '06:13:30', 'value': '1'},
{'dateTime': '06:14:30', 'value': '1'},
{'dateTime': '06:15:30', 'value': '1'},
{'dateTime': '06:16:30', 'value': '1'},
{'dateTime': '06:17:30', 'value': '1'},
{'dateTime': '06:18:30', 'value': '1'},
{'dateTime': '06:19:30', 'value': '1'},
{'dateTime': '06:20:30', 'value': '1'},
{'dateTime': '06:21:30', 'value': '1'},
{'dateTime': '06:22:30', 'value': '1'},
{'dateTime': '06:23:30', 'value': '1'},
{'dateTime': '06:24:30', 'value': '1'},
{'dateTime': '06:25:30', 'value': '1'},
{'dateTime': '06:26:30', 'value': '1'},
{'dateTime': '06:27:30', 'value': '1'}],
'minutesAfterWakeup': 0,
'minutesAsleep': 415,
'minutesAwake': 32,
'minutesToFallAsleep': 0,
'restlessCount': 8,
'restlessDuration': 31,
'startTime': '2017-07-30T22:59:30.000',
'timeInBed': 449}],
'summary': {'totalMinutesAsleep': 415,
'totalSleepRecords': 1,
'totalTimeInBed': 449}}
In [13]:
sleep_keys = sleep_logs[-1]['sleep'][0].keys()
In [14]:
sleep_keys
Out[14]:
dict_keys(['awakeCount', 'awakeDuration', 'awakeningsCount', 'dateOfSleep', 'duration', 'efficiency', 'endTime', 'isMainSleep', 'logId', 'minuteData', 'minutesAfterWakeup', 'minutesAsleep', 'minutesAwake', 'minutesToFallAsleep', 'restlessCount', 'restlessDuration', 'startTime', 'timeInBed'])
In [17]:
trimmed_list = []
for sleep_log in sleep_logs:
for sleep_event in sleep_log['sleep']:
trim_dict = {}
key_list = sleep_event.keys()
for this_key in key_list:
if this_key != 'minuteData':
trim_dict[this_key] = sleep_event[this_key]
trimmed_list.append(trim_dict)
In [18]:
df_sleep = pd.DataFrame(trimmed_list)
In [19]:
df_sleep.head()
Out[19]:
awakeCount
awakeDuration
awakeningsCount
dateOfSleep
duration
efficiency
endTime
isMainSleep
logId
minutesAfterWakeup
minutesAsleep
minutesAwake
minutesToFallAsleep
restlessCount
restlessDuration
startTime
timeInBed
0
2
3
9
2016-11-09
12960000
93
2016-11-09T00:43:00.000
True
12964507801
0
201
15
0
7
12
2016-11-08T21:07:00.000
216
1
3
4
4
2016-11-09
5400000
94
2016-11-09T04:45:30.000
False
12965661277
0
85
5
0
1
1
2016-11-09T03:15:00.000
90
2
4
10
22
2016-11-10
27600000
92
2016-11-10T04:23:00.000
True
12972831606
1
417
35
7
18
33
2016-11-09T20:43:00.000
460
3
2
7
17
2016-11-11
22740000
92
2016-11-11T02:57:00.000
True
12980609652
2
348
29
0
15
24
2016-11-10T20:38:00.000
379
4
0
0
1
2016-11-11
4080000
91
2016-11-11T06:04:30.000
False
12981238387
0
62
6
0
1
6
2016-11-11T04:56:00.000
68
In [27]:
df_sleep.columns
Out[27]:
Index(['awakeCount', 'awakeDuration', 'awakeningsCount', 'dateOfSleep',
'duration', 'efficiency', 'endTime', 'isMainSleep', 'logId',
'minutesAfterWakeup', 'minutesAsleep', 'minutesAwake',
'minutesToFallAsleep', 'restlessCount', 'restlessDuration', 'startTime',
'timeInBed'],
dtype='object')
In [29]:
df_sleep['dateOfSleep'].head()
Out[29]:
start_datetime
2016-11-08 21:07:00 2016-11-09
2016-11-09 03:15:00 2016-11-09
2016-11-09 20:43:00 2016-11-10
2016-11-10 20:38:00 2016-11-11
2016-11-11 04:56:00 2016-11-11
Name: dateOfSleep, dtype: object
In [30]:
start_sleep = pd.to_datetime(df_sleep['startTime'])
df_sleep['start_datetime'] = start_sleep
# df_sleep = df_sleep.set_index('start_datetime')
Sum from 6pm to 6pm instead of midnight to midnight.
In [31]:
df_sleep['shifted_datetime'] = df_sleep['start_datetime'] - pd.Timedelta(hours=6)
df_sleep = df_sleep.set_index('shifted_datetime')
In [32]:
plt.plot(df_sleep['minutesAsleep'].resample('1D').sum()/60., '.')
Out[32]:
[<matplotlib.lines.Line2D at 0x115f1eb00>]
In [33]:
hours_sleep = df_sleep['minutesAsleep'].resample('1D').sum()/60.
In [34]:
hours_sleep.mean()
Out[34]:
6.819783715012723
In [35]:
hours_sleep.std()
Out[35]:
1.4052696224078365
In [41]:
os.getcwd()
Out[41]:
'/Users/rbussman/Projects/sleep-bit/notebooks'
In [42]:
data_path = os.path.join(os.getcwd(), os.pardir, 'data', 'interim', 'sleep_data.csv')
df_sleep.to_csv(data_path, index_label='shifted_datetime')
In [ ]:
Content source: sbussmann/sleep-bit
Similar notebooks: