東京都の感染者数の7日移動平均をプロット – コロナウィルスとの闘い
May 1, 2020 – 10:47 pm東京都のサイト「都内コロナウィルス感染動向」で公開している陽性感染者数データをダウンロードし、1月24日~今日(5月1日)の感染者数推移、そしてその7日移動平均を算出し、棒グラフとして出力してみた。
陽性感染者数が公表される曜日により偏りがあるので、公表される生データに加え、7日移動平均した図を算出・出力し、曜日変動を補償した感染者数の推移をみてみた。
上図から、東京都の感染者数は5月11,12日あたりでピークアウトし、低下していることがみてとれる。
非常事態宣言が出されたのが4月9日だったのだが、その2日後にはピークアウトしているのであるが、感染から発症そして感染確認までのタイムラグが12日程度といわれているので、ピークアウトは非常事態宣言による効果ということではないと思われる。
非常事態宣言が出されてから12日後(4月21日)の前後で感染者数の低下を表す傾きが多少大きくなっていることをみると、都民の「自粛」行動の効果が、それなりにあったように思われる。
そろそろ非常事態の出口を見据えなくてはならないのではと思うがいかがだろう。
Python スクリプト ソース:
参考のため、データの読み込みから棒グラフを出力するまでのPythonのソースを以下に示す:
import matplotlib import matplotlib.pyplot as plt import pandas as pd import numpy as np import datetime df = pd.read_csv('https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv') tokyo_df = df[['公表_年月日', '患者_年代', '患者_性別']] tokyo_df.columns = ['date', 'age', 'sex'] tokyo_df_count = tokyo_df['date'].value_counts().sort_index(ascending=True) df_t = pd.DataFrame(tokyo_df_count) df_t.columns = ['infected'] dates = pd.date_range('20200124', 'today', freq='D') df = pd.DataFrame(pd.Series(range(len(dates)), index=dates)) df.columns = ['infected'] for dates in df.index: str_date = dates.strftime("%Y-%m-%d") try: df.infected[str_date] = df_t.infected[str_date] except: df.infected[str_date] = 0 str_date='2020-05-01' df.infected[str_date] = 165 list_infected = df.infected.to_list() date_index = [df.index[0].strftime('%Y-%m-%d')] for i in range(1, len(list_infected)): date_index.append(df.index[i].strftime('%Y-%m-%d')) x = pd.date_range(date_index[0], periods=len(date_index),freq='d') y = np.array(list_infected) num = 7 b = np.ones(num)/num y2 = np.convolve(y, b, mode='same') fig = plt.figure(figsize=(10,10)) ax = fig.add_subplot(2,1,1) ax.bar(x, y,label='raw data') ax.legend() ax.grid() ax = fig.add_subplot(2,1,2) ax.bar(x, y2, label='comvoluted') ax.legend() ax.grid() plt.ylim(0, 205) plt.show()