2020年はコロナで在宅勤務中心となり、歩くことが減りましたね。
常に身に着けているFitbitのデータを使って2019年と2020年の歩数を比べてみました。
確認環境
Python 3.8.5 curl 7.29.0
歩数JSONの取得
# 2020/1/1から2020/12/31までの歩数を日ごとに取得 curl -i -H "Authorization: Bearer <発行したアクセストークン>" \ https://api.fitbit.com/1/user/-/activities/steps/date/2020-01-01/2020-12-31.json -o year_2020.json
2019年も同様に取得
JSON→CSVに変換
# 上記のJSONを基にCSVを作成するpython3プログラム # yyyy-mm-dd形式の日付,月,週番号,歩数 の形式で出力 #!/usr/bin/python3 # -*- coding:utf8 -*- import os import codecs import json from datetime import datetime # yyyy-mm-dd形式の文字列日付から週番号を返す # 新年最初の日曜日の週が1、それより前は0週目 def get_week_no(date_str): date = datetime.strptime(date_str, '%Y-%m-%d') # 年の週番号(週の最初の日は日曜日) 新年の最初の日曜日より前の日付は第0週 return date.strftime("%U") # yyyy-mm-dd形式の文字列日付から月を返す def get_month(date_str): date = datetime.strptime(date_str, '%Y-%m-%d') return date.strftime("%m") def parse_json_csv(in_json_path, out_csv_path): with codecs.open(in_json_path) as fr, codecs.open(out_csv_path, 'w', 'utf-8') as fw: json_doc = json.load(fr) for elem in json_doc['activities-steps']: # CSV形式で出力 fw.write('{},{},{},{}\r\n'.format(elem['dateTime'],get_month(elem['dateTime']) , get_week_no(elem['dateTime']) , elem['value'])) if __name__ == '__main__': # 環境変数から各種パラメータを取得 in_json_path = os.environ['IN_JSON_PATH'] out_csv_path = os.environ['OUT_CSV_PATH'] parse_json_csv(in_json_path, out_csv_path)
Excelでグラフ描画
Excelで月単位で平均歩数をグラフ描画しました。
やはり2020年4月はテレワーク開始と緊急事態宣言とでガクっと減りました。解除された5月以降は多少増えたものの、2019年と比較すると各月で2,000歩くらい減ってますね。2020年10月以降はさらに出勤頻度が減ったので歩数が減っていってます。2019年の10-12月以降が増加傾向のは何でだったっけな。
感覚的に減ったのはわかってましたが、このように可視化すると良いですね。あの頃は...なんて振り返ったりもできますし。Fitbitでは睡眠記録も取れているので、今度は睡眠時間編をやってみようかな。
参考にしました