Pythonで感染者数をグラフ化

記事を書くのは久しぶりになります。最近自宅のキーボードを新調してウキウキしているベーです。

今回はPythonの勉強も兼ねて、日々ニュースで見かけるコロナ感染者数のデータからグラフを作ってみました。

感染者数のデータについて

今回は、NHKの新型コロナウィルス特設サイトからダウンロードしたデータを使用します。

https://www3.nhk.or.jp/news/special/coronavirus/data-widget

グラフの作成方法について

勉強ということで、今回は王道のライブラリ pandas + matplotlib で作成します。

実際にやってみた

サイトからダウンロードしたCSVを読み込んで、matplotlibでグラフとして書き出します。
せっかくなので全国と愛知県それぞれで作りました。

折線グラフ

# 全国
df_all = df.copy()
df_all = df_all.groupby('日付').sum()
df_all = df_all.loc[:,['各地の感染者数_1日ごとの発表数']]
df_all = df_all.rename(columns={'各地の感染者数_1日ごとの発表数':'全国の感染者数'})
df_all.tail(30).plot(figsize=(10, 5))
全国の感染者数の推移
# 愛知
df_aichi = df.copy()
df_aichi = df_aichi[df_aichi.都道府県名 == '愛知県']
df_aichi = df_aichi.set_index('日付')
df_aichi = df_aichi.loc[:,['各地の感染者数_1日ごとの発表数']]
df_aichi = df_aichi.rename(columns={'各地の感染者数_1日ごとの発表数': '愛知県の感染者数'})
df_aichi = df_aichi.sort_index()
df_aichi.tail(get_count).plot(figsize=(10, 5))
愛知県の感染者数の推移

地図に色付け

ただCSVから折線グラフを書くだけだと味気なかったので、加えて日本地図に色を塗ってみました。
2021/06/20の感染者数が多い県ほど色が濃くなっています。

# japanmapで画像生成
cmap = plt.get_cmap('Reds')
norm = plt.Normalize(vmin=df_yest.各地の感染者数_1日ごとの発表数.min(),
vmax=df_yest.各地の感染者数_1日ごとの発表数.max())
fcol = lambda x: '#' + bytes(cmap(norm(x), bytes=True)[:3]).hex()
plt.subplots(figsize=(8,8))
plt.colorbar(plt.cm.ScalarMappable(norm, cmap))
plt.imshow(picture(df_yest.各地の感染者数_1日ごとの発表数.apply(fcol)));
6/20の県別感染者数

終わりに

今回はpythonでグラフを書いてみました。
自宅のMacでまだ対応していないライブラリがあり、環境構築の面で一番苦戦しました…

地図を簡単に扱えるライブラリがあることなど、新しく覚えられたこともあるので、今後ももっと複雑なデータの処理など挑戦していきたいと思います。

記事内のソースは抜粋して記載してますので、興味がある方は↓JupyterLabのpdfファイルをご覧ください。