COVID-19 オープンデータを可視化する②:ワクチン接種状況の可視化【Python】

日本における新型コロナウイルスのワクチンの接種状況をPythonを用いてグラフで可視化する方法を説明します。

開発環境

  • matplotlib 3.3.4
  • Pandas 1.2.1
  • Python 3.7.9

ワクチンの接種状況に関するオープンデータ

日本における新型コロナウイルスのワクチンの接種状況は首相官邸のホームページで公開されています。

なお、ここで公開されているのは「接種回数」であり、一人当たり2回の接種が必要となることに注意してください。また、データの提供形式は今後変更される可能性もあるので、ご注意ください。

グラフ化されたデータは当サイトの以下のページで公開しています。

日別のワクチン接種実績

データ

首相官邸ホームページで公開されている日別のワクチン接種実績に関するデータは以下の通りです。

医療従事者等のデータは「ワクチン接種円滑化システム(V-SYS)」への報告を集計したもので、土日祝日については、次の平日分に合わせて計上されるようになっています。それに対して、高齢者のデータは「ワクチン接種記録システム(VRS)」への報告を接種尾ごとに集計したもので、土日祝日についてもそのまま集計されています。また、ともにデータが更新されるのは平日のみとなっています。

Pythonスクリプト

では、上記のデータを用いて日別のワクチン接種実績をグラフ化してみましょう。

import datetime
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = "Meiryo"

# データをDataFrameとしてダウンロードする
df_korei_original = pd.read_excel(r'https://www.kantei.go.jp/jp/content/KOREI-vaccination_data2.xlsx', header=None)
df_iryo_original = pd.read_excel(r'https://www.kantei.go.jp/jp/content/IRYO-vaccination_data2.xlsx', header=None)

# 高齢者の接種回数を抽出する
dates, vaccinated = [], []
for index, row in df_korei_original.iterrows():
    if type(row[0]) is datetime.datetime:
        dates.append(row[0])
        vaccinated.append(row[2])
df_korei = pd.DataFrame({'Date': dates, 'Vaccinated_Korei': vaccinated})

# 医療従事者等の接種回数を抽出する
dates, vaccinated = [], []
for index, row in df_iryo_original.iterrows():
    if type(row[0]) is datetime.datetime:
        dates.append(row[0])
        vaccinated.append(row[2])
df_iryo = pd.DataFrame({'Date': dates, 'Vaccinated_Iryo': vaccinated})

# 高齢者と医療従事者等のデータを統合する
df_all = df_korei.merge(df_iryo, 'outer')

# 棒グラフで可視化する
fig, ax = plt.subplots()
ax.bar(df_all['Date'], df_all['Vaccinated_Korei'], label='高齢者')
ax.bar(df_all['Date'], df_all['Vaccinated_Iryo'], bottom=df_all['Vaccinated_Korei'], label='医療従事者等')
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
ax.set_title('新型コロナウイルスワクチン接種回数')
ax.legend()
fig.autofmt_xdate()
plt.show()

2021/6/11時点のデータで上記スクリプトを実行すると以下のようなグラフが得られます。

ここでお示ししているPythonスクリプトはコピー&ペーストでそのまま実行できるので是非一度試してみてください。実行時の最新のワクチン接種状況が表示されるはずです。

Pythonスクリプトの解説

先ほどのPythonスクリプトについて簡単に解説します。

まず必要なモジュールをimportしてから、matplotlibで日本語が使えるようにするために4行目でフォントファミリーの指定をしています。

7-8行目で首相官邸ホームページで公開されているワクチン接種実績に関するデータを直接DataFrameとしてダウンロードしています。エクセル形式(.xlsx)のデータなのでread_excel関数を用いています。

11-16行目の処理と19-24行目の処理はともに先ほど取得したエクセルデータから必要な情報だけを抜き出す処理です。オリジナルのエクセルデータには様々なメタデータが含まれているので、ここでは「一番左の列のデータ型が日付型であるものが有効なデータ」として判定しています。接種日と接種回数のデータを抜き出して、新たなDataFrameとしています。

データが抽出できたら、高齢者と医療従事者のデータをmergeメソッドを用いて統合しましょう。DataFrameの結合方法については以下の記事もご覧ください。

最後に30-37行目で先ほどのデータを積み上げ棒グラフで可視化しています。

都道府県別のワクチン接種実績

首相官邸ホームページで公開されている都道府県別のワクチン接種実績に関するデータは以下の通りです。

関連記事・スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)