血液検査の結果も2015年から記録を続け、そこそこ貯まってきたので年毎にプロットしたら何か見えるかな?と思って描いてみた。今回はPythonを使いました。
色々計っているけど関心があるのは血中リン濃度くらいなので、横軸は月、縦軸はリンの値のプロットを描いています。他にカリウムなんかも大事なんだけど、これは上がりすぎると死ぬってだけでたまに外れ値があってもまぁ生きていればいいやという感じなのでスルーです。リンは高い状態が長く続くとじわじわ体に悪影響が出てくるタイプのものなので、よく見ています。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
plt.figure(figsize=(20,5))
def create_plot(dd, pp, label, color):
norm_dates = [datetime.datetime(2020, d.month, d.day) for d in dd]
plt.plot(norm_dates, pp, label=label, color=color)
df = pd.read_csv('./summary.csv', sep=',',
index_col='日付',
date_parser=lambda dates: pd.datetime.strptime(dates, '%Y-%m-%d'),
usecols=['日付', '無機リン(P)'])
dates = df.index
p = df['無機リン(P)']
colors = ['#0000FF', '#AAAA00', '#00FF00', '#009999', '#888888']
for i in range(5):
y = 2019-i
start = f'{y}-1-1'
stop = f'{y}-12-31'
create_plot(dates[(dates > start) & (dates < stop)], p[(dates > start) & (dates < stop)], f'{y}', colors[i])
plt.fill([datetime.datetime(2020,1,1), datetime.datetime(2020,12,31), datetime.datetime(2020,12,31), datetime.datetime(2020,1,1)], [5.5, 5.5, 7, 7], color='#FF000022')
plt.legend(loc=1)
ticks = [datetime.datetime(2020, m+1, 15) for m in range(12)]
plt.xticks(ticks, [m.strftime('%m') for m in ticks])
plt.xlim('2020-01-01', '2020-12-31')
plt.ylim(3, 7)
……わからん! 点数を減らすために平均を取ってみる。
def create_plot(dd, pp, label, color):
norm_dates = [datetime.datetime(2020, d.month, d.day) for d in dd]
mean = pp.groupby(dd.month).mean().values
start = 13 - len(mean)
x = [datetime.datetime(2020,i,15) for i in range(start, start+len(mean))]
plt.plot(x, mean, label=label, color=color)
2018年はわりとちゃんとやってたのに、去年(2019年)はだらしないな。なんとなくだけど、連休がある月に上がる傾向にあるように思える。前々から「食べなさすぎてもリンは上がるのでは」と考えているけど、自分は休日の方が食べないことの方が多いので関連付けたくなる。
この後statsmodelsとかも使って季節性とかも探ってみたかったけど、今のところうまくいっていないので没となっております。