|
proxies = { 'http': 'xxxxx', 'https': 'xxxxx' } import requests import pandas as pd from scipy.stats import linregress import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler import numpy as np urls = ['https://covidlive.com.au/report/daily-cases/nsw', 'https://covidlive.com.au/report/daily-deaths/nsw', 'https://covidlive.com.au/report/daily-vaccinations/nsw'] T = 13 T2 = 42 d = pd.DataFrame() for url in urls: html = requests.get(url,proxies=proxies).content tab_list = pd.read_html(html) data = tab_list[1] data.set_index("DATE", inplace=True) d = pd.concat([d, data], axis=1) d.index = pd.to_datetime(d.index) data = d[['DEATHS','DOSES','CASES','NEW']] data = data.dropna() data = data.assign(DAILYDEATH = data["DEATHS"] - data["DEATHS"].shift(-1), CASE_T = data["NEW"].shift(-1*T), CASELOG = data["NEW"]/data["NEW"].shift(-1), DEATHLOG = data["DEATHS"]/data["DEATHS"].shift(-1), DOSE_T = data["DOSES"].shift(-1*T2)) data = data.dropna() data.fillna(0, inplace=True) data["CASELOG"] = data["CASELOG"].apply(np.log) data["DEATHLOG"] = data["DEATHLOG"].apply(np.log) data['CFR'] = data.DAILYDEATH/data.CASE_T data = data.sort_index() data = data.loc["2021-07-01":] #[['NEW','DAILYDEATH','CASE_T','INCREASELOG','DOSE_T','CFR']] standardizer = MinMaxScaler().fit(data) data = pd.DataFrame(data, columns=['DEATHS', 'DOSES', 'CASES', 'NEW', 'DAILYDEATH', 'CASE_T', 'CASELOG', 'DEATHLOG', 'DOSE_T', 'CFR']) data[["CFR", "DOSE_T"]].corr() CFR DOSE_T CFR 1.000000 -0.108629 DOSE_T -0.108629 1.000000 #完全疫苗率上升,死亡率下降 data[["CASELOG", "DOSE_T"]].corr() CASELOG DOSE_T CASELOG 1.000000 -0.197275 DOSE_T -0.197275 1.000000 #完全疫苗率上升,病例扩散速度下降 data[["CASELOG", "CFR"]].corr() CASELOG CFR CASELOG 1.000000 0.091137 CFR 0.091137 1.000000 #病例扩散速度增加,死亡增加 |