オリパラ前後の日本のコロナ死者数が先進国の中で突出して低い件

その買うを、もっとハッピーに。|ハピタス

pandasを使ってCovid-19(新型コロナウイルス)の各国の感染・死亡状況を視覚的・多角的に見ていこうと思います。特に、マスメディア(リベラルメディア)からはコロナ政策が破局的失敗であるかのように連日叩かれまくっている日本のコロナ政策が本当に失敗なのかどうか、感染者素・死者数の観点から、他の先進7カ国+α(準先進国)の国々と比較することで考察してみたいと思います。

スポンサーリンク

期間別新型コロナ感染者数・死者数

最近3ヶ月、1ヶ月半の2つの期間を設けて、その間の新型コロナウイルス感染者数と死者数を国別に見ていきたいた思います。先ずはデータの準備から始めます。

import pandas as pd

国別死者数データをダウンロードします。

df = pd.read_csv("https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/jhu/new_deaths.csv", index_col="date")
df.head(3)
World 2020 Summer Olympics athletes & staff Afghanistan Africa Albania Algeria Andorra Angola Antigua and Barbuda Argentina United States Uruguay Uzbekistan Vanuatu Vatican Venezuela Vietnam Yemen Zambia Zimbabwe
date
2020-01-22 0.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2020-01-23 1.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2020-01-24 8.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

3 rows × 203 columns

国別人口のデータをダウンロードします。

df1 = pd.read_csv("https://covid.ourworldindata.org/data/ecdc/locations.csv")
df1.head(3)
countriesAndTerritories location continent population_year population
0 Afghanistan Afghanistan Asia 2020.0 38928341.0
1 Albania Albania Europe 2020.0 2877800.0
2 Algeria Algeria Africa 2020.0 43851043.0

国別感染者数データをダウンロードします。

df2 = pd.read_csv("https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/jhu/new_cases.csv", index_col="date")
df2.tail(3)
World 2020 Summer Olympics athletes & staff Afghanistan Africa Albania Algeria Andorra Angola Antigua and Barbuda Argentina United States Uruguay Uzbekistan Vanuatu Vatican Venezuela Vietnam Yemen Zambia Zimbabwe
date
2021-09-16 577610.0 0.0 78.0 21379.0 942.0 219.0 5.0 420.0 0.0 2493.0 157957.0 143.0 619.0 0.0 0.0 1064.0 10489.0 30.0 106.0 285.0
2021-09-17 593099.0 0.0 126.0 16028.0 959.0 235.0 11.0 381.0 299.0 2308.0 207886.0 150.0 624.0 0.0 0.0 2606.0 11521.0 36.0 86.0 264.0
2021-09-18 532986.0 0.0 0.0 11331.0 849.0 201.0 0.0 99.0 0.0 1451.0 56849.0 106.0 590.0 0.0 0.0 0.0 9373.0 37.0 69.0 107.0

3 rows × 203 columns

今年の5月15日〜9月18日の感染者数・死者数を見てみます。

df2["Japan"].loc["2021-05-15":"2021-09-18"].sum()
1001145.0
df["Japan"].loc["2021-05-15":"2021-09-18"].sum()
5853.0

この期間の日本の感染者数は約100万人で、死者数は5853人となっています。この数字が多いのか少ないのかをアメリカと比較することで考察してみます。

アメリカの名前を調べてみます。

df.filter(like='United').columns
Index(['United Arab Emirates', 'United Kingdom', 'United States'], dtype='object')
df2["United States"].loc["2021-05-15":"2021-09-18"].sum()
9099406.0
df["United States"].loc["2021-05-15":"2021-09-18"].sum()
88407.0

同時期にアメリカは約910万人が感染、88414人が死亡しています。アメリカの人口が日本の人口の3倍弱ということを考慮しても、日本の感染者数・死亡者数が少ないことが良く分かります。今度はドイツと比べてみます。

df2["Germany"].loc["2021-05-15":"2021-09-18"].sum()
555663.0
df["Germany"].loc["2021-05-15":"2021-09-18"].sum()
6934.0

ドイツの人口を調べてみます。

df1[df1["countriesAndTerritories"] == "Germany"]
countriesAndTerritories location continent population_year population
75 Germany Germany Europe 2020.0 83783945.0

ドイツの人口は日本より大体4000万人くらい少ないので、ここでも、日本の死者数が如何に少ないかが分かるかと思います。

スポンサーリンク

東京オリンピック前後

東京オリパラの前後である7月1日〜現在までの感染者素と死亡者数を見て行きたいと思います。

df2["Japan"].loc["2021-07-01":"2021-09-18"].sum()
874379.0
df["Japan"].loc["2021-07-01":"2021-09-18"].sum()
2453.0

オリパラ前後である7月1日以降、新型コロナウイルス感染者数は爆発的に増えました。9月19日現在は劇的に減少しています。

df2["United States"].loc["2021-07-01":"2021-09-18"].sum()
8329932.0
df["United States"].loc["2021-07-01":"2021-09-18"].sum()
68866.0

一方、アメリカでは感染者数も死者数も爆増しています。危機的状況だと言えます。

df2["Germany"].loc["2021-07-01":"2021-09-18"].sum()
407960.0
df["Germany"].loc["2021-07-01":"2021-09-18"].sum()
2019.0

オリパラという国際的な大イベントがあったにもかかわらず、日本の新型コロナ死者数の少なさが見て取れるかと思います。ドイツと日本に関しては、7月以降、感染者数が爆発的に増えているにもかかわらず、死者数が劇的に減っています。これはワクチン効果や抗体カクテル療法のお陰であると言われています。かつてはワクチン後進国と世界中から揶揄されていた日本のワクチン接種率は、いまや、かつてのワクチン超先進国だったアメリカを追い抜いています。

スポンサーリンク

先進7カ国+αの感染者数・死者数をグラフ化

視覚的に見てみた方が分かりやすいので、各国の感染者数・死者数をグラフ化してみます。

from matplotlib.pyplot import *
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams

style.use('fivethirtyeight')

country = ["Italy", "Japan", "Canada", "France", "United Kingdom", "United States", "Germany", "South Korea", "Taiwan", "Singapore"]
for c in country:
    a = df[country].loc["2021-07-01":"2021-09-18"].sum()

fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "25"
fig, ax = subplots(figsize=(25,12))
rc('xtick', labelsize=35)
rc('ytick', labelsize=35)

ax.set_ylabel('国名')
ax.set_xlabel('死者数')
ax.set_title('7月1日〜9月18日の新型コロナ死者数')
a.iloc[0:10].T.sort_values(ascending=False).plot(ax=ax,kind='barh')

fig.tight_layout()

xticks(np.arange(0,7.1e4,1e5/5),
   ['{}万'.format(int(x/1e4)) if x > 0 else 0 for x in np.arange(0,7.1e4,1e5/5)])
for i in ax.patches:
    ax.text(i.get_width()+5e2,i.get_y()+.45,\
      '{:,}人'.format(int(round((i.get_width()), 2))), fontsize=35, color='k')
ax.invert_yaxis();
スポンサーリンク

100万人当たりの死者数

人口の少ない国は死者数が少なくなるので、100万人当たりの死者数をグラフ化してみます。

df3= pd.read_csv("https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/jhu/new_deaths_per_million.csv", index_col="date")
df3.tail(3)
World 2020 Summer Olympics athletes & staff Afghanistan Africa Albania Algeria Andorra Angola Antigua and Barbuda Argentina United States Uruguay Uzbekistan Vanuatu Vatican Venezuela Vietnam Yemen Zambia Zimbabwe
date
2021-09-16 1.322 NaN 0.226 0.423 2.088 0.471 0.0 0.324 0.000 2.894 10.192 0.287 0.177 0.0 NaN 0.592 2.435 0.230 0.000 0.596
2021-09-17 1.102 NaN 0.075 0.323 2.088 0.426 0.0 0.206 70.902 4.056 7.296 0.000 0.118 0.0 NaN 1.045 2.160 0.295 0.053 0.133
2021-09-18 0.851 NaN 0.000 0.278 1.740 0.247 0.0 0.295 0.000 1.776 2.514 0.574 0.147 0.0 NaN 0.000 2.241 0.328 0.053 0.066

3 rows × 203 columns

from matplotlib.pyplot import *
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams

style.use('fivethirtyeight')

country = ["Italy", "Japan", "Canada", "France", "United Kingdom", "United States", "Germany", "South Korea", "Taiwan", "Singapore", "Australia", "New Zealand"]
for c in country:
    b = df3[country].loc["2021-07-01":"2021-09-18"].sum()

fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "25"
fig, ax = subplots(figsize=(25,12))
rc('xtick', labelsize=35)
rc('ytick', labelsize=35)

ax.set_ylabel('国名')
ax.set_xlabel('死者数')
ax.set_title('7月1日〜9月18日の新型コロナ死者数')
b.iloc[0:12].T.sort_values(ascending=False).plot(ax=ax,kind='barh')

fig.tight_layout()

xticks(np.arange(0,250,50))
for i in ax.patches:
    ax.text(i.get_width()+1.0,i.get_y()+.45,\
      '{:,}人'.format(int(round((i.get_width()), 2))), fontsize=35, color='k')
ax.invert_yaxis();

先進7カ国の中では日本は100万人当りのコロナ死者数が突出して低いことが分かるかと思います。確かにオリパラを開催しなければオーストラリア、台湾、韓国並だったかもしれませんが、日本のリベラルマスメディアのコロナ政策が失敗という批判には当たらないように見えます。余談ですが、アメリカのリベラルメディアとバイデン政権は、今の惨状をトランプ支持者達のせいにしています。しかしながら、コロナワクチンの父であるトランプ氏はワクチン推奨派の筆頭で、自身の支持者達にもワクチンを打つように強く訴えかけています。保守派がワクチンの安全性を疑問視するのは分かるんですが、公衆衛生の観点から鑑みれば、ワクチンを打たないマスクをしないという選択肢は、正当な理由が無い限りは無しだと思います。少なくとも外出する時は不織布(ふしょくふ)マスクは必ず着用すべきです。

スポンサーリンク
スポンサーリンク