前言

前几日,于一月底在家闲的实在无聊,便找了点事情做,写了个小脚本每小时收集实时疫情信息,并保存到数据库中,到我写这篇文章为止,我已经收集到了241396条数据,精确到了地级市的确诊人数、治愈人数、死亡人数,大多数小伙伴们都于下周一返回工作岗位进行复工,下面我将用数据告诉你,为什么国家在下周一敢让你复工。

导入数据

将mysql数据库中的数据导出csv,保存到桌面,记住路径,用sas导入到临时work库中:

1
2
3
4
5
6
7
8
filename csvfile '/folders/myfolders/data_files/all_data.csv';

proc import datafile=csvfile
dbms=csv
out=work.import;
getnames=yes;
guessingrows=32767;
run;

导入的数据集信息如下:

  • confirmedCount:确诊人数
  • curedCount:治愈人数
  • deadCount:死亡人数
  • name:省份、地级市名称
  • parent_id:上级地区名称
  • update_time:更新时间

数据清洗

  • 由于数据源suspectedCount(疑似人数)不正确,需要在数据集里丢掉它
  • update_time的格式是datetime,需要把相关日期提取出来,把时间去掉
  • 需要从时间把时提取出来,方便后面作筛选
1
2
3
4
5
6
7
data sasr_all_data;
set work.import;
datetime = datepart(update_time);
hour = hour(update_time);
format datetime yymmddn8.;
drop suspectedCount update_time;
run;

数据筛选、计算

以湖北省为例

数据筛选

由于湖北省是疫情重灾区,数据量较大,更容易看出疫情蔓延的趋势,所以我们首先将湖北省截止到我写文章的时间点数据(20点)拿出来:

1
2
3
4
5
6
7
8
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;

数据计算

计算每日确诊人数、死亡人数、治愈人数的增长率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;

在进行完数据计算之后,接下来就是图形展示:

图形可视化分析

我们先看一下湖北省每日的死亡人数和确诊人数:

1
2
3
4
5
6
7
8
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日这天新的领导班子,将之前掩盖的问题彻底揭露了出来,经过新的领导班子的铁腕政策,拐点快要到来,下面看一下死亡人数、确诊人数的增长率:

1
2
3
4
5
6
7
8
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点)的数据:

1
2
3
4
5
6
7
8
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;

数据计算

将数据按照日期汇总,计算出全国总的确诊人数、死亡人数、治愈人数:

1
2
3
4
5
6
7
8
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;

计算增长率,计算逻辑与之前相似:

1
2
3
4
5
6
7
8
9
10
11
12
13
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;

图形可视化分析

首先看一下全国的每日死亡人数和确诊人数:

1
2
3
4
5
6
7
8
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%以下,这就为全国复工打下了坚实的基础,所以国家才会大力鼓励各地全员开工,恢复经济发展,好了今天的文章就到这里,下面是我的个人微信公众号,如果这篇文章帮到了您,请右下角点一个在看支持我一下,我们下期再见!我是TyrantLucifer,一个专注于Linux、Python、数据挖掘、数据分析的初入门小菜鸡~~