前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我用数据告诉你,为什么国家敢复工

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

作者头像
tyrantlucifer
发布2022-03-23 15:24:46
5270
发布2022-03-23 15:24:46
举报
文章被收录于专栏:Tyrant LuciferTyrant Lucifer

前言

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

导入数据

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

代码语言:javascript
复制
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,需要把相关日期提取出来,把时间去掉
  • 需要从时间把时提取出来,方便后面作筛选
代码语言:javascript
复制
data sasr_all_data;
	set work.import;
	datetime = datepart(update_time);
	hour = hour(update_time);
	format datetime yymmddn8.;
	drop suspectedCount update_time;
run;

数据筛选、计算

以湖北省为例

数据筛选

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

代码语言:javascript
复制
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;
数据计算

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

代码语言:javascript
复制
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;

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

图形可视化分析

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

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

代码语言:javascript
复制
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点)的数据:

代码语言:javascript
复制
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;
数据计算

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

代码语言:javascript
复制
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;

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

代码语言:javascript
复制
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;
图形可视化分析

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

代码语言:javascript
复制
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%以下,这就为全国复工打下了坚实的基础,所以国家才会大力鼓励各地全员开工,恢复经济发展,好了今天的文章就到这里。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tyrant Lucifer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 导入数据
  • 数据清洗
  • 数据筛选、计算
    • 以湖北省为例
      • 数据筛选
      • 数据计算
      • 图形可视化分析
    • 以全国为例
      • 数据筛选
      • 数据计算
      • 图形可视化分析
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档