概要
COVID-19の国内の感染状況について、自分で手を動かしてデータを確認する為のサンプルコードです。
感染者数のデータ
下記に掲載されているCSVファイルを利用。
https://github.com/kaz-ogiwara/covid19
都道府県ごとの数値を取り扱ったprefectures.csvとprefectures-2.csvを使って分析をします。
都道府県データの読込み
2ファイルのデータを読み込んでマージします。
import datetime import pandas as pd import matplotlib from matplotlib import pylab as plt %matplotlib inline # フォント設定(環境によってここに指定する値は異なります) from matplotlib import rcParams rcParams['font.family'] = 'sans-serif' rcParams['font.sans-serif'] = ['MS PGothic', 'Osaka', 'Hiragino Sans', 'TakaoGothic'] # csvデータの取得 prefectures = pd.read_csv('https://raw.githubusercontent.com/kaz-ogiwara/covid19/master/data/prefectures.csv') prefectures2 = pd.read_csv('https://raw.githubusercontent.com/kaz-ogiwara/covid19/master/data/prefectures-2.csv') # 両データのマージ # 都道府県の名前が途中から末尾の県の有無に変更があるので最初2文字をキーとする prefectures['pref'] = prefectures['都道府県'].apply(lambda x: x[:2]) prefectures.drop('都道府県', axis=1, inplace=True) prefectures2['pref'] = prefectures2['都道府県'].apply(lambda x: x[:2]) df = prefectures2.merge(prefectures, on=['年', '月', '日', 'pref'], how='left').reset_index(drop=True).fillna(0) # 日付をdatetimeに変換 def to_datetime(row): return datetime.datetime(row['年'], row['月'], row['日']) df['日付'] = df[['年', '月', '日']].apply(to_datetime, axis=1) # 今回使わないカラムを落としておきます df.drop(['年', '月', '日'], axis=1, inplace=True) # カラム名を変更 df.rename(columns={'患者数(2020年3月28日からは感染者数)': '感染者数'}, inplace=True) # 昔のデータは使いづらそうなので3/28からにしておく df = df[df['日付'] >= '2020-03-28'].reset_index(drop=True).copy() # 日付をindexに設定 df.set_index('日付', inplace=True)
マージで県名に差異があったりと少し手こずったので、主に分析したい月のデータ件数が正しいことを確認しておきます。
下記は4月分データが30日×47都道府県分あることをチェック。
len(df[(df.index >= '2020-04-01') & (df.index <= '2020-04-30')]) / 30 #=> 47
生成されたデータの中身はこんな感じです。
df.head()
日付 | 都道府県 | PCR検査陽性者数 | PCR検査人数 | 陽性率 | 検査人数の集計期間に対応する陽性者数 | pref | 感染者数 | 現在は入院等 | 退院者 | 死亡者 |
---|---|---|---|---|---|---|---|---|---|---|
2020-03-28 | 北海道 | 172 | 1976.0 | 0 | 0.0 | 北海 | 172.0 | 44.0 | 121.0 | 7 |
2020-03-28 | 青森県 | 6 | 124.0 | 0 | 0.0 | 青森 | 6.0 | 6.0 | 0.0 | 0 |
2020-03-28 | 岩手県 | 0 | 50.0 | 0 | 0.0 | 岩手 | 0.0 | 0.0 | 0.0 | 0 |
2020-03-28 | 宮城県 | 2 | 187.0 | 0 | 0.0 | 宮城 | 2.0 | 1.0 | 1.0 | 0 |
2020-03-28 | 秋田県 | 4 | 211.0 | 0 | 0.0 | 秋田 | 4.0 | 2.0 | 2.0 | 0 |
全国データの読込み
比較対象として使う為、全国データも読み込んでおきます。
# 全国データの取得 summary = pd.read_csv('https://raw.githubusercontent.com/kaz-ogiwara/covid19/master/data/summary.csv') # 日付をdatetimeに変換 def to_datetime(row): return datetime.datetime(row['年'], row['月'], row['日']) summary['日付'] = summary[['年', '月', '日']].apply(to_datetime, axis=1) # 今回使わないカラムを落としておきます summary.drop(['年', '月', '日', 'URL'], axis=1, inplace=True) # 日付をindexに指定 summary.set_index('日付', inplace=True) # トータルのの前日との差から当日の新規感染者数や検査数を出します # 「人工呼吸器又は集中治療室に入院している者」を「重傷者」として扱います summary['当日陽性者'] = summary['PCR検査陽性者'].diff(periods=1) summary['当日検査実施人数'] = summary['PCR検査実施人数'].diff(periods=1) summary['当日死亡者'] = summary['死亡者'].diff(periods=1) summary['当日重傷者'] = summary['人工呼吸器又は集中治療室に入院している者'].diff(periods=1) summary['当日有症状者'] = summary['有症状者'].diff(periods=1) summary['当日無症状者'] = summary['無症状者'].diff(periods=1) summary['当日退院者'] = summary['退院者'].diff(periods=1)
東京都の感染者数推移
全国データでやったのと同じように感染者数の推移を確認します。
まずは東京で。感染者数の実数と7日間移動平均を表示します。
pref_df = df[df['pref'] == '東京'].copy() pref_df['当日感染者'] = pref_df['感染者数'].diff(periods=1) pref_df['当日感染者(移動平均)'] = pref_df['当日感染者'].rolling(7, center=True).mean() # axの設定処理の共通化 import matplotlib.ticker as ticker from matplotlib.dates import DateFormatter def set_xticks(ax, df, start_date, end_date): df = df[(df.index >= start_date) & (df.index <= end_date)] ax.xaxis.set_major_formatter(DateFormatter('%b %d')) ax.xaxis.set_major_locator(ticker.LinearLocator(int(len(df) / 3))) ax.set_xlim([start_date, end_date]) return ax fig, ax = plt.subplots(figsize=(15,7)) ax.bar(pref_df.index, pref_df['当日感染者'], alpha=0.5, color='blue') ax.bar(pref_df.index, pref_df['当日感染者(移動平均)'], alpha=0.3, color='red') set_xticks(ax, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 30))
青が実数。赤が移動平均です。
都道府県の感染者数比較
感染者数上位6県で移動平均の推移を比較してみます。
def plot_pref_df(df, pref, ax, color): pref_df = df[df['pref'] == pref].copy() pref_df['当日感染者'] = pref_df['感染者数'].diff(periods=1) pref_df['当日感染者(移動平均)'] = pref_df['当日感染者'].rolling(7, center=True).mean() ax.plot(pref_df.index, pref_df['当日感染者(移動平均)'], color=color, linewidth=4, alpha=0.5) fig, ax = plt.subplots(figsize=(15,7)) plot_pref_df(df, '東京', ax, color='red') plot_pref_df(df, '大阪', ax, color='blue') plot_pref_df(df, '神奈', ax, color='green') plot_pref_df(df, '千葉', ax, color='orange') plot_pref_df(df, '埼玉', ax, color='purple') plot_pref_df(df, '兵庫', ax, color='yellow') ax.legend(['東京', '大阪', '神奈川', '千葉', '埼玉', '兵庫']) set_xticks(ax, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 29))
どの県も4月中旬以降、徐々に感染者数を減らしています。大阪は減少傾向が始まるのが少し遅いように見えますが検査数の問題も絡んでいそうです(後述)。
感染者数トップ6は下記で出しました。
df.groupby('pref')['感染者数'].max().reset_index().sort_values('感染者数', ascending=False).head(10)
pref | 感染者数 | |
---|---|---|
26 | 東京 | 4152.0 |
9 | 大阪 | 1627.0 |
32 | 神奈 | 1028.0 |
7 | 埼玉 | 851.0 |
5 | 千葉 | 810.0 |
4 | 北海 | 767.0 |
3 | 兵庫 | 645.0 |
34 | 福岡 | 642.0 |
24 | 愛知 | 488.0 |
1 | 京都 | 319.0 |
全国との比較
全国データも合わせてplotしてみます。Y軸は全国だけスケールを別途指定し、残りの6都府県は同じスケールで表示します。
def plot_pref_df(df, pref, ax, color): pref_df = df[df['pref'] == pref].copy() pref_df['当日感染者'] = pref_df['感染者数'].diff(periods=1) pref_df['当日感染者(移動平均)'] = pref_df['当日感染者'].rolling(7, center=True).mean() ax.plot(pref_df.index, pref_df['当日感染者(移動平均)'], color=color, linewidth=4, alpha=0.5) fig, ax = plt.subplots(figsize=(15,7)) plot_pref_df(df, '東京', ax, color='red') plot_pref_df(df, '大阪', ax, color='blue') plot_pref_df(df, '神奈', ax, color='green') plot_pref_df(df, '千葉', ax, color='orange') plot_pref_df(df, '埼玉', ax, color='purple') plot_pref_df(df, '兵庫', ax, color='yellow') ax.legend(['東京', '大阪', '神奈川', '千葉', '埼玉', '兵庫']) ax2 = ax.twinx() summary['当日陽性者(移動平均)'] = summary['当日陽性者'].rolling(7, center=True).mean() ax2.plot(summary.index, summary['当日陽性者(移動平均)'], color='#333333') set_xticks(ax, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 29))
黒が全国の推移です。ほぼ東京と同じ動きになっています。
東京とそれ以外の比較
東京とそれ以外の県のSUMではどのような違いがあるのでしょうか。
tokyo = df[df.pref == '東京'].copy() other = df[df.pref != '東京'].groupby(level=0).sum() fig, ax = plt.subplots(figsize=(15,7)) def plot_pref_df(pref_df, ax, color): pref_df['当日感染者'] = pref_df['感染者数'].diff(periods=1) pref_df['当日感染者(移動平均)'] = pref_df['当日感染者'].rolling(7, center=True).mean() ax.plot(pref_df.index, pref_df['当日感染者(移動平均)'], color=color, linewidth=4, alpha=0.5) ax2 = ax.twinx() plot_pref_df(tokyo, ax, color='red') plot_pref_df(other, ax2, color='blue') ax.legend(['東京']) ax2.legend(['その他']) set_xticks(ax, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 29))
Y軸のスケールは同じようになるように調整してあります。
赤が東京、青がそれ以外です。
この2つで比較した場合は特に動きに違いは見られないようです。
検査数と陽性率
都道府県ごとの検査数と陽性率を確認してみます。
コード上で4月30日以降のデータをカットしていますが、これは5月1日の大阪の検査数が3527件に跳ね上がっていてグラフが見づらくなった為です。大阪の検査数が急激に増えている理由は未確認です。厚労省のデータも同じ数字になっていたのでデータの間違いではなさそう。
def plot_pref_df(df, pref, ax, ax2, color): pref_df = df[df['pref'] == pref].copy() pref_df['当日感染者'] = pref_df['感染者数'].diff(periods=1) pref_df['当日PCR検査人数'] = pref_df['PCR検査人数'].diff(periods=1) pref_df['当日感染者(移動平均)'] = pref_df['当日感染者'].rolling(7, center=True).mean() pref_df['当日PCR検査人数(移動平均)'] = pref_df['当日PCR検査人数'].rolling(7, center=True).mean() pref_df['当日陽性率(移動平均)'] = pref_df['当日感染者(移動平均)'] / pref_df['当日PCR検査人数(移動平均)'] ax.plot(pref_df.index, pref_df['当日PCR検査人数(移動平均)'], color=color, linewidth=4) ax2.plot(pref_df.index, pref_df['当日陽性率(移動平均)'], color=color, linewidth=4) fig, ax = plt.subplots(figsize=(15,7)) fig, ax2 = plt.subplots(figsize=(15,7)) plot_pref_df(df[df.index < '2020-04-30'], '東京', ax, ax2, color='red') plot_pref_df(df[df.index < '2020-04-30'], '大阪', ax, ax2, color='blue') plot_pref_df(df[df.index < '2020-04-30'], '神奈', ax, ax2, color='green') plot_pref_df(df[df.index < '2020-04-30'], '千葉', ax, ax2, color='orange') ax.legend(['東京', '大阪', '神奈川', '千葉']) ax2.legend(['東京', '大阪', '神奈川', '千葉']) ax.set_title('PCR検査人数') ax2.set_title('陽性率') set_xticks(ax, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 27)) set_xticks(ax2, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 27))
PCR検査人数の推移がこちら。
関東3件の検査数が4月中旬以降横ばいなのに対して大阪(青)の検査数はかなり伸びています。
続いて陽性率。
どの都府県も下落傾向ですが、大阪では検査数を増やしたことによって下落幅が大きくなっています。
東京と大阪の感染者数と陽性率を比較してみます。
def plot_pref_df(df, pref, ax, ax2, color): pref_df = df[df['pref'] == pref].copy() pref_df['当日感染者'] = pref_df['感染者数'].diff(periods=1) pref_df['当日PCR検査人数'] = pref_df['PCR検査人数'].diff(periods=1) pref_df['当日感染者(移動平均)'] = pref_df['当日感染者'].rolling(7, center=True).mean() pref_df['当日PCR検査人数(移動平均)'] = pref_df['当日PCR検査人数'].rolling(7, center=True).mean() pref_df['当日陽性率(移動平均)'] = pref_df['当日感染者(移動平均)'] / pref_df['当日PCR検査人数(移動平均)'] ax.bar(pref_df.index, pref_df['当日感染者(移動平均)'], color=color, linewidth=4, alpha=0.5) ax2.plot(pref_df.index, pref_df['当日陽性率(移動平均)'], color=color, linewidth=4) fig, ax = plt.subplots(figsize=(15,7)) ax2 = ax.twinx() plot_pref_df(df[df.index < '2020-04-30'], '東京', ax, ax2, color='red') plot_pref_df(df[df.index < '2020-04-30'], '大阪', ax, ax2, color='blue') ax.legend(['東京', '大阪']) ax.set_title('感染者数と陽性率') set_xticks(ax, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 27)) set_xticks(ax2, summary, datetime.datetime(2020, 4, 1), datetime.datetime(2020, 4, 27))
棒グラフが感染者、折れ線が陽性率です。
感染者数のみを比較したグラフでは大阪は鈍化のペースが遅いように見えましたが、陽性率で見ると下落のペースは早くなっています。
検査の敷居を低くすれば発見が増えるので感染者は増え、ハズレも増えるので陽性率は下がることが想像されます。しかし検査の拡充によってどういった割合で陽性と陰性が増えていくのかデータがない為、この数字をどう見るべきかはなんとも言えません。
2つの大都市がそれぞれ違った検査に対するアプローチをしていることは、今後その効果を検証する上では役に立ちそうです。
人口比での感染者推移
下記サイトから都道府県の人口を取得します。(Excelファイル)
https://www.stat.go.jp/naruhodo/c1data/02_01_stt.html
厚労省のデータもそうですが、国のデータの多くがExcelやPDFでのみ配布されているのはイケてないと思います。オープンデータでもよく値が取りづらいExcel形式で配布がされていて、読み込むのに一手間かかったります。
下記はCSVに加工したもの。人口は千人単位です。
都道府県,人口 北海道,5320 青森,1278 岩手,1255 宮城,2323 秋田,996 山形,1102 福島,1882 茨城,2892 栃木,1957 群馬,1960 埼玉,7310 千葉,6246 東京,13724 神奈川,9159 新潟,2267 富山,1056 石川,1147 福井,779 山梨,823 長野,2076 岐阜,2008 静岡,3675 愛知,7525 三重,1800 滋賀,1413 京都,2599 大阪,8823 兵庫,5503 奈良,1348 和歌山,945 鳥取,565 島根,685 岡山,1907 広島,2829 山口,1383 徳島,743 香川,967 愛媛,1364 高知,714 福岡,5107 佐賀,824 長崎,1354 熊本,1765 大分,1152 宮崎,1089 鹿児島,1626 沖縄,1443
人口をこれまで使ってきたDataFrameにマージします。
# 上記のCSVを読み込む population = pd.read_csv('population.csv') population['pref'] = population['都道府県'].apply(lambda x: x[:2]) population.drop('都道府県', axis=1, inplace=True) df = df.merge(population)
4/30時点での10万人あたりの感染者数を出します。
df['10万人あたりの感染者数'] = df['感染者数'] / df['人口'] * 100 tmp_df = df[df.index == datetime.datetime(2020, 4, 30)] tmp_df.sort_values('10万人あたりの感染者数', ascending=False)[['都道府県', '感染者数', '人口', '10万人あたりの感染者数']]
ソートして感染者数が多い都道府県から順に表示します。
日付 | 都道府県 | 感染者数 | 人口 | 10万人あたりの感染者数 |
---|---|---|---|---|
2020-04-30 | 東京 | 4152.0 | 13724 | 30.253570 |
2020-04-30 | 石川 | 251.0 | 1147 | 21.883173 |
2020-04-30 | 富山 | 202.0 | 1056 | 19.128788 |
2020-04-30 | 大阪 | 1627.0 | 8823 | 18.440440 |
2020-04-30 | 福井 | 122.0 | 779 | 15.661104 |
2020-04-30 | 北海道 | 767.0 | 5320 | 14.417293 |
2020-04-30 | 千葉 | 810.0 | 6246 | 12.968300 |
2020-04-30 | 福岡 | 642.0 | 5107 | 12.570981 |
2020-04-30 | 京都 | 319.0 | 2599 | 12.273952 |
2020-04-30 | 兵庫 | 645.0 | 5503 | 11.720880 |
2020-04-30 | 埼玉 | 851.0 | 7310 | 11.641587 |
2020-04-30 | 神奈川 | 1028.0 | 9159 | 11.223933 |
2020-04-30 | 高知 | 74.0 | 714 | 10.364146 |
2020-04-30 | 沖縄 | 142.0 | 1443 | 9.840610 |
2020-04-30 | 群馬 | 146.0 | 1960 | 7.448980 |
2020-04-30 | 岐阜 | 146.0 | 2008 | 7.270916 |
2020-04-30 | 滋賀 | 96.0 | 1413 | 6.794055 |
2020-04-30 | 和歌山 | 62.0 | 945 | 6.560847 |
2020-04-30 | 愛知 | 488.0 | 7525 | 6.485050 |
2020-04-30 | 山梨 | 52.0 | 823 | 6.318348 |
2020-04-30 | 山形 | 68.0 | 1102 | 6.170599 |
2020-04-30 | 奈良 | 82.0 | 1348 | 6.083086 |
2020-04-30 | 茨城 | 163.0 | 2892 | 5.636238 |
2020-04-30 | 広島 | 155.0 | 2829 | 5.478968 |
2020-04-30 | 大分 | 60.0 | 1152 | 5.208333 |
2020-04-30 | 佐賀 | 41.0 | 824 | 4.975728 |
2020-04-30 | 福島 | 73.0 | 1882 | 3.878852 |
2020-04-30 | 宮城 | 88.0 | 2323 | 3.788205 |
2020-04-30 | 愛媛 | 47.0 | 1364 | 3.445748 |
2020-04-30 | 島根 | 23.0 | 685 | 3.357664 |
2020-04-30 | 新潟 | 75.0 | 2267 | 3.308337 |
2020-04-30 | 長野 | 66.0 | 2076 | 3.179191 |
2020-04-30 | 香川 | 28.0 | 967 | 2.895553 |
2020-04-30 | 栃木 | 54.0 | 1957 | 2.759325 |
2020-04-30 | 熊本 | 47.0 | 1765 | 2.662890 |
2020-04-30 | 三重 | 45.0 | 1800 | 2.500000 |
2020-04-30 | 山口 | 32.0 | 1383 | 2.313811 |
2020-04-30 | 青森 | 26.0 | 1278 | 2.034429 |
2020-04-30 | 静岡 | 72.0 | 3675 | 1.959184 |
2020-04-30 | 秋田 | 16.0 | 996 | 1.606426 |
2020-04-30 | 宮崎 | 17.0 | 1089 | 1.561065 |
2020-04-30 | 長崎 | 17.0 | 1354 | 1.255539 |
2020-04-30 | 岡山 | 23.0 | 1907 | 1.206083 |
2020-04-30 | 徳島 | 5.0 | 743 | 0.672948 |
2020-04-30 | 鹿児島 | 10.0 | 1626 | 0.615006 |
2020-04-30 | 鳥取 | 3.0 | 565 | 0.530973 |
2020-04-30 | 岩手 | 0.0 | 1255 | 0.000000 |
東京は人口比で見ても突出しています。
また石川、富山、福井の北陸で感染者が多いようです。
上記をグラフにするとこうなります。
fig, ax = plt.subplots(figsize=(15,7)) tmp_df.sort_values('10万人あたりの感染者数', ascending=False)[['10万人あたりの感染者数']].plot(kind='bar', ax=ax) ax.axis('off')
都道府県によって蔓延状況にかなりの差があることがわかります。
感染者数のみだと心もとないので陽性率も並べてみます。
tmp_df = df[df.index == datetime.datetime(2020, 4, 30)].copy() tmp_df['陽性率'] = tmp_df['PCR検査陽性者数'] / tmp_df['PCR検査人数'] tmp_df = tmp_df.sort_values('10万人あたりの感染者数', ascending=False) fig, ax = plt.subplots(figsize=(15,7)) tmp_df[['10万人あたりの感染者数']].plot(kind='bar', ax=ax, color='blue', position=0) ax2 = ax.twinx() tmp_df[['陽性率']].plot(kind='bar', ax=ax2, color='red', position=1) ax.axis('off')
青が10万人あたりの感染者数、赤が陽性率。
概ね感染者数と陽性率には相関があるようです。左から12番目の他より少し抜けて陽性率が高いのは神奈川県。
陽性率が高く出ている県とそうでない県について今後の収束ペースを分析をしていくと何か見えてくるかもしれません。
人口と10万人あたりの感染者数で散布図を出してみます。
tmp_df = df[df.index == datetime.datetime(2020, 4, 30)] tmp_df.plot(kind='scatter', x='人口', y='10万人あたりの感染者数')
大都市ほど感染が広まりやすいという傾向がある為、両者の相関はそれなりにはありそうです。
相関係数は0.617でした。
tmp_df[['人口', '10万人あたりの感染者数']].corr()['10万人あたりの感染者数']['人口'] #=> 0.6174923414924649
続いて陽性率と10万人あたりの感染者数の相関。
tmp_df.plot(kind='scatter', x='陽性率', y='10万人あたりの感染者数') tmp_df[['陽性率', '10万人あたりの感染者数']].corr()['陽性率']['10万人あたりの感染者数'] #=> 0.872994206884142
相関係数0.873。
都道府県ごとに検査体制の差はあるものの全体で見ればだいたい収まるべき範囲に収まっていると言って良いでしょうか。
致死率
都道府県ごとの致死率を比較して特筆すべき点がないか確認してみます。
tmp_df['死亡者'] = pd.to_numeric(tmp_df['死亡者'], errors='coerce') tmp_df['致死率'] = tmp_df['死亡者'] / tmp_df['感染者数'] tmp_df = tmp_df.sort_values('致死率', ascending=False) fig, ax = plt.subplots(figsize=(15,7)) tmp_df[['10万人あたりの感染者数']].plot(kind='bar', ax=ax, color='blue', position=0) ax2 = ax.twinx() tmp_df[['致死率']].plot(kind='bar', ax=ax2, color='red', position=1) ax.axis('off')
青が10万人あたりの感染者数、赤が致死率。
感染者数が増えることで致死率が上がるといった事象は今のところ起きていないようです。
最も致死率が高いのは群馬の10.3%ですが感染者数146人、死亡者15人と件数が少ないためこれが意味のある数字なのかはこれだけではわかりません。
全国平均では2.91%でした。
tmp_df['死亡者'].sum() / tmp_df['感染者数'].sum() #=> 0.029158905287290444
10万人あたりのPCR検査検査人数についても見てみましょう。
tmp_df['10万人あたりのPCR検査人数'] = tmp_df['PCR検査人数'] / tmp_df['人口'] * 100 fig, ax = plt.subplots(figsize=(15,7)) tmp_df[['10万人あたりのPCR検査人数']].plot(kind='bar', ax=ax, color='blue', position=0) ax2 = ax.twinx() tmp_df[['致死率']].plot(kind='bar', ax=ax2, color='red', position=1) ax.axis('off') tmp_df[['致死率', '10万人あたりのPCR検査人数']].corr()['10万人あたりのPCR検査人数']['致死率'] #=> 0.10767425226654537
青が10万人あたりのPCR検査人数、赤が致死率です。
この取り方だと検査数と致死率の間には相関は出てきませんでした。
検査数が増えれば軽症患者の感染者数が増加して致死率は下がりそうなところですが、他のファクターも関わってくるのでcorrだけでさらっと取れるような相関ではなさそうです。
直近の状況を確認する
ここまでは全体の数字を見てきましたが、直近の数字に絞って確認すると見えてくるものも変わってきそうです。
下記では4/24〜4/30の間の増分を確認しています。
tmp_df1 = df[df.index == datetime.datetime(2020, 4, 24)].set_index('pref') tmp_df2 = df[df.index == datetime.datetime(2020, 4, 30)].set_index('pref') columns = ['10万人あたりの感染者数', '感染者数'] tmp_df = tmp_df2[columns] - tmp_df1[columns] tmp_df = tmp_df.reset_index().merge(population) tmp_df['10万人あたりの感染者数'] = tmp_df['感染者数'] / tmp_df['人口'] * 100 tmp_df.sort_values('10万人あたりの感染者数', ascending=False)[['pref', '感染者数', '人口', '10万人あたりの感染者数']]
下記が過去2週間の人口10万人あたりの感染者数です。県名は前2文字で切ってあります。
pref | 感染者数 | 人口 | 10万人あたりの感染者数 |
---|---|---|---|
北海 | 205.0 | 5320 | 3.853383 |
富山 | 39.0 | 1056 | 3.693182 |
東京 | 419.0 | 13724 | 3.053046 |
石川 | 29.0 | 1147 | 2.528335 |
大阪 | 179.0 | 8823 | 2.028788 |
京都 | 33.0 | 2599 | 1.269719 |
神奈 | 116.0 | 9159 | 1.266514 |
埼玉 | 84.0 | 7310 | 1.149111 |
福岡 | 58.0 | 5107 | 1.135696 |
佐賀 | 9.0 | 824 | 1.092233 |
和歌 | 10.0 | 945 | 1.058201 |
島根 | 7.0 | 685 | 1.021898 |
兵庫 | 40.0 | 5503 | 0.726876 |
千葉 | 42.0 | 6246 | 0.672430 |
沖縄 | 9.0 | 1443 | 0.623701 |
広島 | 13.0 | 2829 | 0.459526 |
奈良 | 6.0 | 1348 | 0.445104 |
新潟 | 10.0 | 2267 | 0.441112 |
高知 | 3.0 | 714 | 0.420168 |
福島 | 7.0 | 1882 | 0.371945 |
静岡 | 13.0 | 3675 | 0.353741 |
青森 | 4.0 | 1278 | 0.312989 |
群馬 | 6.0 | 1960 | 0.306122 |
福井 | 2.0 | 779 | 0.256739 |
熊本 | 4.0 | 1765 | 0.226629 |
滋賀 | 3.0 | 1413 | 0.212314 |
茨城 | 6.0 | 2892 | 0.207469 |
愛知 | 14.0 | 7525 | 0.186047 |
山形 | 2.0 | 1102 | 0.181488 |
宮城 | 4.0 | 2323 | 0.172191 |
岡山 | 3.0 | 1907 | 0.157315 |
山梨 | 1.0 | 823 | 0.121507 |
長崎 | 1.0 | 1354 | 0.073855 |
山口 | 1.0 | 1383 | 0.072307 |
栃木 | 1.0 | 1957 | 0.051099 |
宮崎 | 0.0 | 1089 | 0.000000 |
大分 | 0.0 | 1152 | 0.000000 |
岩手 | 0.0 | 1255 | 0.000000 |
鹿児 | 0.0 | 1626 | 0.000000 |
秋田 | 0.0 | 996 | 0.000000 |
愛媛 | 0.0 | 1364 | 0.000000 |
香川 | 0.0 | 967 | 0.000000 |
徳島 | 0.0 | 743 | 0.000000 |
鳥取 | 0.0 | 565 | 0.000000 |
岐阜 | 0.0 | 2008 | 0.000000 |
三重 | 0.0 | 1800 | 0.000000 |
長野 | -1.0 | 2076 | -0.048170 |
県ごとの経済活動の再開の基準にはこうした値も参考にされそうです。他にも病床数や陽性率、感染経路不明数等の兼ね合いもあるのであくまで1要素としてですが。
改定履歴
Author: Masato Watanabe, Date: 2020-05-03, 記事投稿