小蛇學python(5)可視化分析睡眠—起床關(guān)系

想要成為一名數(shù)據(jù)科學家(我也在這條路上追逐奔跑)就要發(fā)自內(nèi)心的對數(shù)據(jù)感興趣,對數(shù)據(jù)敏感,想用數(shù)字來形容自己的一切。我平時有著記錄起息時間的習慣,目前積攢了兩個月的數(shù)據(jù),心血來潮,就想畫畫圖,分析一下數(shù)據(jù)之間有著什么關(guān)系。

這是一個小工程沒有什么代碼量,主要也是熟悉一下對pandas以及matplotlib的使用。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from dateutil.parser import parse
from pandas import DataFrame

def time_to_int(num):
    integer_part = int(num)
    fractional_part = num - integer_part
    new_fractional_part = fractional_part * 5/3
    new_num = integer_part + new_fractional_part
    return float('%.2f'%new_num)

filename =  'C:/my python/python code/my_life_anlyze/3-4.csv'

morning = []
sleep = []
new_sleep_time = []
data = pd.read_csv(filename, header=0)
data.dropna(axis=0, inplace=True)

for i in data.morning:
    morning.append(time_to_int(i))
for i in data.night:
    sleep.append(time_to_int(i))
print(morning)
print(sleep)
sleep_time = np.array(morning) - np.array(sleep)
for i in sleep_time:
    if i < 0:
        i = i + 24
    new_sleep_time.append(i)
print(new_sleep_time)


time_record = [morning, sleep]
data1 = DataFrame(morning, index=data.date, columns=['mornig'])
data2 = DataFrame(sleep, index=data.date, columns=['sleep'])
data3 = DataFrame(time_record, index=['morning', 'sleep'], columns=data.date)
data4 = data3.T
data5 = DataFrame(new_sleep_time, index=data.date, columns=['sleep_time'])
pd.scatter_matrix(data5)

#print(data4)
#pd.scatter_matrix(data1)
#pd.scatter_matrix(data2)
#plt.scatter(sleep, data.date)
#pd.scatter_matrix(data4.loc[:,'morning':'sleep'], figsize=(12,8), diagonal='kde')
#plt.bar(data.date, new_sleep_time)
#plt.scatter(sleep, new_sleep_time)
plt.show()

在這里耍了一個小聰明,因為python與matlab不同,python的時間數(shù)據(jù)類型像是一個時間流,就是說每一個時間都是確定唯一的。舉個例子,你如果想單單用0-24小時來做橫坐標是做不到的,它前面必定(即使不顯示)還有個年月日的日期,如果你不顯示要求它就默認為今天。

所以我想橫坐標是我從3.12-5.1這些天數(shù),而縱坐標是0-24小時如何實現(xiàn)呢?我把我睡覺、起床的時間用浮點數(shù)據(jù)來表示,區(qū)間是[0,24],再把六十進制轉(zhuǎn)化為一百進制就可以精確表示時間了,這也是函數(shù)time_to_int(num)的功能。

Figure_2.png

Figure_3.png

Figure_4.png

Figure_5.png

Figure_6.png

Figure_7.png

從這六張圖中可以很直觀的看出來,我在8:20-8:40這個時間段起床的頻率尤其的高。震驚我自己的是竟然有三次是在5點就起床了,當然那只是曇花一現(xiàn)。

而我晚上睡覺集中在23:00-次日1點之間,在零點入睡的頻率更為高一些。

Figure_10.png

Figure_11.png

這兩張圖所表達的意思是,我每天的睡眠時間以及頻率圖??芍颐刻焖邆€半小時到八個半小時是最多的,但是睡九到十個小時的懶覺的時候也是很多,太頹廢了啊。居然還要一天睡了十二個小時,震驚。

Figure_9.png

這張圖比較難以理解,也不是很直觀,卻很重要,里面有些規(guī)律因為數(shù)據(jù)量太少而并不直觀。但是這畢竟是我的生活,我還是很敏銳的發(fā)現(xiàn)了一些規(guī)律。

這張圖說的是晚上入睡時間點和睡眠時間長度之間的關(guān)系。大家可以很清晰得看出來,凡是零點以前入睡的,睡眠時間都至少大于六個小時。而零點以后入睡的呢?有五次睡眠時間不足六小時,有兩次連四個小時都不到,說明睡眠質(zhì)量已經(jīng)差到一定地步了。

還有一個規(guī)律,那就是無論時零點前入睡,還是零點后入睡,散點都呈現(xiàn)著集中在八小時周圍并向外延伸蔓延的規(guī)律,可見八小時睡眠是我最佳的睡眠時間長度。再仔細分析一下呢,零點前入睡我睡眠時間多在8-10這個區(qū)間,而零點后卻不這樣,在6-10區(qū)間內(nèi)呈近似正態(tài)分布。當然這有可能是數(shù)據(jù)太少的原因,等我攢足了數(shù)據(jù),再做仔細分析。

在生活里,從自己的生活數(shù)據(jù)中挖掘意想不到的信息是不是很有趣呢?這也是數(shù)據(jù)科學這個行業(yè)如此吸引人的原因之一吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容