1750 lines (1749 with data), 95.0 kB
{
"cells": [
{
"cell_type": "markdown",
"id": "c9cd40c6-9b57-4e4d-8f29-adb2513dcb96",
"metadata": {},
"source": [
"# Sleep Analytics"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "5a02e79e-f3d9-403b-be42-ecd064ffd2e6",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "4675804a-483b-4d14-99dd-7bc60d97658a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"User First Name object\n",
"Calendar Date (Local) datetime64[ns]\n",
"Start Time (Local) datetime64[ns]\n",
"End Time (Local) datetime64[ns]\n",
"Start Time (s) int64\n",
"Processing Time datetime64[ns]\n",
"Duration (s) int64\n",
"Rem Sleep Duration (s) int64\n",
"Deep Sleep Duration (s) int64\n",
"Light Sleep Duration (s) int64\n",
"Awake Duration (s) int64\n",
"Sleep Efficiency float64\n",
"Sleep Score Value float64\n",
"Sleep Score Qualifier object\n",
"Source object\n",
"SleepPhaseStartTimeSec int64\n",
"SleepPhaseEndTimeSec int64\n",
"SleepPhaseStartTime datetime64[ns]\n",
"SleepPhaseEndTime datetime64[ns]\n",
"SleepPhaseDuration int64\n",
"SleepLevel object\n",
"dtype: object\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>User First Name</th>\n",
" <th>Calendar Date (Local)</th>\n",
" <th>Start Time (Local)</th>\n",
" <th>End Time (Local)</th>\n",
" <th>Start Time (s)</th>\n",
" <th>Processing Time</th>\n",
" <th>Duration (s)</th>\n",
" <th>Rem Sleep Duration (s)</th>\n",
" <th>Deep Sleep Duration (s)</th>\n",
" <th>Light Sleep Duration (s)</th>\n",
" <th>...</th>\n",
" <th>Sleep Efficiency</th>\n",
" <th>Sleep Score Value</th>\n",
" <th>Sleep Score Qualifier</th>\n",
" <th>Source</th>\n",
" <th>SleepPhaseStartTimeSec</th>\n",
" <th>SleepPhaseEndTimeSec</th>\n",
" <th>SleepPhaseStartTime</th>\n",
" <th>SleepPhaseEndTime</th>\n",
" <th>SleepPhaseDuration</th>\n",
" <th>SleepLevel</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>P10</td>\n",
" <td>2023-12-22</td>\n",
" <td>2023-12-22 01:17:00</td>\n",
" <td>2023-12-22 09:03:00</td>\n",
" <td>1703204220</td>\n",
" <td>2023-12-23 09:51:08.503</td>\n",
" <td>27960</td>\n",
" <td>8400</td>\n",
" <td>3000</td>\n",
" <td>16560</td>\n",
" <td>...</td>\n",
" <td>1.000000</td>\n",
" <td>94.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1703204580</td>\n",
" <td>1703206800</td>\n",
" <td>2023-12-22 01:23:00</td>\n",
" <td>2023-12-22 02:00:00</td>\n",
" <td>2220</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>P10</td>\n",
" <td>2023-12-22</td>\n",
" <td>2023-12-22 01:17:00</td>\n",
" <td>2023-12-22 09:03:00</td>\n",
" <td>1703204220</td>\n",
" <td>2023-12-23 09:51:08.503</td>\n",
" <td>27960</td>\n",
" <td>8400</td>\n",
" <td>3000</td>\n",
" <td>16560</td>\n",
" <td>...</td>\n",
" <td>1.000000</td>\n",
" <td>94.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1703210520</td>\n",
" <td>1703211300</td>\n",
" <td>2023-12-22 03:02:00</td>\n",
" <td>2023-12-22 03:15:00</td>\n",
" <td>780</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>P10</td>\n",
" <td>2023-12-22</td>\n",
" <td>2023-12-22 01:17:00</td>\n",
" <td>2023-12-22 09:03:00</td>\n",
" <td>1703204220</td>\n",
" <td>2023-12-23 09:51:08.503</td>\n",
" <td>27960</td>\n",
" <td>8400</td>\n",
" <td>3000</td>\n",
" <td>16560</td>\n",
" <td>...</td>\n",
" <td>1.000000</td>\n",
" <td>94.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1703204220</td>\n",
" <td>1703204580</td>\n",
" <td>2023-12-22 01:17:00</td>\n",
" <td>2023-12-22 01:23:00</td>\n",
" <td>360</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>P10</td>\n",
" <td>2023-12-22</td>\n",
" <td>2023-12-22 01:17:00</td>\n",
" <td>2023-12-22 09:03:00</td>\n",
" <td>1703204220</td>\n",
" <td>2023-12-23 09:51:08.503</td>\n",
" <td>27960</td>\n",
" <td>8400</td>\n",
" <td>3000</td>\n",
" <td>16560</td>\n",
" <td>...</td>\n",
" <td>1.000000</td>\n",
" <td>94.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1703206800</td>\n",
" <td>1703207700</td>\n",
" <td>2023-12-22 02:00:00</td>\n",
" <td>2023-12-22 02:15:00</td>\n",
" <td>900</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>P10</td>\n",
" <td>2023-12-22</td>\n",
" <td>2023-12-22 01:17:00</td>\n",
" <td>2023-12-22 09:03:00</td>\n",
" <td>1703204220</td>\n",
" <td>2023-12-23 09:51:08.503</td>\n",
" <td>27960</td>\n",
" <td>8400</td>\n",
" <td>3000</td>\n",
" <td>16560</td>\n",
" <td>...</td>\n",
" <td>1.000000</td>\n",
" <td>94.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1703208240</td>\n",
" <td>1703210520</td>\n",
" <td>2023-12-22 02:24:00</td>\n",
" <td>2023-12-22 03:02:00</td>\n",
" <td>2280</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3791</th>\n",
" <td>P14</td>\n",
" <td>2024-01-08</td>\n",
" <td>2024-01-08 00:01:00</td>\n",
" <td>2024-01-08 07:34:00</td>\n",
" <td>1704668460</td>\n",
" <td>2024-01-08 10:41:41.126</td>\n",
" <td>27180</td>\n",
" <td>4140</td>\n",
" <td>6600</td>\n",
" <td>16380</td>\n",
" <td>...</td>\n",
" <td>0.997792</td>\n",
" <td>92.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1704695040</td>\n",
" <td>1704695640</td>\n",
" <td>2024-01-08 07:24:00</td>\n",
" <td>2024-01-08 07:34:00</td>\n",
" <td>600</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3792</th>\n",
" <td>P14</td>\n",
" <td>2024-01-08</td>\n",
" <td>2024-01-08 00:01:00</td>\n",
" <td>2024-01-08 07:34:00</td>\n",
" <td>1704668460</td>\n",
" <td>2024-01-08 10:41:41.126</td>\n",
" <td>27180</td>\n",
" <td>4140</td>\n",
" <td>6600</td>\n",
" <td>16380</td>\n",
" <td>...</td>\n",
" <td>0.997792</td>\n",
" <td>92.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1704679020</td>\n",
" <td>1704679620</td>\n",
" <td>2024-01-08 02:57:00</td>\n",
" <td>2024-01-08 03:07:00</td>\n",
" <td>600</td>\n",
" <td>rem</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3793</th>\n",
" <td>P14</td>\n",
" <td>2024-01-08</td>\n",
" <td>2024-01-08 00:01:00</td>\n",
" <td>2024-01-08 07:34:00</td>\n",
" <td>1704668460</td>\n",
" <td>2024-01-08 10:41:41.126</td>\n",
" <td>27180</td>\n",
" <td>4140</td>\n",
" <td>6600</td>\n",
" <td>16380</td>\n",
" <td>...</td>\n",
" <td>0.997792</td>\n",
" <td>92.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1704687960</td>\n",
" <td>1704690420</td>\n",
" <td>2024-01-08 05:26:00</td>\n",
" <td>2024-01-08 06:07:00</td>\n",
" <td>2460</td>\n",
" <td>rem</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3794</th>\n",
" <td>P14</td>\n",
" <td>2024-01-08</td>\n",
" <td>2024-01-08 00:01:00</td>\n",
" <td>2024-01-08 07:34:00</td>\n",
" <td>1704668460</td>\n",
" <td>2024-01-08 10:41:41.126</td>\n",
" <td>27180</td>\n",
" <td>4140</td>\n",
" <td>6600</td>\n",
" <td>16380</td>\n",
" <td>...</td>\n",
" <td>0.997792</td>\n",
" <td>92.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1704693960</td>\n",
" <td>1704695040</td>\n",
" <td>2024-01-08 07:06:00</td>\n",
" <td>2024-01-08 07:24:00</td>\n",
" <td>1080</td>\n",
" <td>rem</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3795</th>\n",
" <td>P14</td>\n",
" <td>2024-01-08</td>\n",
" <td>2024-01-08 00:01:00</td>\n",
" <td>2024-01-08 07:34:00</td>\n",
" <td>1704668460</td>\n",
" <td>2024-01-08 10:41:41.126</td>\n",
" <td>27180</td>\n",
" <td>4140</td>\n",
" <td>6600</td>\n",
" <td>16380</td>\n",
" <td>...</td>\n",
" <td>0.997792</td>\n",
" <td>92.0</td>\n",
" <td>Excellent</td>\n",
" <td>device</td>\n",
" <td>1704671100</td>\n",
" <td>1704671160</td>\n",
" <td>2024-01-08 00:45:00</td>\n",
" <td>2024-01-08 00:46:00</td>\n",
" <td>60</td>\n",
" <td>awake</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>2318 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" User First Name Calendar Date (Local) Start Time (Local) \\\n",
"0 P10 2023-12-22 2023-12-22 01:17:00 \n",
"1 P10 2023-12-22 2023-12-22 01:17:00 \n",
"2 P10 2023-12-22 2023-12-22 01:17:00 \n",
"3 P10 2023-12-22 2023-12-22 01:17:00 \n",
"4 P10 2023-12-22 2023-12-22 01:17:00 \n",
"... ... ... ... \n",
"3791 P14 2024-01-08 2024-01-08 00:01:00 \n",
"3792 P14 2024-01-08 2024-01-08 00:01:00 \n",
"3793 P14 2024-01-08 2024-01-08 00:01:00 \n",
"3794 P14 2024-01-08 2024-01-08 00:01:00 \n",
"3795 P14 2024-01-08 2024-01-08 00:01:00 \n",
"\n",
" End Time (Local) Start Time (s) Processing Time \\\n",
"0 2023-12-22 09:03:00 1703204220 2023-12-23 09:51:08.503 \n",
"1 2023-12-22 09:03:00 1703204220 2023-12-23 09:51:08.503 \n",
"2 2023-12-22 09:03:00 1703204220 2023-12-23 09:51:08.503 \n",
"3 2023-12-22 09:03:00 1703204220 2023-12-23 09:51:08.503 \n",
"4 2023-12-22 09:03:00 1703204220 2023-12-23 09:51:08.503 \n",
"... ... ... ... \n",
"3791 2024-01-08 07:34:00 1704668460 2024-01-08 10:41:41.126 \n",
"3792 2024-01-08 07:34:00 1704668460 2024-01-08 10:41:41.126 \n",
"3793 2024-01-08 07:34:00 1704668460 2024-01-08 10:41:41.126 \n",
"3794 2024-01-08 07:34:00 1704668460 2024-01-08 10:41:41.126 \n",
"3795 2024-01-08 07:34:00 1704668460 2024-01-08 10:41:41.126 \n",
"\n",
" Duration (s) Rem Sleep Duration (s) Deep Sleep Duration (s) \\\n",
"0 27960 8400 3000 \n",
"1 27960 8400 3000 \n",
"2 27960 8400 3000 \n",
"3 27960 8400 3000 \n",
"4 27960 8400 3000 \n",
"... ... ... ... \n",
"3791 27180 4140 6600 \n",
"3792 27180 4140 6600 \n",
"3793 27180 4140 6600 \n",
"3794 27180 4140 6600 \n",
"3795 27180 4140 6600 \n",
"\n",
" Light Sleep Duration (s) ... Sleep Efficiency Sleep Score Value \\\n",
"0 16560 ... 1.000000 94.0 \n",
"1 16560 ... 1.000000 94.0 \n",
"2 16560 ... 1.000000 94.0 \n",
"3 16560 ... 1.000000 94.0 \n",
"4 16560 ... 1.000000 94.0 \n",
"... ... ... ... ... \n",
"3791 16380 ... 0.997792 92.0 \n",
"3792 16380 ... 0.997792 92.0 \n",
"3793 16380 ... 0.997792 92.0 \n",
"3794 16380 ... 0.997792 92.0 \n",
"3795 16380 ... 0.997792 92.0 \n",
"\n",
" Sleep Score Qualifier Source SleepPhaseStartTimeSec \\\n",
"0 Excellent device 1703204580 \n",
"1 Excellent device 1703210520 \n",
"2 Excellent device 1703204220 \n",
"3 Excellent device 1703206800 \n",
"4 Excellent device 1703208240 \n",
"... ... ... ... \n",
"3791 Excellent device 1704695040 \n",
"3792 Excellent device 1704679020 \n",
"3793 Excellent device 1704687960 \n",
"3794 Excellent device 1704693960 \n",
"3795 Excellent device 1704671100 \n",
"\n",
" SleepPhaseEndTimeSec SleepPhaseStartTime SleepPhaseEndTime \\\n",
"0 1703206800 2023-12-22 01:23:00 2023-12-22 02:00:00 \n",
"1 1703211300 2023-12-22 03:02:00 2023-12-22 03:15:00 \n",
"2 1703204580 2023-12-22 01:17:00 2023-12-22 01:23:00 \n",
"3 1703207700 2023-12-22 02:00:00 2023-12-22 02:15:00 \n",
"4 1703210520 2023-12-22 02:24:00 2023-12-22 03:02:00 \n",
"... ... ... ... \n",
"3791 1704695640 2024-01-08 07:24:00 2024-01-08 07:34:00 \n",
"3792 1704679620 2024-01-08 02:57:00 2024-01-08 03:07:00 \n",
"3793 1704690420 2024-01-08 05:26:00 2024-01-08 06:07:00 \n",
"3794 1704695040 2024-01-08 07:06:00 2024-01-08 07:24:00 \n",
"3795 1704671160 2024-01-08 00:45:00 2024-01-08 00:46:00 \n",
"\n",
" SleepPhaseDuration SleepLevel \n",
"0 2220 deep \n",
"1 780 deep \n",
"2 360 light \n",
"3 900 light \n",
"4 2280 light \n",
"... ... ... \n",
"3791 600 light \n",
"3792 600 rem \n",
"3793 2460 rem \n",
"3794 1080 rem \n",
"3795 60 awake \n",
"\n",
"[2318 rows x 21 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load dataset\n",
"df = pd.read_csv('../data/garmin/sleep.csv', sep=',')\n",
"\n",
"# Drop not needed columns\n",
"df = df.drop(columns=['User Id', 'User Last Name', 'User Email', 'Team Names', 'Group Names', \n",
" 'Calendar Date (UTC)', 'Start Time (UTC)', 'End Time (UTC)',\n",
" 'Validation', 'Time Zone (s)', 'Timezone (Local)', 'Summary Id'])\n",
"\n",
"# Convert data types\n",
"df['Calendar Date (Local)'] = pd.to_datetime(df['Calendar Date (Local)'])\n",
"df['Start Time (Local)'] = pd.to_datetime(df['Start Time (Local)'])\n",
"df['End Time (Local)'] = pd.to_datetime(df['End Time (Local)'])\n",
"df['Processing Time'] = pd.to_datetime(df['Processing Time'])\n",
"df['SleepPhaseStartTime'] = pd.to_datetime(df['SleepPhaseStartTime'])\n",
"#df['SleepPhaseEndTime'] = df['SleepPhaseEndTime'].str.replace('T',' ')\n",
"df['SleepPhaseEndTime'] = pd.to_datetime(df['SleepPhaseEndTime'], format='mixed')\n",
"\n",
"# Only use records from device\n",
"df = df[df['Source'] == 'device']\n",
"\n",
"# Get overview about data types\n",
"print(df.dtypes)\n",
"\n",
"# Get overview about data in the dataset\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "631c9d12-4b71-41a6-9c36-d37fc048f95e",
"metadata": {},
"source": [
"## View data of a single individual for a given day"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "fcb2d8d1-21b5-4875-8d1a-859df7b9d0f3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>User First Name</th>\n",
" <th>Calendar Date (Local)</th>\n",
" <th>Start Time (Local)</th>\n",
" <th>End Time (Local)</th>\n",
" <th>Start Time (s)</th>\n",
" <th>Processing Time</th>\n",
" <th>Duration (s)</th>\n",
" <th>Rem Sleep Duration (s)</th>\n",
" <th>Deep Sleep Duration (s)</th>\n",
" <th>Light Sleep Duration (s)</th>\n",
" <th>...</th>\n",
" <th>Sleep Efficiency</th>\n",
" <th>Sleep Score Value</th>\n",
" <th>Sleep Score Qualifier</th>\n",
" <th>Source</th>\n",
" <th>SleepPhaseStartTimeSec</th>\n",
" <th>SleepPhaseEndTimeSec</th>\n",
" <th>SleepPhaseStartTime</th>\n",
" <th>SleepPhaseEndTime</th>\n",
" <th>SleepPhaseDuration</th>\n",
" <th>SleepLevel</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2061</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703376000</td>\n",
" <td>1703378520</td>\n",
" <td>2023-12-24 01:00:00</td>\n",
" <td>2023-12-24 01:42:00</td>\n",
" <td>2520</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2062</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703380920</td>\n",
" <td>1703382300</td>\n",
" <td>2023-12-24 02:22:00</td>\n",
" <td>2023-12-24 02:45:00</td>\n",
" <td>1380</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2063</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703387160</td>\n",
" <td>1703388300</td>\n",
" <td>2023-12-24 04:06:00</td>\n",
" <td>2023-12-24 04:25:00</td>\n",
" <td>1140</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2064</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703375280</td>\n",
" <td>1703376000</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 01:00:00</td>\n",
" <td>720</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2065</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703378520</td>\n",
" <td>1703379720</td>\n",
" <td>2023-12-24 01:42:00</td>\n",
" <td>2023-12-24 02:02:00</td>\n",
" <td>1200</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2066</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703379780</td>\n",
" <td>1703380920</td>\n",
" <td>2023-12-24 02:03:00</td>\n",
" <td>2023-12-24 02:22:00</td>\n",
" <td>1140</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2067</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703382300</td>\n",
" <td>1703383440</td>\n",
" <td>2023-12-24 02:45:00</td>\n",
" <td>2023-12-24 03:04:00</td>\n",
" <td>1140</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2068</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703385720</td>\n",
" <td>1703387160</td>\n",
" <td>2023-12-24 03:42:00</td>\n",
" <td>2023-12-24 04:06:00</td>\n",
" <td>1440</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2069</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703388300</td>\n",
" <td>1703390160</td>\n",
" <td>2023-12-24 04:25:00</td>\n",
" <td>2023-12-24 04:56:00</td>\n",
" <td>1860</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2070</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703383440</td>\n",
" <td>1703384520</td>\n",
" <td>2023-12-24 03:04:00</td>\n",
" <td>2023-12-24 03:22:00</td>\n",
" <td>1080</td>\n",
" <td>rem</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2071</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703390160</td>\n",
" <td>1703391280</td>\n",
" <td>2023-12-24 04:56:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1120</td>\n",
" <td>rem</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2072</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703379720</td>\n",
" <td>1703379780</td>\n",
" <td>2023-12-24 02:02:00</td>\n",
" <td>2023-12-24 02:03:00</td>\n",
" <td>60</td>\n",
" <td>awake</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>12 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" User First Name Calendar Date (Local) Start Time (Local) \\\n",
"2061 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2062 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2063 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2064 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2065 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2066 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2067 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2068 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2069 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2070 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2071 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2072 P12 2023-12-24 2023-12-24 00:48:00 \n",
"\n",
" End Time (Local) Start Time (s) Processing Time \\\n",
"2061 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2062 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2063 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2064 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2065 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2066 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2067 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2068 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2069 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2070 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2071 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2072 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"\n",
" Duration (s) Rem Sleep Duration (s) Deep Sleep Duration (s) \\\n",
"2061 16000 2200 5040 \n",
"2062 16000 2200 5040 \n",
"2063 16000 2200 5040 \n",
"2064 16000 2200 5040 \n",
"2065 16000 2200 5040 \n",
"2066 16000 2200 5040 \n",
"2067 16000 2200 5040 \n",
"2068 16000 2200 5040 \n",
"2069 16000 2200 5040 \n",
"2070 16000 2200 5040 \n",
"2071 16000 2200 5040 \n",
"2072 16000 2200 5040 \n",
"\n",
" Light Sleep Duration (s) ... Sleep Efficiency Sleep Score Value \\\n",
"2061 7500 ... 0.99625 56.0 \n",
"2062 7500 ... 0.99625 56.0 \n",
"2063 7500 ... 0.99625 56.0 \n",
"2064 7500 ... 0.99625 56.0 \n",
"2065 7500 ... 0.99625 56.0 \n",
"2066 7500 ... 0.99625 56.0 \n",
"2067 7500 ... 0.99625 56.0 \n",
"2068 7500 ... 0.99625 56.0 \n",
"2069 7500 ... 0.99625 56.0 \n",
"2070 7500 ... 0.99625 56.0 \n",
"2071 7500 ... 0.99625 56.0 \n",
"2072 7500 ... 0.99625 56.0 \n",
"\n",
" Sleep Score Qualifier Source SleepPhaseStartTimeSec \\\n",
"2061 Poor device 1703376000 \n",
"2062 Poor device 1703380920 \n",
"2063 Poor device 1703387160 \n",
"2064 Poor device 1703375280 \n",
"2065 Poor device 1703378520 \n",
"2066 Poor device 1703379780 \n",
"2067 Poor device 1703382300 \n",
"2068 Poor device 1703385720 \n",
"2069 Poor device 1703388300 \n",
"2070 Poor device 1703383440 \n",
"2071 Poor device 1703390160 \n",
"2072 Poor device 1703379720 \n",
"\n",
" SleepPhaseEndTimeSec SleepPhaseStartTime SleepPhaseEndTime \\\n",
"2061 1703378520 2023-12-24 01:00:00 2023-12-24 01:42:00 \n",
"2062 1703382300 2023-12-24 02:22:00 2023-12-24 02:45:00 \n",
"2063 1703388300 2023-12-24 04:06:00 2023-12-24 04:25:00 \n",
"2064 1703376000 2023-12-24 00:48:00 2023-12-24 01:00:00 \n",
"2065 1703379720 2023-12-24 01:42:00 2023-12-24 02:02:00 \n",
"2066 1703380920 2023-12-24 02:03:00 2023-12-24 02:22:00 \n",
"2067 1703383440 2023-12-24 02:45:00 2023-12-24 03:04:00 \n",
"2068 1703387160 2023-12-24 03:42:00 2023-12-24 04:06:00 \n",
"2069 1703390160 2023-12-24 04:25:00 2023-12-24 04:56:00 \n",
"2070 1703384520 2023-12-24 03:04:00 2023-12-24 03:22:00 \n",
"2071 1703391280 2023-12-24 04:56:00 2023-12-24 05:14:40 \n",
"2072 1703379780 2023-12-24 02:02:00 2023-12-24 02:03:00 \n",
"\n",
" SleepPhaseDuration SleepLevel \n",
"2061 2520 deep \n",
"2062 1380 deep \n",
"2063 1140 deep \n",
"2064 720 light \n",
"2065 1200 light \n",
"2066 1140 light \n",
"2067 1140 light \n",
"2068 1440 light \n",
"2069 1860 light \n",
"2070 1080 rem \n",
"2071 1120 rem \n",
"2072 60 awake \n",
"\n",
"[12 rows x 21 columns]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Select user = P12 and day = 2023-12-24\n",
"df_p12 = df[df['User First Name'] == 'P12']\n",
"df_p12_xmas = df_p12[df_p12['Calendar Date (Local)'] == '2023-12-24']\n",
"\n",
"# Print\n",
"df_p12_xmas"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "615dc83d-58ed-4b4f-a528-1839a621b816",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>User First Name</th>\n",
" <th>Calendar Date (Local)</th>\n",
" <th>Start Time (Local)</th>\n",
" <th>End Time (Local)</th>\n",
" <th>Start Time (s)</th>\n",
" <th>Processing Time</th>\n",
" <th>Duration (s)</th>\n",
" <th>Rem Sleep Duration (s)</th>\n",
" <th>Deep Sleep Duration (s)</th>\n",
" <th>Light Sleep Duration (s)</th>\n",
" <th>...</th>\n",
" <th>Sleep Efficiency</th>\n",
" <th>Sleep Score Value</th>\n",
" <th>Sleep Score Qualifier</th>\n",
" <th>Source</th>\n",
" <th>SleepPhaseStartTimeSec</th>\n",
" <th>SleepPhaseEndTimeSec</th>\n",
" <th>SleepPhaseStartTime</th>\n",
" <th>SleepPhaseEndTime</th>\n",
" <th>SleepPhaseDuration</th>\n",
" <th>SleepLevel</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2061</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703376000</td>\n",
" <td>1703378520</td>\n",
" <td>2023-12-24 01:00:00</td>\n",
" <td>2023-12-24 01:42:00</td>\n",
" <td>2520</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2062</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703380920</td>\n",
" <td>1703382300</td>\n",
" <td>2023-12-24 02:22:00</td>\n",
" <td>2023-12-24 02:45:00</td>\n",
" <td>1380</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2063</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703387160</td>\n",
" <td>1703388300</td>\n",
" <td>2023-12-24 04:06:00</td>\n",
" <td>2023-12-24 04:25:00</td>\n",
" <td>1140</td>\n",
" <td>deep</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2064</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703375280</td>\n",
" <td>1703376000</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 01:00:00</td>\n",
" <td>720</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2065</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703378520</td>\n",
" <td>1703379720</td>\n",
" <td>2023-12-24 01:42:00</td>\n",
" <td>2023-12-24 02:02:00</td>\n",
" <td>1200</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2066</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703379780</td>\n",
" <td>1703380920</td>\n",
" <td>2023-12-24 02:03:00</td>\n",
" <td>2023-12-24 02:22:00</td>\n",
" <td>1140</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2067</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703382300</td>\n",
" <td>1703383440</td>\n",
" <td>2023-12-24 02:45:00</td>\n",
" <td>2023-12-24 03:04:00</td>\n",
" <td>1140</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2068</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703385720</td>\n",
" <td>1703387160</td>\n",
" <td>2023-12-24 03:42:00</td>\n",
" <td>2023-12-24 04:06:00</td>\n",
" <td>1440</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2069</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703388300</td>\n",
" <td>1703390160</td>\n",
" <td>2023-12-24 04:25:00</td>\n",
" <td>2023-12-24 04:56:00</td>\n",
" <td>1860</td>\n",
" <td>light</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2070</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703383440</td>\n",
" <td>1703384520</td>\n",
" <td>2023-12-24 03:04:00</td>\n",
" <td>2023-12-24 03:22:00</td>\n",
" <td>1080</td>\n",
" <td>rem</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2071</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703390160</td>\n",
" <td>1703391280</td>\n",
" <td>2023-12-24 04:56:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1120</td>\n",
" <td>rem</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2072</th>\n",
" <td>P12</td>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>1703375280</td>\n",
" <td>2023-12-25 17:28:23.071</td>\n",
" <td>16000</td>\n",
" <td>2200</td>\n",
" <td>5040</td>\n",
" <td>7500</td>\n",
" <td>...</td>\n",
" <td>0.99625</td>\n",
" <td>56.0</td>\n",
" <td>Poor</td>\n",
" <td>device</td>\n",
" <td>1703379720</td>\n",
" <td>1703379780</td>\n",
" <td>2023-12-24 02:02:00</td>\n",
" <td>2023-12-24 02:03:00</td>\n",
" <td>60</td>\n",
" <td>awake</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>12 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" User First Name Calendar Date (Local) Start Time (Local) \\\n",
"2061 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2062 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2063 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2064 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2065 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2066 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2067 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2068 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2069 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2070 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2071 P12 2023-12-24 2023-12-24 00:48:00 \n",
"2072 P12 2023-12-24 2023-12-24 00:48:00 \n",
"\n",
" End Time (Local) Start Time (s) Processing Time \\\n",
"2061 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2062 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2063 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2064 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2065 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2066 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2067 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2068 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2069 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2070 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2071 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"2072 2023-12-24 05:14:40 1703375280 2023-12-25 17:28:23.071 \n",
"\n",
" Duration (s) Rem Sleep Duration (s) Deep Sleep Duration (s) \\\n",
"2061 16000 2200 5040 \n",
"2062 16000 2200 5040 \n",
"2063 16000 2200 5040 \n",
"2064 16000 2200 5040 \n",
"2065 16000 2200 5040 \n",
"2066 16000 2200 5040 \n",
"2067 16000 2200 5040 \n",
"2068 16000 2200 5040 \n",
"2069 16000 2200 5040 \n",
"2070 16000 2200 5040 \n",
"2071 16000 2200 5040 \n",
"2072 16000 2200 5040 \n",
"\n",
" Light Sleep Duration (s) ... Sleep Efficiency Sleep Score Value \\\n",
"2061 7500 ... 0.99625 56.0 \n",
"2062 7500 ... 0.99625 56.0 \n",
"2063 7500 ... 0.99625 56.0 \n",
"2064 7500 ... 0.99625 56.0 \n",
"2065 7500 ... 0.99625 56.0 \n",
"2066 7500 ... 0.99625 56.0 \n",
"2067 7500 ... 0.99625 56.0 \n",
"2068 7500 ... 0.99625 56.0 \n",
"2069 7500 ... 0.99625 56.0 \n",
"2070 7500 ... 0.99625 56.0 \n",
"2071 7500 ... 0.99625 56.0 \n",
"2072 7500 ... 0.99625 56.0 \n",
"\n",
" Sleep Score Qualifier Source SleepPhaseStartTimeSec \\\n",
"2061 Poor device 1703376000 \n",
"2062 Poor device 1703380920 \n",
"2063 Poor device 1703387160 \n",
"2064 Poor device 1703375280 \n",
"2065 Poor device 1703378520 \n",
"2066 Poor device 1703379780 \n",
"2067 Poor device 1703382300 \n",
"2068 Poor device 1703385720 \n",
"2069 Poor device 1703388300 \n",
"2070 Poor device 1703383440 \n",
"2071 Poor device 1703390160 \n",
"2072 Poor device 1703379720 \n",
"\n",
" SleepPhaseEndTimeSec SleepPhaseStartTime SleepPhaseEndTime \\\n",
"2061 1703378520 2023-12-24 01:00:00 2023-12-24 01:42:00 \n",
"2062 1703382300 2023-12-24 02:22:00 2023-12-24 02:45:00 \n",
"2063 1703388300 2023-12-24 04:06:00 2023-12-24 04:25:00 \n",
"2064 1703376000 2023-12-24 00:48:00 2023-12-24 01:00:00 \n",
"2065 1703379720 2023-12-24 01:42:00 2023-12-24 02:02:00 \n",
"2066 1703380920 2023-12-24 02:03:00 2023-12-24 02:22:00 \n",
"2067 1703383440 2023-12-24 02:45:00 2023-12-24 03:04:00 \n",
"2068 1703387160 2023-12-24 03:42:00 2023-12-24 04:06:00 \n",
"2069 1703390160 2023-12-24 04:25:00 2023-12-24 04:56:00 \n",
"2070 1703384520 2023-12-24 03:04:00 2023-12-24 03:22:00 \n",
"2071 1703391280 2023-12-24 04:56:00 2023-12-24 05:14:40 \n",
"2072 1703379780 2023-12-24 02:02:00 2023-12-24 02:03:00 \n",
"\n",
" SleepPhaseDuration SleepLevel \n",
"2061 2520 deep \n",
"2062 1380 deep \n",
"2063 1140 deep \n",
"2064 720 light \n",
"2065 1200 light \n",
"2066 1140 light \n",
"2067 1140 light \n",
"2068 1440 light \n",
"2069 1860 light \n",
"2070 1080 rem \n",
"2071 1120 rem \n",
"2072 60 awake \n",
"\n",
"[12 rows x 21 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_p12_xmas = df_p12_xmas[df_p12_xmas['Source'] == 'device']\n",
"\n",
"# Print\n",
"df_p12_xmas"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "08b94b14-b8f4-4e5c-abc8-9e88b3aa64c6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sleep duration: 0 days 04:26:40\n"
]
}
],
"source": [
"# Get sleep duaration for a given day\n",
"df_sleep = df_p12_xmas.iloc[0]\n",
"sleep_duration = df_sleep['End Time (Local)'] - df_sleep['Start Time (Local)']\n",
"print(\"Sleep duration: \", sleep_duration)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "b4b9b17e-9ac5-42c9-97a4-945c1573f9bc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Calendar Date (Local)</th>\n",
" <th>Start Time (Local)</th>\n",
" <th>End Time (Local)</th>\n",
" <th>Duration (s)</th>\n",
" <th>Duration (m)</th>\n",
" <th>Duration (h)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1289</th>\n",
" <td>2023-12-23</td>\n",
" <td>2023-12-23 00:52:00</td>\n",
" <td>2023-12-23 08:45:00</td>\n",
" <td>28380</td>\n",
" <td>473.000000</td>\n",
" <td>7.883333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1613</th>\n",
" <td>2023-12-23</td>\n",
" <td>2023-12-23 05:21:00</td>\n",
" <td>2023-12-23 08:45:00</td>\n",
" <td>12240</td>\n",
" <td>204.000000</td>\n",
" <td>3.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1745</th>\n",
" <td>2023-12-23</td>\n",
" <td>2023-12-23 05:56:00</td>\n",
" <td>2023-12-23 08:45:00</td>\n",
" <td>10140</td>\n",
" <td>169.000000</td>\n",
" <td>2.816667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1865</th>\n",
" <td>2023-12-23</td>\n",
" <td>2023-12-23 06:29:00</td>\n",
" <td>2023-12-23 08:45:00</td>\n",
" <td>8160</td>\n",
" <td>136.000000</td>\n",
" <td>2.266667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1961</th>\n",
" <td>2023-12-23</td>\n",
" <td>2023-12-23 07:04:00</td>\n",
" <td>2023-12-23 08:45:00</td>\n",
" <td>6060</td>\n",
" <td>101.000000</td>\n",
" <td>1.683333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2033</th>\n",
" <td>2023-12-23</td>\n",
" <td>2023-12-23 08:21:00</td>\n",
" <td>2023-12-23 08:45:00</td>\n",
" <td>1440</td>\n",
" <td>24.000000</td>\n",
" <td>0.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2061</th>\n",
" <td>2023-12-24</td>\n",
" <td>2023-12-24 00:48:00</td>\n",
" <td>2023-12-24 05:14:40</td>\n",
" <td>16000</td>\n",
" <td>266.666667</td>\n",
" <td>4.444444</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2073</th>\n",
" <td>2023-12-25</td>\n",
" <td>2023-12-25 00:31:00</td>\n",
" <td>2023-12-25 10:21:00</td>\n",
" <td>35400</td>\n",
" <td>590.000000</td>\n",
" <td>9.833333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2101</th>\n",
" <td>2023-12-26</td>\n",
" <td>2023-12-26 01:06:00</td>\n",
" <td>2023-12-26 09:38:00</td>\n",
" <td>30720</td>\n",
" <td>512.000000</td>\n",
" <td>8.533333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2134</th>\n",
" <td>2023-12-27</td>\n",
" <td>2023-12-27 00:27:00</td>\n",
" <td>2023-12-27 07:52:00</td>\n",
" <td>26700</td>\n",
" <td>445.000000</td>\n",
" <td>7.416667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2170</th>\n",
" <td>2023-12-28</td>\n",
" <td>2023-12-28 01:13:00</td>\n",
" <td>2023-12-28 07:31:00</td>\n",
" <td>22680</td>\n",
" <td>378.000000</td>\n",
" <td>6.300000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2187</th>\n",
" <td>2023-12-29</td>\n",
" <td>2023-12-29 01:14:00</td>\n",
" <td>2023-12-29 08:58:00</td>\n",
" <td>27840</td>\n",
" <td>464.000000</td>\n",
" <td>7.733333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2212</th>\n",
" <td>2023-12-30</td>\n",
" <td>2023-12-30 03:16:00</td>\n",
" <td>2023-12-30 11:35:00</td>\n",
" <td>29940</td>\n",
" <td>499.000000</td>\n",
" <td>8.316667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2233</th>\n",
" <td>2023-12-31</td>\n",
" <td>2023-12-31 02:16:00</td>\n",
" <td>2023-12-31 11:40:00</td>\n",
" <td>33840</td>\n",
" <td>564.000000</td>\n",
" <td>9.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2266</th>\n",
" <td>2024-01-01</td>\n",
" <td>2024-01-01 02:20:00</td>\n",
" <td>2024-01-01 09:42:00</td>\n",
" <td>26520</td>\n",
" <td>442.000000</td>\n",
" <td>7.366667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2365</th>\n",
" <td>2024-01-03</td>\n",
" <td>2024-01-03 02:24:00</td>\n",
" <td>2024-01-03 09:01:00</td>\n",
" <td>23820</td>\n",
" <td>397.000000</td>\n",
" <td>6.616667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2382</th>\n",
" <td>2024-01-04</td>\n",
" <td>2024-01-04 01:07:00</td>\n",
" <td>2024-01-04 06:13:00</td>\n",
" <td>18360</td>\n",
" <td>306.000000</td>\n",
" <td>5.100000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Calendar Date (Local) Start Time (Local) End Time (Local) \\\n",
"1289 2023-12-23 2023-12-23 00:52:00 2023-12-23 08:45:00 \n",
"1613 2023-12-23 2023-12-23 05:21:00 2023-12-23 08:45:00 \n",
"1745 2023-12-23 2023-12-23 05:56:00 2023-12-23 08:45:00 \n",
"1865 2023-12-23 2023-12-23 06:29:00 2023-12-23 08:45:00 \n",
"1961 2023-12-23 2023-12-23 07:04:00 2023-12-23 08:45:00 \n",
"2033 2023-12-23 2023-12-23 08:21:00 2023-12-23 08:45:00 \n",
"2061 2023-12-24 2023-12-24 00:48:00 2023-12-24 05:14:40 \n",
"2073 2023-12-25 2023-12-25 00:31:00 2023-12-25 10:21:00 \n",
"2101 2023-12-26 2023-12-26 01:06:00 2023-12-26 09:38:00 \n",
"2134 2023-12-27 2023-12-27 00:27:00 2023-12-27 07:52:00 \n",
"2170 2023-12-28 2023-12-28 01:13:00 2023-12-28 07:31:00 \n",
"2187 2023-12-29 2023-12-29 01:14:00 2023-12-29 08:58:00 \n",
"2212 2023-12-30 2023-12-30 03:16:00 2023-12-30 11:35:00 \n",
"2233 2023-12-31 2023-12-31 02:16:00 2023-12-31 11:40:00 \n",
"2266 2024-01-01 2024-01-01 02:20:00 2024-01-01 09:42:00 \n",
"2365 2024-01-03 2024-01-03 02:24:00 2024-01-03 09:01:00 \n",
"2382 2024-01-04 2024-01-04 01:07:00 2024-01-04 06:13:00 \n",
"\n",
" Duration (s) Duration (m) Duration (h) \n",
"1289 28380 473.000000 7.883333 \n",
"1613 12240 204.000000 3.400000 \n",
"1745 10140 169.000000 2.816667 \n",
"1865 8160 136.000000 2.266667 \n",
"1961 6060 101.000000 1.683333 \n",
"2033 1440 24.000000 0.400000 \n",
"2061 16000 266.666667 4.444444 \n",
"2073 35400 590.000000 9.833333 \n",
"2101 30720 512.000000 8.533333 \n",
"2134 26700 445.000000 7.416667 \n",
"2170 22680 378.000000 6.300000 \n",
"2187 27840 464.000000 7.733333 \n",
"2212 29940 499.000000 8.316667 \n",
"2233 33840 564.000000 9.400000 \n",
"2266 26520 442.000000 7.366667 \n",
"2365 23820 397.000000 6.616667 \n",
"2382 18360 306.000000 5.100000 "
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a table of sleep times of a user for all days\n",
"df_sleeptime = df_p12.loc[:, ['Calendar Date (Local)', 'Start Time (Local)', 'End Time (Local)', 'Duration (s)']]\n",
"\n",
"# Remove duplicates\n",
"df_sleeptime = df_sleeptime.drop_duplicates()\n",
"\n",
"# Calculate sleep minutes and hours\n",
"df_sleeptime['Duration (m)'] = df_sleeptime['Duration (s)'] / 60\n",
"df_sleeptime['Duration (h)'] = df_sleeptime['Duration (m)'] / 60\n",
"\n",
"# Print\n",
"df_sleeptime"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "76eeeb05-66f3-4117-90cc-9605cacb4f12",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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avjw4WrXrp3at2+vefPm6fTp0xo5cqQkadiwYapVq5ZmzZolSXrooYfUvXt3Pffcc+rfv79WrlyprVu36p///Kc7fwwAAOBBPH4A+tvf/qaff/5ZU6ZMUVZWllq1aqV169YpMjJSkpSZmSkfn/+eyOrcubNWrFihSZMm6fHHH1eDBg307rvvqlmzZuV+zYCAAE2dOrXEt8U8Da3m8KZWybt6aTUHreag1Rye0GozjPJ8VgwAAODy4dHXAAEAAJiBAQgAAFgOAxAAALAcBiAAAGA5DEAAAMByGIAuA+np6frzzz/dnXHZ4e/UXHwAFbA2d//uYgDSuTtFT506VV988YUkKSUlRfHx8br22mv12muvubnuwho1aqQDBw64O6NMx44d09SpUzV06FBNmDBB+/btc3eS3bp167Rz505J5+40PmPGDNWqVUsBAQGqXbu2Zs+e7VG/rAcMGKB//etf+u2339ydckEFBQWaMGGCunXrpjlz5kiSZs6cqZCQEIWGhur222837RupL8b333+vYcOGqV69egoKClLlypXVvHlzTZ482aM6JWnPnj26//771bp1a9WsWVM1a9ZU69atdf/992vPnj3uziu3tLQ0XXvtte7OKBdPa+V316Wx/H2A3njjDY0cOVItWrTQDz/8oBdffFHjx4/XzTffrKKiIr3xxht68803dfPNN7s7VUOGDClx+3vvvadrr71WoaGhkqS1a9dWZFaJgoODlZGRoYiICO3Zs0edO3dWRESEWrdurZ07dyozM1ObN29WixYt3J2qxo0ba/HixeratatmzZql5557Tk888YSaNGmi/fv3a9asWRo/frwee+wxd6dKknx8fOTr66vKlSsrISFBo0aNUtu2bd2dVaLExEStWrVKCQkJ+uijj9SzZ0998MEHevrpp+Xj46MpU6YoPj5e8+fPd3eqPvnkEw0ePFjXX3+9goKCtHbtWt15552qXLmy3n77bRmGoY0bN5b5vYIV5eOPP9agQYPUpk0b9e3b135j2OzsbH322Wfatm2b3nvvPfXt29fNpRf2/fffq02bNiosLHR3ygV5Uiu/uy6d5Qeg1q1ba+TIkRo7dqySk5M1YMAAPfXUUxo/frwk6bnnntM777yjjRs3urn03C++bt26qW7dug7bX3/9dQ0cOFBVqlSRJI+Y/H18fJSVlaUaNWpo0KBB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d9yhEydOlNpWWFio//u//9OAAQOK7QsODlZUVJRq166tjh07as6cOXrllVe0ePFiff755/bjHnvsMTVs2FDBwcGqV6+eJk+erD/++EOSdPjwYfn4+Gjr1q0Ozz1v3jzFxsaqqKhIOTk5Gjp0qCIiIhQUFKQGDRrotddesx971VVXKTo6Wu+8845Tf+8AnMcABMDtli9frurVq2vLli168MEHNXr0aN1yyy3q3LmzUlNT1adPH91xxx06c+aMJOnkyZO69tpr1bp1a23dulXr1q1Tdna2br311lJfY8eOHcrNzVW7du3K1TR8+HBVrVpVa9eutW8LDQ3VsmXLtGfPHr3wwgtavHix5s6dK0mKi4tT7969HQYaSXrttdc0YsQI+fj4aPLkydqzZ48+/vhj7d27VwsXLlT16tUdjm/fvr02bNhQrkYAF48BCIDbtWzZUpMmTVKDBg2UlJSkwMBAVa9eXXfffbcaNGigKVOm6JdfftGOHTsknfsOodatW+vpp59W48aN1bp1ay1dulRffvllqV+smJGRIV9fX9WoUaNcTT4+PmrYsKEOHz5s3zZp0iR17txZcXFxGjBggCZMmKDVq1fb948aNUpvvfWWCgoKJEmpqanauXOnRo4cKUnKzMxU69at1a5dO/vA9NczUtHR0crIyCj33x2Ai8MABMDtWrRoYf+zr6+vrrjiCjVv3ty+LTIyUpL0008/STp3MfOXX35pv6YoJCREjRs3liSlpaWV+Bq//fabAgICLnih9v8yDMPh+FWrVumaa66xv503adIkZWZm2vcPGjRIvr6+9rewli1bpp49eyouLk6SNHr0aK1cuVKtWrXSo48+qk2bNhV7zaCgIPuZLgDmYQAC4HaVKlVyWLfZbA7bzg8hRUVFkqT8/HwNGDBA27dvd1gOHDigbt26lfga1atX15kzZ3T27NlyNRUWFurAgQOqW7euJGnz5s0aOnSorr/+en3wwQf6z3/+oyeeeMLh+fz9/TVs2DC99tprOnv2rFasWKE777zTvj8+Pl4ZGRkaP368jh07pl69emnChAkOr/vrr78qIiKiXI0ALp6fuwMAwFlt2rTR22+/rbi4OPn5le+fsVatWkmS9uzZY/9zWZYvX66cnBzddNNNkqRNmzYpNjZWTzzxhP2Ykt6qGjVqlJo1a6aXX35Zf/75Z7GP0kdERGj48OEaPny4unbtqkceeUTPPvusff+uXbvUo0ePcv1MAC4eZ4AAeJ0xY8bo119/VUJCgr777julpaXpk08+0ciRI1VYWFjiYyIiItSmTRtt3Lix2L4zZ84oKytLR48e1TfffKPHHntM9913n0aPHq2ePXtKkho0aKDMzEytXLlSaWlpmj9/fomf1mrSpIk6duyoxx57TAkJCQoKCrLvmzJlit577z0dPHhQu3fv1gcffKAmTZo4dGzbtk19+vS51L8iABfAAATA60RHR+vrr79WYWGh+vTpo+bNm2vcuHGqUqWKfHxK/2dt1KhRevPNN4ttX7x4sWrWrKkrr7xSQ4YM0Z49e7Rq1Sq9/PLL9mMGDhyo8ePH64EHHlCrVq20adMmTZ48ucTXueuuu3T27FmHt7+kc2+RJSUlqUWLFurWrZt8fX21cuVK+/733ntPderUUdeuXZ39KwHgJG6ECMAyfvvtNzVq1EirVq1Sp06dTHudGTNmaM2aNfZPrZVXx44dNXbsWN1+++0mlQE4jzNAACwjKChIr7/+epk3TLwU+fn52rVrlxYsWKAHH3zQqceeOHFCQ4YMUUJCgiltABxxBggAXGTEiBF66623NGjQIK1YsUK+vr7uTgJQCgYgAABgObwFBgAALIcBCAAAWA4DEAAAsBwGIAAAYDkMQAAAwHIYgAAAgOUwAAEAAMthAAIAAJbz/wCvrLygvjedngAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_sleeptime_grouped = df_sleeptime.groupby(df_sleeptime['Calendar Date (Local)'].dt.date)['Duration (h)'].sum()\n",
"\n",
"df_sleeptime_grouped.plot(x ='Calendar Date (Local)', y='Duration (h)', kind='bar'),\n",
"plt.ylim(ymin=0)\n",
"plt.xlim(xmin=0)\n",
"plt.ylabel(\"Sleep duration (h)\")\n",
"plt.xlabel(\"Time (Days)\")\n",
"\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}