時系列のグラフを描く

東京の毎日のCOVID-19感染者数の時系列データをプロットしてみましょう。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('https://oku.edu.mie-u.ac.jp/~okumura/python/data/COVID-tokyo.csv')

df を眺めてから,プロットしてみましょう。

plt.plot(df['date'], df['confirmed'])

何となくプロットできているようですが,横軸がよくわかりません。日付が文字列になってしまっているようです。日付を日付として読むには,次のようにします。

df = pd.read_csv('https://oku.edu.mie-u.ac.jp/~okumura/python/data/COVID-tokyo.csv',
                 parse_dates=['date'])

同じように見えますが,これをプロットしてみましょう。

plt.clf()
plt.plot(df['date'], df['confirmed'])

今度は横軸を日付と認識してくれました。でも,重なって読みにくいので,少し傾けてみましょう。

plt.xticks(rotation=20)

少し見やすくなりました。

棒グラフにしてみましょう。

plt.clf()
plt.bar(df['date'], df['confirmed'], width=1)
plt.xticks(rotation=20)

同様に,厚労省のオープンデータもプロットしてみましょう。

plt.clf()
df1 = pd.read_csv('https://www.mhlw.go.jp/content/pcr_positive_daily.csv', parse_dates=['日付'])
df2 = pd.read_csv('https://www.mhlw.go.jp/content/pcr_tested_daily.csv', parse_dates=['日付'])

これらを別々に描いてもいいのですが,マージして一つのデータフレームにしてみましょう。

df = pd.merge(df1, df2)
plt.clf()
plt.plot(df['日付'], df['PCR 検査陽性者数(単日)'])
plt.plot(df['日付'], df['PCR 検査実施件数(単日)'])

これではどっちがどっちかわかりませんので,レジェンド(説明)を付けます。

plt.legend(['陽性者数', '実施件数'])

割り算すれば陽性率が出せそうです。

df['陽性率'] = df['PCR 検査陽性者数(単日)'] / df['PCR 検査実施件数(単日)']

陽性率もプロットしてみましょう。でも,データがいいかげんなのでとんでもない値が混じってしまっています。縦軸を0〜1までに制限すると見やすいと思います。

plt.ylim([0, 1])

Last modified: