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)
国別人口のデータをダウンロードします。
df1 = pd.read_csv("https://covid.ourworldindata.org/data/ecdc/locations.csv")
df1.head(3)
国別感染者数データをダウンロードします。
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)
今年の5月15日〜9月18日の感染者数・死者数を見てみます。
df2["Japan"].loc["2021-05-15":"2021-09-18"].sum()
df["Japan"].loc["2021-05-15":"2021-09-18"].sum()
この期間の日本の感染者数は約100万人で、死者数は5853人となっています。この数字が多いのか少ないのかをアメリカと比較することで考察してみます。
アメリカの名前を調べてみます。
df.filter(like='United').columns
df2["United States"].loc["2021-05-15":"2021-09-18"].sum()
df["United States"].loc["2021-05-15":"2021-09-18"].sum()
同時期にアメリカは約910万人が感染、88414人が死亡しています。アメリカの人口が日本の人口の3倍弱ということを考慮しても、日本の感染者数・死亡者数が少ないことが良く分かります。今度はドイツと比べてみます。
df2["Germany"].loc["2021-05-15":"2021-09-18"].sum()
df["Germany"].loc["2021-05-15":"2021-09-18"].sum()
ドイツの人口を調べてみます。
df1[df1["countriesAndTerritories"] == "Germany"]
ドイツの人口は日本より大体4000万人くらい少ないので、ここでも、日本の死者数が如何に少ないかが分かるかと思います。
df2["Japan"].loc["2021-07-01":"2021-09-18"].sum()
df["Japan"].loc["2021-07-01":"2021-09-18"].sum()
オリパラ前後である7月1日以降、新型コロナウイルス感染者数は爆発的に増えました。9月19日現在は劇的に減少しています。
df2["United States"].loc["2021-07-01":"2021-09-18"].sum()
df["United States"].loc["2021-07-01":"2021-09-18"].sum()
一方、アメリカでは感染者数も死者数も爆増しています。危機的状況だと言えます。
df2["Germany"].loc["2021-07-01":"2021-09-18"].sum()
df["Germany"].loc["2021-07-01":"2021-09-18"].sum()
オリパラという国際的な大イベントがあったにもかかわらず、日本の新型コロナ死者数の少なさが見て取れるかと思います。ドイツと日本に関しては、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();
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)
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万人当りのコロナ死者数が突出して低いことが分かるかと思います。確かにオリパラを開催しなければオーストラリア、台湾、韓国並だったかもしれませんが、日本のリベラルマスメディアのコロナ政策が失敗という批判には当たらないように見えます。余談ですが、アメリカのリベラルメディアとバイデン政権は、今の惨状をトランプ支持者達のせいにしています。しかしながら、コロナワクチンの父であるトランプ氏はワクチン推奨派の筆頭で、自身の支持者達にもワクチンを打つように強く訴えかけています。保守派がワクチンの安全性を疑問視するのは分かるんですが、公衆衛生の観点から鑑みれば、ワクチンを打たないマスクをしないという選択肢は、正当な理由が無い限りは無しだと思います。少なくとも外出する時は不織布(ふしょくふ)マスクは必ず着用すべきです。