新型コロナウイルスはいまだに収まる気配をみせていません。新型コロナウイルスの感染者や重症度などもデータ化されて、蓄積されています。なので、新型コロナウイルスのデータを自分で分析することも、当然可能です。
そこで、今回は新型コロナウイルスのデータを自分で分析してみましょう。
簡単な例を提示、解説しますので、自分でも分析してみて下さい。新型コロナウイルスのデータはGithubで公開されています。このデータは日によって更新されていくので、データをダウンロードする日によって多少違う結果になりますが、最新のデータで、興味のあるデータを分析するのが一番の勉強になると思います。
Pythonの環境設定は以下を参照して下さい。


それでは、やっていきましょう。
GitHubのデータは以下のリンクからダウンロードして下さい。
データのダウンロード
GitHubのリンクから、以下のように、① 「Code」をクリック、➁ 「Download ZIP」をクリックします。
すると、ダウウンロードが開始され、ダウンロードのフォルダに保存されます。
ダウンロードされたzipファイルを確認します。
「covid19-sir-master.zip」をクリックしましょう。
「covid19-sir-master.zip」⇒「covid19-sir-master」⇒「data」⇒「japan」⇒「covid_jpn_total.csv」
この「covid_jpn_total.csv」にデータが入っています。
「covid_jpn_total.csv」のファイルを、解析するJupyter Labがあるフォルダに入れましょう。
以下の例では、「My Test」⇒「blog」を解析用のフォルダにしています。
なので、「blog」フォルダ内に、解析用Jupyter Labとして「EDA COVID-19.ipynb」と、解析データとして「covid_jpn_total.csv」があります。
これで、解析するための環境が整いました。
今回もAnacondaをインストールして、Jupyter Labで解析していきましょう。

新型コロナウイルスデータセットの内容
- 厚生労働省ホームページ
- 日本のコロナウイルス事情(東洋経済オンライン)
- 東京都のホームページ(COVID-19 in 東京の更新情報)
- 大阪府のホームページ(大阪のCOVID-19の最新情報)
- 日本COVID-19 公募予想(Google
- このノートは定期的に更新したり、要素を追加していきます。
これらから作成されたものらしいです。詳しくは、GitHubをご覧下さい。
といっても、これ以上の詳細な説明はないですが…
必要なライブラリをインポート
import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns import warnings warnings.filterwarnings('ignore')
データを読み込む
df_total=pd.read_csv('covid_jpn_total.csv') # 「covid_jpn_total.csv」からデータフレームで「df_total」に入れる df_total # 「df_total」を表示させる
出力:
データの内容を確認してみましょう。以下が、列(columns)の説明です。
- Data :日付
- Location :場所
- Positive :PCR検査済み陽性(Domestic: 国内、Returnee: 海外帰り?、airport: 空港)
- Tested :PCR検査済み
- Symptomatic :PCR陽性で症状がある
- Asymptomatic :PCR陽性で無症状
- Sym-unknown :PCR陽性で症状未確認
- Hosp_require :入院が必要
- Hosp_mild :PCR陽性で軽度の症状で入院
- Hosp_severe :PCR陽性で重度の症状で入院
- Hosp_unknown:入院したかどうか未確認
- Hosp_waiting :入院待ち
- Discharger :退院した(改善した)
- Fatal :致命的なケース(死亡)
データの可視化
PCR陽性者がでた場所を見てみましょう
sns.countplot(df_total.Location)
場所別の数を数値化してみましょう。
print(sum(df_total.Location=='Domestic')) # 国内の数 print(sum(df_total.Location=='Returnee')) # 帰国後の数 print(sum(df_total.Location=='Airport')) # 空港の数 print(len(df_total.Location)) # すべての場所での数
出力:
322 # 国内の数
322 # 帰国後の数
299 # 空港での数
943 # すべての場所での数
これらの場所をすべて含めると、複雑になるので、ここでは国内のみに限って分析していましょう。
国内感染者のデータのみを確認する
データを条件指定で抽出する
df=df_total[df_total.Location=="Domestic"] df
出力:
後ろのデータは欠損値(NaN)が多いように思います。
欠損値を確認してみましょう。
(後で説明しますが、一番左の列名(index名)の数字が飛び飛びになっていることに注目して下さい。)
df.isnull().sum()
出力:
Date 0
Location 0
Positive 0
Tested 0
Symptomatic 234
Asymptomatic 234
Sym-unknown 234
Hosp_require 88
Hosp_mild 234
Hosp_severe 0
Hosp_unknown 234
Hosp_waiting 234
Discharged 0
Fatal 0
dtype: int64
やはり、欠損値が多い項目(Symptomatic、Asymptomatic、Hosp_mild、Hosp_unknown、osp_waiting)がありますね。
これらの欠損値がある項目は、症状別に解析するために必要です、興味深いデータですが、今回は削除します。
データの前処理
Positive(PCR陽性者)や重症者(Hosp_severe)、PCR検査を受けた人数(Tested)などは、累積した数値です。その日の人数を知りたいとします。
そのための前処理を実行していきます。なんとなくでもいいので、確認してみて下さい。
df.index=range(len(df))
一番左の列(index名)の数字が順番に並びました。
この処理がないと、あとのコードが上手く実行されません。
PCR陽性者数の累積である「Positive」を、毎日のPCR陽性者数の人数である「Positive_day」とうい名前の列を作成します。
col="Positive" df[col+"_day"]="" for i in range(len(df)): if i == 0: df[col+"_day"][i] = df[col][i] else: df[col+"_day"][i]=df[col][i]-df[col][i-1]
重傷者の累積である「Hosp_severe」を、毎日の重傷者の人数である「Hosp_severe_day」という名前の列を作成します。
col="Hosp_severe" df[col+"_day"]="" for i in range(len(df)): if i == 0: df[col+"_day"][i]=df[col][i] else: df[col+"_day"][i]=df[col][i]-df[col][i-1]
PCR検査者の累積である「Tested」を、毎日のPCR検査者の人数である「Tested_day」という名前の列を作成します。
col="Tested" df[col+"_day"]="" for i in range(len(df)): if i == 0: df[col+"_day"][i] = df[col] [i] else: df[col+"_day"][i]=df[col][i]-df.Tested[i-1]
では、作成した列が追加されたデータフレームを確認してみましょう。
df
列の後ろに、新たに作成した列が追加されていますね。
新たに作成した列を抽出します。
df=df[["Date","Positive_day","Hosp_severe_day","Tested_day"]] df
列が少なくなって、すっきりしましたね。
データの可視化
plt.figure(figsize=(15,3),dpi=200) plt.plot(df.Date, df.Positive_day) plt.xticks(df.Date[::30], size='small') plt.show()
plt.figure(figsize=(15,3),dpi=200) plt.bar(df.Date, df.Positive_day) plt.xticks(df.Date[::30], size='small') plt.show()
では、Googleで検索した折れ線グラフを比較してみましょう。
だいたい一緒ですね。ちゃんとしたデータを使ったので当たり前ですが、確認は必要です。
自身でも、このデータセットを使って分析してみてはいかがでしょうか。
まずは、EDA(探索的データ分析)からしてみましょう。
以下の記事も参考にしてみて下さい。




コメント