[2020-06-27] 2020年5月分のデータを追加した。
このページを書いている時点で,日本では岩手県だけ新型コロナウイルスの感染者が確認されていない。つまり,新型コロナウイルスによる超過死亡が一番なさそうな県である。そこで,岩手県について,東京の超過死亡?,大阪市の超過死亡?と同様のグラフを描いてみることにする。
岩手県の死者数などの統計は岩手県毎月人口推計にある。2016年以降の毎月の死者数を iwatedeaths.csv というファイルに収めた。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('https://okumuralab.org/~okumura/python/data/iwatedeaths.csv')
単純に月ごとにプロットすると,大の月・小の月の影響で凸凹する。しかも,2020年のようなうるう年の2月は平年に比べて 3.6% もの「超過死亡」になってしまう。そこで,1日あたりの死者数に直してからプロットする。
def days(year, month):
m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
return m[month - 1] + ((month == 2) and
((year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0)))
perday = np.array([r[2] / days(r[0], r[1]) for i, r in df.iterrows()])
for y in range(2016, 2021):
plt.plot(df[df['year'] == y]['month'], perday[df['year'] == y], 'o-', label=y)
plt.xlabel('月')
plt.ylabel('1日あたりの死亡数')
plt.legend()
plt.savefig('iwatedeaths1.svg', bbox_inches="tight")
次のように描くほうがよいかもしれない:
plt.clf()
plt.plot(df[df['month'] == 1]['year'], perday[df['month'] == 1], 'o-', label='Jan')
plt.plot(df[df['month'] == 2]['year'], perday[df['month'] == 2], 'o-', label='Feb')
plt.plot(df[df['month'] == 3]['year'], perday[df['month'] == 3], 'o-', label='Mar')
plt.plot(df[df['month'] == 4]['year'], perday[df['month'] == 4], 'o-', label='Mar')
plt.plot(df[df['month'] == 5]['year'], perday[df['month'] == 5], 'o-', label='May')
plt.xlabel('年')
plt.ylabel('1日あたりの死亡数')
plt.xticks(range(2016, 2021))
plt.legend()
plt.savefig('iwatedeaths2.svg', bbox_inches="tight")
Last modified: