Subscribed unsubscribe Subscribe Subscribe

SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

直近一ヶ月の曜日別平均起床時間と就寝時間を算出してみた。

よく人から「眠そう」だと言われるので曜日別の平均起床時間と平均就寝時間を算出しようと思う。僕はiPhoneアプリで自分の行動をざっくり記録に残すようにしているのだけれど、その記録から直近一ヶ月の睡眠時間と起床時間を抽出して、平均を算出する。Pythonを書いていると文字コード関連でよくハマるのだけれど、時間操作についても結構よく手こずっていることがある。Timestamp型やDateTime型の操作はなかなか面倒なことが多く、大抵はUNIXタイムに直して単純な数値計算にしてあげないといけない。

また、時間というものは制限があって、1日は24時間だと決まっている。だが、今回出そうとしている平均睡眠時間だとどうだろう。月曜の23時に寝ればそれは月曜の23時就寝と言えるが、夜更しをして火曜の01時に寝たらそれは火曜の01時就寝と言えるだろうか。僕個人としてはここは月曜の25時と出してあげたいと感覚的に思う。その人は月曜に夜更しをする人間であり、月曜はいつも23時退社なんだけれど、どうしてもジャンプ読みたいからコンビニで立ち読みしてから家に帰って寝る人は「月曜は(多忙な社畜なんだけど、ジャンプを読みたいので)夜更しをする」と置いてあげたい。まぁこれは僕のことなんだけど、こんな感じで24時という制約上単純に平均時間を求めると1日ずれる可能性が発生するため考慮して計算をしてあげないといけない。今回は深夜4時までを計算対象の日の就寝時間を置いて、4時以降は翌日の就寝時間と置いた。
そして、平均時間を算出するためには日にちのバラつきを統一する必要があるため、仮起きの日にちを定義して時間のみの平均値を取れるようにしている。ちなみにPandasで行列計算してる。(for文最近使わなくなった。。)


結果は以下のようになった。

sotoshigoto@soto:~/workspace/PyData/sample$ python calcAwakeAndsleepAverageTime.py 
   dayOfWeek calcAwakeTime calcSleepTime
0          0      05:47:45      01:40:00
1          1      06:16:20      02:24:00
2          2      06:36:20      03:01:40
3          3      06:12:45      01:33:00
4          4      06:53:00      02:41:00
5          5      07:24:20      02:31:00
6          6      07:06:00      02:17:00
OK! test

※dayOfWeek : 0-月曜, 1-火曜, 2-水曜, 3-木曜, 4-金曜, 5-土曜, 6-日曜

うん、感覚と合うね。
基本僕は夜更し人間で睡眠時間はだいたい4〜5時間なのでいい感じに出ている気がする。睡眠時間が3時間の結果も多いけれど、それはこの一ヶ月は朝早く出社して仕事することもちょこちょこあるのでその影響だと思う。そして土日は朝7時ぐらいにランニングしているのでこれまた感覚と合う結果となった。
この結果から僕がよく人から「眠そう」と言われることは間違いではないと言える(別に算出しなくてもわかるけど)。夜更しの理由は大抵深夜にUdacityの講義を受けてるからなんだけど、仕事が忙しいとUdacity講義受ける時間が無くなるので、そりゃ睡眠時間削るよねって話になる。よい生活サイクルを回せてはいないので、来年以降は落ち着いてほしいと願うばかり。

Remove all ads