新型冠状病毒(2019-nCov) 的疫情牵动着全世界人民的心,而理性地对待离不开数据和分析。为了让人民大众及时了解情况,很多网站都公布疫情的实时信息。比方说丁香园疫情实时动态, 腾讯疫情实时追踪, 约翰霍普金斯实时新冠地图 等等。这些网站快速地为公众提供了信息,增加了透明度。但是如果读者希望对疫情有进一步的了解,这些网站就不够用了。比方说,如果你想得到过去十天湖北省确诊人数,那就只能从趋势图上作个估计了。再比方说,如果你想对比一下湖南、广东、浙江三省在过去十天的新增确诊人数,那么单凭网页数据也无能为力了。
为了取得可以供研究使用的数据,DXY-2019-nCoV-Data 项目利用网络爬虫不断从网上抓取数据,更新并存成 CSV 格式。然而,这个 CSV 文件包含的是不同时刻网页上的信息片段,有的时候只有这几个城市,有的时候只有那几个城市,数据并不规整。
为了进一步方便用户进行研究,本项目nCov2019_analysis 提供了一些基本工具,把实时数据规整为每日数据,方便用户按时间、省份、城市等方法检索。同时,本项目还提供了基本的时间序列和横向分析作图函数,方便用户取得基本信息。
以下是基本使用方法演示:
import pandas as pd
import matplotlib.pyplot as plt
import utils # some convenient functions
%load_ext autoreload
%autoreload 2
data = utils.load_chinese_data()
data.head(3) # 查看数据形式
daily_frm = utils.aggDaily(data)
daily_frm.tail(3)
daily_frm[daily_frm['province_name'] == '广东省'].head()
daily_frm[daily_frm['city_name'] == '武汉'].head()
(请注意,因为可能存在不同城市的汉字对应相同的拼音,所以检索城市时请尽量使用汉字。如果使用拼音检索,请务必保证其对应汉字城市的唯一性)
daily_frm[daily_frm['city_name_en'] == 'Guangzhou'].head()
daily_frm[daily_frm['update_date'] == pd.to_datetime('2020-01-27')].head()
import matplotlib.font_manager as mfm
_FONT_PROP_ = mfm.FontProperties(fname='C:/Windows/Fonts/STFANGSO.TTF') # 如果想要在图中显示中文,必须指定字体文件
fig = utils.tsplot_conf_dead_cured(daily_frm)
fig.suptitle('全国确诊、死亡、治愈人数', fontproperties=_FONT_PROP_, fontsize=18)
plt.show()
province = '河南省' # 输入你所要的省份
fig = utils.tsplot_conf_dead_cured(daily_frm[daily_frm['province_name'] == province])
fig.suptitle(province + ' 确诊、死亡、治愈人数', fontproperties=_FONT_PROP_, fontsize=18)
plt.show()
city = '武汉'
fig = utils.tsplot_conf_dead_cured(daily_frm[daily_frm['city_name'] == city], logy=False)
fig.suptitle(city + ' 确诊、死亡、治愈人数', fontproperties=_FONT_PROP_, fontsize=18)
plt.show()
ax = utils.cross_sectional_bar(daily_frm, '2020-02-03', col='cum_confirmed', groupby='province_name')
ax.set_title('2020-02-03 各省累计确诊数比较', fontproperties=_FONT_PROP_, fontsize=18)
plt.show()
ax = utils.cross_sectional_bar(daily_frm[daily_frm['province_name'] == '湖北省'], '2020-02-01', col='cum_dead', groupby='city_name')
ax.set_title('2020-02-01 各省累计死亡人数比较', fontproperties=_FONT_PROP_, fontsize=18)
plt.show()
ax = utils.cross_sectional_bar(daily_frm, '2020-02-05', col='new_confirmed', groupby='city_name', largestN=10)
ax.set_title('2020-02-05 全国各市新增确诊人数前十', fontproperties=_FONT_PROP_, fontsize=18)
plt.show()