【バーチャートレース】新型コロナウィルス感染症(COVID-19)都道府県別推移を作成する【BarChartRace】

covid-19
この記事は約4分で読めます。

このような動画をYoutubeやTwitterで見かけたことはありませんか?

バーチャートレースと呼ばれ、Youtubeでランキング系の動画で利用されている方法です。今回はPythonでデータを整形し、Flourishというサイトで作成する方法を解説します。

データはこちらのcsvを使います。

都道府県別新型コロナウイルス感染者数マップ
日本国内の新型コロナウイルス感染者を、ほぼリアルタイムに地図上にプロットして可視化する高機能ダッシュボードです。

データを整形する

import pandas as pd
import numpy as np

covid = pd.read_csv("COVID-19.csv")
#感染場所が不明のレコードは集計しない
covid = covid.dropna(subset=['受診都道府県コード'])
covid['受診都道府県コード'] = covid['受診都道府県コード'].astype(np.int)

#MultiIndexで返却されるので整形する
pivot_covid = covid.pivot_table(values=['人数'], index=['受診都道府県'], columns=['確定日'], aggfunc='sum', fill_value=0).transpose().reset_index(level=0, drop=False).transpose()
pivot_covid.reset_index(inplace=True)
pivot_covid = pivot_covid.drop(index=0)
pivot_covid.columns.name = None
pivot_covid = pivot_covid.set_index('受診都道府県', drop=True)
pivot_covid = pivot_covid.cumsum(axis=1)

pivot_covid.to_csv("covid-19_bar_chart.csv")

ピボットテーブルで整形する

pivot_tableで整形するとMultiIndexとなり、このままでは利用できないため
reset_indexとtransposeでヘッダーを1行に整形する(やや強引)
このままcsvで保存してエクセルで1行目と3行目を削除しても良い。

日付別に累積和を算出する

pivot_table、aggfuncでsumを指定すると都道府県、日付別に件数を算出することができる。
日付が推移するごとに累積和で取得したいので

cumsum(axis=1)

でaxis=1を指定して累積和のDataFrameを作成する。

作成し終わったら、to_csvで保存する。

カラム名は左から、Name、Category、Imageに設定を変更する
Categoryはグラフ化した時に出力される名前を設定し
Imageは名前ではなく、画像を出力させたい場合はImageのURLパスを指定する
今回は文字列で表示させているため値は入力していない。

Flourishで作成する

Flourish | Data Visualization & Storytelling
Beautiful, easy data visualization and storytelling

無料版の場合はパブリックアカウントとなり、プロジェクトが公開されますので
気をつけましょう。

Create new visualisationを選択します。

 右下の方にあるBar chart raceを選択します。

先ほど保存したcovid-19_bar_chart.csvを送信します。

早速グラフが作成され動作を確認することができるでしょう。

設定を変更

凡例を非表示にします

タイトルを設定します

成果物

新型コロナウィルス感染症(COVID-19) 都道府県別 感染者数推移【1/15〜04/09】

動画への出力はサポートしていませんので、画面キャプチャーで録画します。
あとはBGMをつけて保存すればYoutubeやTwitterに投稿できますね。

HDサイズの1280×720になるようにしましょう。(上下に帯が出てしまってますね)

皆さんも試してみてはいかがでしょうか

タイトルとURLをコピーしました