新型コロナウイルスが流行ってきています。
ありがたいことに
データをまとめて頂いている方が
いらっしゃるので
そのデータを用いて可視化をしてみます。
解説動画はこちら
データの提供元は東洋経済新聞社の方のようです。
めちゃくちゃ感謝したいと思います。
新型コロナウイルス国内感染の状況
https://toyokeizai.net/sp/visual/tko/covid19/
制作:荻原 和樹(東洋経済オンライン編集部)
データソース:厚生労働省の報道発表資料。
更新履歴・ソースコード:GitHub
https://github.com/kaz-ogiwara/covid19/
さてそれではデータを可視化をしていきましょう。
まずは
ライブラリの読み込みです。
今回は下記のライブラリを用います。
次に
データの読み込みです。
直接データを読み込み指定します。
こんな感じのローデータですね。
年代や性別などで
日別の感染者の状況をまとめてくれています。
はじめに
性年代別で集計してみましょう。
年代の並びがアレなので先に指定しておきます。
これをヒートマップにしてみましょう。
ヒートマップはseabornライブラリで可視化できます。

棒グラフにもしてみます。
棒グラフはseabornでは
countplotで可視化できます。

50-60代の男性の感染者が多いですね。
全体的には女性に比べると
男性の方が感染する方が多いようです。
男性の方がかかりやすいのかどうかは
このデータからは分かりませんね。
次に日別です。
日の並びも先に指定します。

日別の性別での可視化です。
男女を積み上げ棒グラフにしてみます。

2/22,2/27に感染者数が激増していますね。
グラフを累積にしてみます。
累積のデータを先に作って
それを可視化しています。
numpyのcumsumで累積データを作ることができます。

最後に都道府県別でみてみましょう。

北海道がすごいことになっていますね。
2番目に東京と愛知です。
地域差はかなりあると思いますが
そもそも目には見えないので
どこに潜んでいるかは
正直感じることもできないと思います。
企業の中には
在宅勤務を始める会社も出てきていて
人混みの中に出ないことが
感染予防につながると思いますので
リモートワークはどんどん広がっていくと
いーなーと思っています。
まあ
我々エンジニアは
客先に行くことなんて稀なので
全然在宅でも仕事できちゃいますよね。
2,3月は
大人しくしていた方が
良さそうな気はしますね。
この機会に
Pythonプログラミングを
覚えてみてはいかがでしょうか?
Youtubeなどでも
講座を公開していますので
ぜひみてみてください。
それでは。
ありがたいことに
データをまとめて頂いている方が
いらっしゃるので
そのデータを用いて可視化をしてみます。
解説動画はこちら
データの提供元は東洋経済新聞社の方のようです。
めちゃくちゃ感謝したいと思います。
新型コロナウイルス国内感染の状況
https://toyokeizai.net/sp/visual/tko/covid19/
制作:荻原 和樹(東洋経済オンライン編集部)
データソース:厚生労働省の報道発表資料。
更新履歴・ソースコード:GitHub
https://github.com/kaz-ogiwara/covid19/
さてそれではデータを可視化をしていきましょう。
まずは
ライブラリの読み込みです。
今回は下記のライブラリを用います。
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline
次に
データの読み込みです。
直接データを読み込み指定します。
file_path = 'https://toyokeizai.net/sp/visual/tko/covid19/csv/data.csv' df = pd.read_csv(file_path) df.head()
新No. | 旧No. | 確定日 | 年代 | 性別 | 居住地 | 周囲の患者の発生※ | 濃厚接触者\nの状況 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1/15 | 30代 | 男 | 神奈川県 | なし | 38名特定、健康観察終了 |
| 1 | 2 | 2 | 1/24 | 40代 | 男 | 中国(武漢市) | なし | 32名特定、健康観察終了 |
| 2 | 3 | 3 | 1/25 | 30代 | 女 | 中国(武漢市) | なし | 7名特定、健康観察終了 |
| 3 | 4 | 4 | 1/26 | 40代 | 男 | 中国(武漢市) | No.19 | 2名特定、健康観察終了 |
| 4 | 5 | 5 | 1/28 | 40代 | 男 | 中国(武漢市) | なし | 3名特定、健康観察終了 |
こんな感じのローデータですね。
年代や性別などで
日別の感染者の状況をまとめてくれています。
はじめに
性年代別で集計してみましょう。
年代の並びがアレなので先に指定しておきます。
# 年代の並びを指定 order = ['10歳未満', '10代', '20代','30代','40代','50代','60代','70代','80代','90代'] data = pd.crosstab(df['性別'],df['年代'])[order] data
| 年代 | 10歳未満 | 10代 | 20代 | 30代 | 40代 | 50代 | 60代 | 70代 | 80代 | 90代 |
|---|---|---|---|---|---|---|---|---|---|---|
| 性別 | ||||||||||
| 女 | 0 | 1 | 9 | 4 | 11 | 12 | 15 | 12 | 3 | 1 |
| 男 | 4 | 1 | 6 | 10 | 17 | 28 | 33 | 18 | 12 | 0 |
これをヒートマップにしてみましょう。
ヒートマップはseabornライブラリで可視化できます。
data = pd.crosstab( df['性別'],df['年代'])[order]
ax = sns.heatmap(data,annot=True, fmt="d")
ax.set_ylim(len(data), 0)
plt.title('性年代別感染者数')
plt.show()

棒グラフにもしてみます。
棒グラフはseabornでは
countplotで可視化できます。
sns.countplot(y="年代", hue="性別",data=df,order=order)
plt.title('性年代別感染者数')
plt.show()

50-60代の男性の感染者が多いですね。
全体的には女性に比べると
男性の方が感染する方が多いようです。
男性の方がかかりやすいのかどうかは
このデータからは分かりませんね。
次に日別です。
日の並びも先に指定します。
date_order = ['1/15', '1/24', '1/25', '1/26', '1/28', '1/29', '1/30', '1/31','2/4', '2/5', '2/11',
'2/13', '2/14', '2/15', '2/16', '2/17', '2/18', '2/19', '2/20', '2/21',
'2/22', '2/23', '2/24', '2/25', '2/26', '2/27', '2/28', '調査中']
plt.figure(figsize=(16,9))
sns.countplot(x="確定日", hue="性別",data=df,order=date_order)
plt.title('日別感染者数')
plt.show()

日別の性別での可視化です。
男女を積み上げ棒グラフにしてみます。
data = pd.crosstab(df['性別'],df['確定日'])[date_order].T
fig = plt.figure(figsize=(16,9))
ax = fig.add_subplot(1, 1, 1)
ax.bar(date_order, data['男'], label='男')
ax.bar(date_order, data['女'], bottom=data['男'], label='女')
ax.legend()
plt.title('日別感染者数')
plt.show()

2/22,2/27に感染者数が激増していますね。
グラフを累積にしてみます。
累積のデータを先に作って
それを可視化しています。
numpyのcumsumで累積データを作ることができます。
data = pd.crosstab(df['性別'],df['確定日'])[date_order]
data2 = np.cumsum(data.T)
fig = plt.figure(figsize=(16,9))
ax = fig.add_subplot(1, 1, 1)
ax.bar(date_order, data2['男'], label='男')
ax.bar(date_order, data2['女'], bottom=data2['男'], label='女')
ax.legend()
plt.title('日別累積感染者数')
plt.show()

最後に都道府県別でみてみましょう。
data = pd.crosstab(df['居住地'],df['性別'])
data2 = data.sort_values('男',ascending=True)
data2
fig = plt.figure(figsize=(16,9))
ax = fig.add_subplot(1, 1, 1)
ax.barh(data2.index, data2['男'], label='男')
ax.barh(data2.index, data2['女'], left=data2['男'], label='女')
ax.legend()
plt.title('都道府県別感染者数')
plt.show()

北海道がすごいことになっていますね。
2番目に東京と愛知です。
地域差はかなりあると思いますが
そもそも目には見えないので
どこに潜んでいるかは
正直感じることもできないと思います。
企業の中には
在宅勤務を始める会社も出てきていて
人混みの中に出ないことが
感染予防につながると思いますので
リモートワークはどんどん広がっていくと
いーなーと思っています。
まあ
我々エンジニアは
客先に行くことなんて稀なので
全然在宅でも仕事できちゃいますよね。
2,3月は
大人しくしていた方が
良さそうな気はしますね。
この機会に
Pythonプログラミングを
覚えてみてはいかがでしょうか?
Youtubeなどでも
講座を公開していますので
ぜひみてみてください。
それでは。

コメントする