Tag Archeve for the ‘Python’ Category



東京都新規感染者日変化と7日移動平均 -コロナウィルスとの闘い

Saturday, June 6th, 2020

昨日(6月5日)までの東京都の公開データから新規感染者数の日変化と7日移動平均を上掲した。

上掲図では、3月1日から昨日までの日変化をプロットしている。図の作成は、東京都の公開データ(CSVデータ)からPythonを用いて作成している。Pythonスクリプトのソースを以下に添付している。

なお、図上部に、累積感染者数(Cumulative Number of Infected)として 5,3472人としているが、これは1月24日以降の累積。

Python Script source:

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

df = pd.read_csv('https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv')

tokyo_df = df[['公表_年月日', '患者_年代', '患者_性別','退院済フラグ']]
tokyo_df.columns = ['date', 'age', 'sex','recv']
tokyo_df_count = tokyo_df['date'].value_counts().sort_index(ascending=True)
df_t = pd.DataFrame(tokyo_df_count)
df_t.columns = ['infected']

dates = pd.date_range('20200124', 'today', freq='D')
df = pd.DataFrame(pd.Series(range(len(dates)), index=dates))
df.columns = ['infected']
for dates in df.index:
    str_date = dates.strftime("%Y-%m-%d") 
    try:
        df.infected[str_date] = df_t.infected[str_date]
    except:
        df.infected[str_date] = 0
#str_date='2020-05-28'
#df.infected[str_date] = 15
list_infected = df.infected.to_list()

date_index = [df.index[0].strftime('%Y-%m-%d')]
for i in range(1, len(list_infected)):
    date_index.append(df.index[i].strftime('%Y-%m-%d'))

x = pd.date_range(date_index[0], periods=len(date_index),freq='d')
y = np.array(list_infected)
y_cum = np.cumsum(y)
print('Cumulative Number of Infected= ' + str(y_cum[len(y_cum)-1]))

start_date = '2020-03-01'
i_start = df.index.get_loc(start_date)

num = 7
b = np.ones(num)/num
y2 = np.convolve(y, b, mode='same')

fig = plt.figure(figsize=(10,10))

x_d = x[i_start:]
y_o = y[i_start:]
y2_o= y2[i_start:]

ax = fig.add_subplot(2,1,1)
#ax = fig.add_axes([0,0,1,1])
ax.bar(x_d, y_o,label='raw data')
#ax.bar(x, y_cum,label='raw data')
ax.legend()
ax.grid()

ax = fig.add_subplot(2,1,2)
#ax = fig.add_axes([0,0,1,1])
ax.bar(x_d, y2_o, label='convolved')
ax.legend()
ax.grid()

plt.ylim(0, 205)
plt.show()


東京都感染者 報告漏れだって?? -コロナウィルスとの闘い

Tuesday, May 12th, 2020

昨晩の日経電子版(2020/5/11 23:18)に、「感染者の報告漏れ111人 東京都、保健所から」という記事がでていた。

リード文を以下転載:

東京都は11日夜、保健所から新型コロナウイルスの感染者111人分の申告漏れがあったと発表した。35人の情報は重複して報告されていた。累計感染者数は76人増えて4959人になる。

なんとも、お粗末な話と思ったところだ。

いらぬお節介ではあるが、東京都が公表しているデータの更新状況を確かめてみた。まだ、更新されていないようだ。

13日早朝にはCSVデータが修正されているのを確認。ただ、「退院済フラグ」項目の中身がすっかり変わってる。変だな。
(続きを読む)



東京都の感染者数の7日移動平均をプロット – コロナウィルスとの闘い

Friday, May 1st, 2020

東京都のサイト「都内コロナウィルス感染動向」で公開している陽性感染者数データをダウンロードし、1月24日~今日(5月1日)の感染者数推移、そしてその7日移動平均を算出し、棒グラフとして出力してみた。

出力結果は以下:

(続きを読む)



SIR 感染モデル 介入の効果の取り込み -コロナウィルスとの闘い

Sunday, April 19th, 2020

SIR感染モデルに基づき、新型コロナウィルスの感染拡大をPythonを用いてシミュレートしてみた。シミュレーションでは、感染拡大を緩和するための介入措置がどのような効果を及ぼすかをみてみた。

下掲した図は、予測計算の一例。人口100,000人の集団において、ひとりの感染者が発生した時点から時間(日数)推移にともなう感染者数の変化を計算している。縦軸は感染者数。

図示した計算では、感染率 β:1.5(/day)、回復率 γ:0.07(/day) の環境で感染が拡大しているとき、感染者発生から120日目に介入をし、感染率β:0.03とする措置を200日まで(80日間)継続。その後、感染率が元の状態に戻るとした。

介入措置を有効とする期間内では感染者数を下げることはできるが、措置解除後の2波の感染者数の増加を見のがしてはならない。介入は医療システムの維持のための時間かせぎ。結局は、ワクチン、治療薬、あるいは集団免疫が成立するのを待つことになる。
(続きを読む)



Seleniumを python と nodeで動作させてみた

Wednesday, February 19th, 2020

さまざまなWebサイトで公開される情報を「自動的に」収集・解析するWeb-Scraping技術のひとつに、Seleniumを用いる方法がある。Seleniumのフレームワークを用いると、リモートからブラウザ操作が可能になり、Web-Scrapingを効果的に行うことが期待される。

これまで、何度か、Seleniumを我が自宅サーバ上で動作可能にするようトライしたことがあるがことごとく失敗していた。

この数か月間、JupyterLab上でのプログラム開発環境を整備してきたところであるが、このプログラム環境を活用してSeleniumの動作環境を構築することを改めて試み、今回、なんとか成功した。動作環境の構築は、Python並びにJavaScript(Node)、それぞれの言語環境で行った。

このエントリーでは、Selenium動作環境の構築にかかわる、一連の手続きをメモしておいた。 (続きを読む)