前几日,于一月底在家闲的实在无聊,便找了点事情做,写了个小脚本每小时收集实时疫情信息,并保存到数据库中,到我写这篇文章为止,我已经收集到了241396
条数据,精确到了地级市的确诊人数、治愈人数、死亡人数,大多数小伙伴们都于下周一返回工作岗位进行复工,下面我将用数据告诉你,为什么国家在下周一敢让你复工。
将mysql数据库中的数据导出csv,保存到桌面,记住路径,用sas导入到临时work库中:
filename csvfile '/folders/myfolders/data_files/all_data.csv';
proc import datafile=csvfile
dbms=csv
out=work.import;
getnames=yes;
guessingrows=32767;
run;
导入的数据集信息如下:
data sasr_all_data;
set work.import;
datetime = datepart(update_time);
hour = hour(update_time);
format datetime yymmddn8.;
drop suspectedCount update_time;
run;
由于湖北省是疫情重灾区,数据量较大,更容易看出疫情蔓延的趋势,所以我们首先将湖北省截止到我写文章的时间点数据(20点)拿出来:
data hubei_data;
set work.sasr_all_data;
where datetime between input('2020-01-29',yymmdd10.)
and input('2020-02-20',yymmdd10.)
and hour = 20
and name = '湖北省';
drop parent_id;
run;
计算每日确诊人数、死亡人数、治愈人数的增长率
data hubei_data_handle;
set work.hubei_data;
/*新建三个变量来保存数据上次迭代的数据*/
retain confirmed_temp cured_temp dead_temp;
/*计算增长率*/
confirmed_growth_rate = abs(confirmed_temp - confirmedCount) / confirmed_temp;
cured_growth_rate = abs(cured_temp - confirmedCount) / cured_temp;
dead_growth_rate = abs(dead_temp - confirmedCount) / dead_temp;
/*为临时变量赋值*/
confirmed_temp = confirmedCount;
cured_temp = curedCount;
dead_temp = deadCount;
/*为缺失值赋值为0*/
if confirmed_growth_rate = . then confirmed_growth_rate = 0;
if cured_growth_rate = . then cured_growth_rate = 0;
if dead_growth_rate = . then dead_growth_rate = 0;
run;
在进行完数据计算之后,接下来就是图形展示:
我们先看一下湖北省每日的死亡人数和确诊人数:
title "湖北省疫情感染情况图";
proc sgplot data=hubei_data_handle;
xaxis type=discrete;
series x=datetime y=confirmedCount / datalabel;
series x=datetime y=deadCount /
datalabel y2axis;
run;
title;
从折线图看,每日增长在逐渐变缓,在02月12日湖北省感染人数明显增长,原因是在12日这天新的领导班子,将之前掩盖的问题彻底揭露了出来,经过新的领导班子的铁腕政策,拐点快要到来,下面看一下死亡人数、确诊人数的增长率:
title "湖北省疫情增长率情况图";
proc sgplot data=hubei_data_handle;
xaxis type=discrete;
series x=datetime y=confirmed_growth_rate / datalabel;
series x=datetime y=dead_growth_rate /
datalabel y2axis;
run;
title;
红色线条是死亡增长率,从02月05日开始,死亡率明显下降,同时在12日有了突增,原因还是因为新的领导班子大刀阔斧,将之间旧的问题暴露出来,从12日开始,增长率开始有了明显的下降,蓝色线条是确诊人数增长率,我们也看到了明显的下降,疫情有了明显的控制。
首先需要拿出全国省市在01月29日至02月20日特定时间点(20点)的数据:
data all_data;
set work.sasr_all_data;
where datetime between input('2020-01-29',yymmdd10.)
and input('2020-02-20',yymmdd10.)
and hour = 20
and parent_id = 'NULL';
drop parent_id;
run;
将数据按照日期汇总,计算出全国总的确诊人数、死亡人数、治愈人数:
proc sql;
create table all_data_sum as
select t.datetime,
sum(t.confirmedCount) as confirmedCount,
sum(t.deadCount) as deadCount,
sum(t.curedCount) as curedCount
from all_data t group by t.datetime;
quit;
计算增长率,计算逻辑与之前相似:
data all_data_handle;
set all_data_sum;
retain confirmed_temp cured_temp dead_temp;
confirmed_growth_rate = abs(confirmed_temp - confirmedCount) / confirmed_temp;
cured_growth_rate = abs(cured_temp - confirmedCount) / cured_temp;
dead_growth_rate = abs(dead_temp - confirmedCount) / dead_temp;
confirmed_temp = confirmedCount;
cured_temp = curedCount;
dead_temp = deadCount;
if confirmed_growth_rate = . then confirmed_growth_rate = 0;
if cured_growth_rate = . then cured_growth_rate = 0;
if dead_growth_rate = . then dead_growth_rate = 0;
run;
首先看一下全国的每日死亡人数和确诊人数:
title "全国疫情详情统计图";
proc sgplot data=all_data_handle;
xaxis type=discrete;
series x=datetime y=confirmedCount / datalabel;
series x=datetime y=deadCount /
datalabel y2axis;
run;
title;
虽然曲线在逐渐增长,但是斜率在逐渐变低,那就意味着增长率也在慢慢降低。
接下来看一下增长率:
红色线条是死亡增长率,蓝色线条是感染人数增长率,我们可以明显看到,每日感染人数的增长率都在逐步降低,死亡率也在慢慢降低,疫情得到了明显的控制,增长率已经控制到了2%以下。
通过全国和湖北重灾区数据的可视化分析,我们能够得到的一个结论是,我们的各项数据的增长率在慢慢降低,相信不久的将来,可能是10天以内,增长率会控制在1%以下,这就为全国复工打下了坚实的基础,所以国家才会大力鼓励各地全员开工,恢复经济发展,好了今天的文章就到这里。
本文分享自 Tyrant Lucifer 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!