In [167]:
from ahh import pre, ext, vis, sci
import pandas as pd
import datetime
In [200]:
df = pre.read_csv('monthly/sleep_summary_20170301_20171028.csv', date='SLEEP DATE', time='START TIME')
df = df.drop('sleep date', axis=1).drop('start time', axis=1).drop('minutes to fall asleep', axis=1)
df.index = df.index - datetime.timedelta(hours=4) # because I sometimes sleep past 12 AM and it count as next day
df['weekday'] = df.index.weekday
dts = df.index
tib = df['time in bed'] / 60
tas = df['minutes asleep'] / 60
df.columns
Out[200]:
In [169]:
ax = vis.plot_line(dts, tib, label='time in bed')
_ = vis.plot_line(dts, tas, figsize='na', color='blue', label='time asleep')
ax.set_ylim(3, 12)
_ = vis.set_labels(ax, ylabel='Hours', title='March to October 2017', title_pad=1.12)
vis.set_legend(ax, ncol=3, loc='top center')
Out[169]:
Out[169]:
In [225]:
df_gb = df.groupby([df.index.month, 'weekday']).mean()
df_gb = df_gb.reset_index()
df_piv = df_gb.pivot(index='weekday', columns='level_0', values='minutes asleep') / 60
df_piv.index = ext.MISC['weekdays_short']
df_piv.columns = ext.MISC['months_short'][2:10]
vis.plot_heatmap(df_piv, data_lim=(6, 9), ylabel='Night of', xlabel='Month', cbar_label='Hours Asleep')
Out[225]:
In [246]:
df_gb = df.groupby([df.index.month, 'weekday']).mean()
df_gb = df_gb.reset_index()
df_piv = df_gb.pivot(index='weekday', columns='level_0', values='minutes awake')
df_piv.index = ext.MISC['weekdays_short']
df_piv.columns = ext.MISC['months_short'][2:10]
vis.plot_heatmap(df_piv, data_lim=(50, 90), interval=5, ylabel='Night of', xlabel='Month', cbar_label='Minutes Awake')
Out[246]:
In [236]:
df
Out[236]:
In [ ]: