我用数据告诉你,为什么国家敢复工

Tyrant 2020年02月21日 •  sas 867 •  0
本文最后修改于 169 天前,部分内容可能已经过时!

前言

前几日,于一月底在家闲的实在无聊,便找了点事情做,写了个小脚本每小时收集实时疫情信息,并保存到数据库中,到我写这篇文章为止,我已经收集到了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;

导入的数据集信息如下:

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

数据清洗

  • 由于数据源suspectedCount(疑似人数)不正确,需要在数据集里丢掉它
  • update_time的格式是datetime,需要把相关日期提取出来,把时间去掉
  • 需要从时间把时提取出来,方便后面作筛选
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%以下,这就为全国复工打下了坚实的基础,所以国家才会大力鼓励各地全员开工,恢复经济发展,好了今天的文章就到这里,下面是我的个人微信公众号,如果这篇文章帮到了您,请右下角点一个在看支持我一下,我们下期再见!我是TyrantLucifer,一个专注于Linux、Python、数据挖掘、数据分析的初入门小菜鸡~~

Tags:none
上一篇
打赏
下一篇

该页面评论已关闭