【Python基礎】東京都の感染者数をプロットしてみよう!

日記

こんにちは、しらすです。

東京都の感染者数をPythonでプロットしてみよう!ということで、コロナの状況を把握しつつPythonの基礎を学ぶことができる画期的な(笑)記事になります。ぜひ皆さんもこれを機にPythonの楽しさ、コロナの現状を正しく学んだいただけたらと思います。では早速やっていきましょう。

本記事のステップ

  1. 東京都の公式コロナ感染者数のデータを取得する
  2. 一日ごとの感染者数をプロットしてみる
  3. 過去7日間の移動平均を算出してグラフにプロットしてみる

東京都の公式コロナ感染者数のデータを取得する

では早速今回の元データとなるデータを探しに行きたいと思います。

以下のリンクから、東京都の公式発表しているコロナ感染者のデータを取得しましょう。

https://stopcovid19.metro.tokyo.lg.jp/

一日ごとの感染者数をプロットしてみる

データの縦軸は一人分の情報になっています。例えば一日で5人感染者が出た場合は5行分記載されます。そのため、日にちごとの感染者数に変換する必要があります。

ここまでのコードは以下のようになります。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#read csv
df = pd.read_csv('org/130001_tokyo_covid19_patients.csv', parse_dates=[4], index_col=[4])

#Add column for sum of patient
df['count'] = 1

#sum with date
df2 = df.resample('D').sum()

これで、df2に一日ごとの感染者数を入れることができました。

”count’というlabelに”1″を入れることで、resampleのsum関数で”D” (=day) ごとの合計を算出しています。

プロットするには以下のようにmatplotlibの関数を用います。

fig = plt
fig.figure(figsize=(6,4))
fig.plot(df2['count'],label="1day")
fig.xlabel('date')
fig.ylabel('patients')
fig.legend()
fig.title('Number of patients')

以下のように、一日ごとの感染者数をプロットすることができました。

過去7日間の移動平均を算出してグラフにプロットしてみる

一日ごとの感染者数のプロットでは「土日の検査数が少なくなる」や「瞬間的な影響を受ける」といった”外乱”と呼ばれる影響を受けるため、過去7日間の平均を追加したいと思います。この方法は「大阪モデル」の自粛解除基準等でも利用されています。

コードとしては以下のようになります。

df2['7days_mean'] = df2['count'].rolling(window=7).mean()

#plot
fig = plt
fig.figure(figsize=(6,4))
fig.plot(df2['count'],label="1day")
fig.plot(df2['7days_mean'],label="7days_mean")
fig.xlabel('date')
fig.ylabel('patients')
fig.legend()
fig.title('Number of patients')

新しく’7days_mean’というカラムを追加し、グラフに追加しています。すると、このように7日間平均をグラフにプロットすることができました。

まとめ

今回はcsvデータを取得して加工を加えグラフにプロットするところまでを記載しました。pythonではcsvさえ取得できれば簡単にデータ解析まで行うことができます。

正確なデータを取得することで、ネットやニュースに出回っている情報だけでなく自分で調べることができるようになると思います。pythonはプログラミング初心者でも簡単に入門できる言語なので、ぜひこの機会に試してみてはいかがでしょうか。

Pythonの使い方も重要ですが、私も含め一人でも多くの方が情報のソースにも興味をもつことでFakenewsやInfodemicに踊らされることなく”賢い市民”になると、より素晴らしい社会になっていくと思う今日この頃でした。

コメント