新型コロナの感染状況(2020/5/18)

今週もSpatiaLiteを使って新型コロナの感染状況を地図表示します。

実現する仕組み

今回は前回同様、PythonでスクレイピングしたデータをSpatiaLiteデータベースへインポートし世界地図とSQLで結合します。仕組みを以下に図示します。

今回実現する仕組み

スクレイピングとインポート作業の詳細は、以下の記事を参考にしてください。

今週からWHOのサイトの構成が若干変わり、先頭に”#”カラムが追加されていますので、Pythonのスクレイピングプログラムを若干修正しています。

WHOサイトに1カラム追加されていた

また、”spatialite_gui”ユーティリティは、日本語を含むディレクトリ名には対応していない(エラーとなる)ようですので、注意してください。
”spatialite_gui”で取り込んだデータを確認すると、以下のようになります。

今週からカラム”#”が追加されている

OpenJUMPを使ってグラフ表示

直近4週間分のグラフをOpenJUMPのDB Query(SQL)を使って表示します。

1.感染者数(総数)
まずは全世界を見てみましょう。
アメリカが圧倒的という状況に変化はないですが、ヨーロッパはイギリスを除き伸びが鈍化しているようです。
また、ロシア、ブラジルの伸びが鮮明となっています。

全世界の感染者数

アメリカの感染者数が多すぎますので除外してみます。
ヨーロッパ大陸部、特にフランス、ドイツの感染者数は鈍化の傾向ですが、イギリスやスペインはまだ伸びています。また、南米、ロシア、中東、インドでは感染爆発といっていい状況に見えます。

感染爆発が周辺に飛び火している

発行したSQLは以下のようになります。

(発行SQL)
select na.name_ja ja_name ,w1.tcases w1 ,w2.tcases w2 ,w3.tcases w3 ,w4.tcases w4 ,na.Geometry geom
from naturalearth na
left outer join stat0426 w1 on (na.name_en=w1.country)
left outer join stat0503 w2 on (na.name_en=w2.country)
left outer join stat0510 w3 on (na.name_en=w3.country)
left outer join stat0518 w4 on (na.name_en=w4.country)
where na.name not like ‘%America%’;

2.100万人あたりの感染者数
100万人あたりの感染者数を確認すると、感染がヨーロッパや北米から中東や南米に移ってきていることがわかります。

100万人あたりの感染者数

発行したSQLは、以下のようになります。

(発行SQL)
select na.name_ja ja_name ,w1.tc1mpop w1 ,w2.tc1mpop w2 ,w3.tc1mpop w3 ,w4.tc1mpop w4 ,na.Geometry geom
from naturalearth na
left outer join stat0426 w1 on (na.name_en=w1.country)
left outer join stat0503 w2 on (na.name_en=w2.country)
left outer join stat0510 w3 on (na.name_en=w3.country)
left outer join stat0518 w4 on (na.name_en=w4.country);

3.100万人あたりの死亡者数
次に、100万人あたりの死亡者数を確認しましょう。
感染者数には鈍化傾向がみられますが、死亡者数にはそこまでの傾向はみられません。

100万人あたりの死亡者数は増加傾向

発行したSQLは、以下のようになります。

(発行SQL)
select na.name_ja ja_name ,w1.d1mpop w1 ,w2.d1mpop w2 ,w3.d1mpop w3 ,w4.d1mpop w4 ,na.Geometry geom
from naturalearth na
left outer join stat0426 w1 on (na.name_en=w1.country)
left outer join stat0503 w2 on (na.name_en=w2.country)
left outer join stat0510 w3 on (na.name_en=w3.country)
left outer join stat0518 w4 on (na.name_en=w4.country);

4.100万人あたりの検査数
最後に100万人あたりの検査数を確認しましょう。
感染者数の多い国では一様に検査数も増加しているようです。我が国は伸びが確認できません。

100万人あたりの検査数

まとめ

今回は、以下を行いました。
1.世界地図とスクレイピングしたデータのSpatiaLiteへの取り込み
2.OpenJUMPによるグラフ表示(先週までとの比較)

グラフを見ていると、世界の感染はまだまだ収束しておらず、その中心がヨーロッパからロシアや南米などの新興国へ移ってきているように見えます。

私は、仕事の関係で都内に通勤せざるを得ないのですが、月曜日(5/17)から明らかに人の数が増えました。
一方で、マスクも50枚入りが入手できるようになる(眼鏡屋さんで売ってました)など、環境は改善されているようにも感じます。