見出し画像

北海道内のCOVID-19発生以降の新規感染者数と札幌市の最高気温の推移

北海道でのCOVID-19新規感染者数増加傾向が目立つ。

換気がしづらくなるということが一つ要因になっているということなので、感染者数と気温の推移をグラフにしてみた。

スクリーンショット 2020-11-10 18.35.33

今回もpython+plotlyを使ってグラフを描画してみたので、もし興味がある人は自分でもやってみてください。

import pandas as pd
import numpy as np
import pprint
import datetime
from bs4 import BeautifulSoup
import chart_studio.plotly as py
import plotly.graph_objects as go
from plotly.subplots import make_subplots


# 新規感染者数の元データ
row_data = pd.read_csv('https://www.harp.lg.jp/opendata/dataset/1369/resource/2853/covid19_data.csv', encoding="shift-jis")
str_date = row_data['年'].astype(str) + '/' + row_data['月'].astype(str) + '/' + row_data['日'].astype(str)
date = pd.to_datetime(str_date)
df = row_data.drop(['グラフ非表示', '年', '月', '日', '日検査数', '検査累計', '陽性累計', '日患者数', '患者累計',
      '日軽症中等症数', '軽症中等症累計', '日重症数', '重症累計', '日死亡数', '死亡累計', '日治療終了数',
      '治療終了累計', '新規検査人数計', '陽性率%', '濃厚接触者', '濃厚接触者以外', '備考'], axis=1)
df.index = date

# 最高気温を取得する為の元データ
months = np.arange(1, 12)  # 12月になったらここをnp.range(1,13)にすること!
url1 = 'https://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=14&block_no=47412&year=2020&month='
url2 = '&day=&view='
urls = []
for i in months:
   urls.append(url1 + str(i) + url2)
max_temp_df = []
for i in urls:
   max_temp_df.append(pd.read_html(i, flavor='bs4')[0][pd.read_html(i, flavor='bs4')[0].columns[7]])
df_h = pd.concat(max_temp_df, axis=0)
today = datetime.date.today()
date = np.arange('2020-01-01', today, dtype='datetime64')
max_temp = pd.DataFrame(df_h.values[~np.isnan(df_h.values)], index=date, columns=['temp'])
max_temp = max_temp[27:]

# plotlyで描画する
# chart studio未登録の場合は登録を済ませた上でインストール必要
trace0 = go.Bar(x=df.index, y=df['日陽性数'], name='counts', yaxis='y1')
trace1 = go.Scatter(x=df.index, y=max_temp['temp'], name='max_temp', yaxis='y2')

layout = go.Layout(xaxis = dict(title = 'date', type='date', dtick = 'M1'),
             yaxis = dict(title = 'counts', side = 'left', showgrid=False,
                          range = [0, max(df['日陽性数'])+20]),
             yaxis2 = dict(title = 'max_temp', side = 'right', overlaying = 'y', range = [0, max(max_temp['temp'])+5], showgrid=False))

fig = dict(data=[trace0,trace1], layout=layout)
py.plot(fig, filename='Hokkaido cases')​

クラスターは飲食店と職場で発生しがち。

経営者の方は、夏場は出社かWFHを選択させて職場では定期的な換気を義務化、冬場はWFHを義務化して従業員を守りましょう。






この記事が気に入ったらサポートをしてみませんか?