Notice: A non well formed numeric value encountered in /export/sd215/www/jp/r/e/gmoserver/2/9/sd0971329/dandelions.co.jp/blog/wordpress-4.9.8-ja-jetpack_webfont-undernavicontrol/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118
Notice: A non well formed numeric value encountered in /export/sd215/www/jp/r/e/gmoserver/2/9/sd0971329/dandelions.co.jp/blog/wordpress-4.9.8-ja-jetpack_webfont-undernavicontrol/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119
Notice: A non well formed numeric value encountered in /export/sd215/www/jp/r/e/gmoserver/2/9/sd0971329/dandelions.co.jp/blog/wordpress-4.9.8-ja-jetpack_webfont-undernavicontrol/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118
Notice: A non well formed numeric value encountered in /export/sd215/www/jp/r/e/gmoserver/2/9/sd0971329/dandelions.co.jp/blog/wordpress-4.9.8-ja-jetpack_webfont-undernavicontrol/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119
Notice: A non well formed numeric value encountered in /export/sd215/www/jp/r/e/gmoserver/2/9/sd0971329/dandelions.co.jp/blog/wordpress-4.9.8-ja-jetpack_webfont-undernavicontrol/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118
Notice: A non well formed numeric value encountered in /export/sd215/www/jp/r/e/gmoserver/2/9/sd0971329/dandelions.co.jp/blog/wordpress-4.9.8-ja-jetpack_webfont-undernavicontrol/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119
記事を書くのは久しぶりになります。最近自宅のキーボードを新調してウキウキしているベーです。
今回はPythonの勉強も兼ねて、日々ニュースで見かけるコロナ感染者数のデータからグラフを作ってみました。
感染者数のデータについて
今回は、NHKの新型コロナウィルス特設サイトからダウンロードしたデータを使用します。
https://www3.nhk.or.jp/news/special/coronavirus/data-widget
グラフの作成方法について
勉強ということで、今回は王道のライブラリ pandas + matplotlib で作成します。
実際にやってみた
サイトからダウンロードしたCSVを読み込んで、matplotlibでグラフとして書き出します。
せっかくなので全国と愛知県それぞれで作りました。
折線グラフ
1 2 3 4 5 6 |
# 全国 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)) |
1 2 3 4 5 6 7 8 |
# 愛知 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の感染者数が多い県ほど色が濃くなっています。
1 2 3 4 5 6 7 8 |
# 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))); |
終わりに
今回はpythonでグラフを書いてみました。
自宅のMacでまだ対応していないライブラリがあり、環境構築の面で一番苦戦しました…
地図を簡単に扱えるライブラリがあることなど、新しく覚えられたこともあるので、今後ももっと複雑なデータの処理など挑戦していきたいと思います。
記事内のソースは抜粋して記載してますので、興味がある方は↓JupyterLabのpdfファイルをご覧ください。