去年4月1日,罗永浩直播带货首秀在抖音进行,这场直播累计观看人数超过3000万人,销售额最终超1.1亿。接着网上发布了对于这场直播数据的“可视化大屏展示”,很多人都好奇这个是用什么做的,今天就带大家做一个类似于下图的可视化大屏。

可视化大屏可真是太 beautiful 了!!!_后端

上图是罗永浩直播数据的可视化大屏展示,下图是本文我们要做的可视化大屏展示,先来给大家看一个视频!如出一辙,有兴趣的可以跟着我操作一遍。

一、ERP系统(企业资源规划)

将资源配比运用到企业身上,叫做“ERP系统”,全称是“EnterPrice Recourse Planning”,以某想公司为例来说,大家都知道它是做电脑的。

1) 采购管理:像 CPU、主板、芯片他们都做不了,于是需要采购。
2) 生产管理:主要是看一下工艺,以及合格率等。
3) 库存管理:根据市场的需求,哪些产品需要多库存一些,哪些需要少库存一些,保证库存供给均衡。
4) 销售管理:销售分线上的和线下的。
5) 物流管理
6) 财务管理:像进账、出账、预算等。
7) 人力管理:公司员工关系。
8) 企业文化:不同公司有着不同的企业文化。

二、HRP

将 ERP 系统运用到医疗行业,就成了“HRP”,全称是“Hospital Resource Planning”,又叫“医院资源规划”

三、项目背景及目的

本文基于某医院一些数据,为院长制作一个“驾驶舱”,帮助他了解医院的运营情况及其存在的问题,并针对这些问题进行诊断,达到资源配比合理化。

四、项目需求

我们从上面的目的可以知道,本文就是要为院长做一个可视化大屏,帮助他做决策,既然是帮院长做,那么我们就要知道,作为一个院长,主要关注哪些东西,他所关注的,就是我们要做的。下面我们简要列举以下几个:

  • 各科室的人员配比情况,像医生、护士、患者。
  • 各科室的就诊情况,门诊、住院(病床)
  • 各科室的收入;

五、数据表的介绍

可视化大屏可真是太 beautiful 了!!!_Python_02

六、软件实现

6.1 新建一个决策报表,添加一个背景

可视化大屏可真是太 beautiful 了!!!_Python_03

6.2 连接数据库:hospital_hrp

可视化大屏可真是太 beautiful 了!!!_数据可视化_04

6.3 标题及科室列表图的制作

6.3.1 新建数据连接,导入数据源

可视化大屏可真是太 beautiful 了!!!_Python_05

6.3.2 导入报表块儿:添加一个标题(资源配比决策大屏)

可视化大屏可真是太 beautiful 了!!!_Python_06

6.3.3 点击上述编辑,进行如下操作

可视化大屏可真是太 beautiful 了!!!_Python_07

6.3.4 保存后,进行效果预览

可视化大屏可真是太 beautiful 了!!!_Python_08

6.3.5 再次导入一个报表块儿,用于制作科室列表图

可视化大屏可真是太 beautiful 了!!!_数据可视化_09

6.3.6 点击上述编辑后,完成如下操作

可视化大屏可真是太 beautiful 了!!!_Python_10

6.3.7 调整两个报表块儿的间距后,保存并进行效果展示

可视化大屏可真是太 beautiful 了!!!_后端_11

6.4 各科室人员配比分析

  • 国家标配指标:医患比(1:5)、护患比(1:2.5),这个数字是国家标配。
  • 需求1:某科室医、护患比月度趋势分析
  • 需求2:某科室国家标配(占比)和医院现状(占比)的对比分析
6.4.1 需求1:某科室医、护患比月度趋势分析
利用SQL语句,统计不同科室有多少医生、护士
"--------医生人数统计----------"
select
    deptno,deptname,
  count(name) 医生人数
from doctor
group by deptno,deptname

"--------护士人数统计----------"
select
    deptno,deptname,
  count(name) 护士人数
from nurse
group by deptno,deptname

"--------患者不同科室、不同月份的人数统计----------"
select 
   deptno,in_month,
     count(name) 患者人数
from hospital
group by deptno,in_month
复制代码

结果如下:

可视化大屏可真是太 beautiful 了!!!_Python_12

进行表连接,得到我们用于绘图的数据
select 
       a.deptname,in_month,
       (患者人数/医生人数) as 医患比,
       (患者人数/护士人数) as 护患比
from
(select
       deptno,deptname,
  count(name) 医生人数
from doctor
 group by deptno,deptname) a,

(select
  deptno,deptname,
    count(name) 护士人数
from nurse
group by deptno,deptname) b,


(select 
     deptno,in_month,
   count(name) 患者人数
from hospital
group by deptno,in_month) c
where a.deptno = b.deptno and a.deptno = c.deptno
复制代码

结果如下(截取部分结果如下):

可视化大屏可真是太 beautiful 了!!!_Python_13

在帆软中,利用上述SQL语句,得到最终的绘图数据

可视化大屏可真是太 beautiful 了!!!_数据可视化_14

插入一个折线图

可视化大屏可真是太 beautiful 了!!!_数据可视化_15

点击上述的编辑后,进行数据源的绑定

可视化大屏可真是太 beautiful 了!!!_数据可视化_16

进行标题的设置(很关键)

由于我们未来需要进行联动效果的设置,也就是说,你选择哪一个科室,标题就要显示哪一个科室,这一步很关键。这里强调一下,下面的叙述中,就不再介绍了。

可视化大屏可真是太 beautiful 了!!!_Python_17

添加两条警戒线(也就是我们常说的参考线)

我们知道国家配比关系:医患比(1:5)、护患比(1:2.5),因此以2.5和5为准,各做一条参考线,可以将医院的现状和这条参考线,进行清楚的对比。

可视化大屏可真是太 beautiful 了!!!_后端_18

注意:同理,我们可以再次添加一个护患比趋势线,操作步骤一摸一样,这里不做演示。

保存操作后,进行效果展示

注意:每次做完每个操作后,最好保存一下。

可视化大屏可真是太 beautiful 了!!!_数据可视化_19

问题来了:此时的科室表,与下方的折线图并不能进行联动,因此怎么办呢?

科室表与折线图联动效果的设置

首先,我们编辑这个“科室表”

可视化大屏可真是太 beautiful 了!!!_Python_20

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_Python_21

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_Python_22

保存后,进行效果展示。

可视化大屏可真是太 beautiful 了!!!_后端_23

6.4.2 需求2:某科室国家标配(占比)和医院现状(占比)的对比分析
利用SQL语句,得到“某科室国家标配占比”
SELECT * FROM `normalconfig`
where deptname='${科室名称}'
复制代码

操作如下:

可视化大屏可真是太 beautiful 了!!!_数据可视化_24

插入一个饼图,并选择为“圆环图-旧版本”,并选择为立体圆环图

可视化大屏可真是太 beautiful 了!!!_后端_25

进行数据源的绑定

可视化大屏可真是太 beautiful 了!!!_数据可视化_26

进行标题的设置(为什么设置,上述已经进行了说明)

可视化大屏可真是太 beautiful 了!!!_Python_27

注意:我其实还进行了其它参数的设置,很简单,这里我们就不截图演示

接着,我们再次进行“科室表”与圆环图,联动效果的设置

首先,我们编辑这个“科室表”

可视化大屏可真是太 beautiful 了!!!_后端_28

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_Python_29

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_后端_30

保存后,进行效果展示。

可视化大屏可真是太 beautiful 了!!!_后端_31

同理,我们可以做出,“某科室自己医院现状标配占比”,由于大部分步骤一样,这里就只演示不同的步骤。只有“绑定数据源”这一步操作不同。

可视化大屏可真是太 beautiful 了!!!_数据可视化_32

但是此时并不行,为什么呢?因为我们左右两个圆环图的图例并不是一一对应。此时,我们将“国家标配”这个圆环图,今行字段的调整。

可视化大屏可真是太 beautiful 了!!!_后端_33

保存后,进行效果演示。

可视化大屏可真是太 beautiful 了!!!_数据可视化_34

6.5 就诊情况分析

  • 需求1:某科室现有及标配病床对比分析(条形图)
  • 需求2:病床利用率
  • 需求3:某科室病床利用率月度趋势分析
6.5.1 需求1:某科室现有及标配病床对比分析
利用SQL语句,统计现有及标配病床数
select 
       a.deptname,
       标配,
       现有,
       (标配-现有) as 差值
from 
(select 
       deptno,deptname,bednum as 标配
 from normalconfig
) a,
(select 
  deptno,deptname,bednum as 现有
 from department
 ) b
where a.deptno = b.deptno
复制代码

结果如下(截取部分如下):

可视化大屏可真是太 beautiful 了!!!_后端_35

在帆软中,利用上述SQL语句,得到最终的绘图数据

可视化大屏可真是太 beautiful 了!!!_数据可视化_36

插入一个条形图,并进行数据的绑定

可视化大屏可真是太 beautiful 了!!!_Python_37

进行标题的设置

可视化大屏可真是太 beautiful 了!!!_数据可视化_38

动态闪烁效果展示:特效功能

当某个值出现了负数,就标红。

可视化大屏可真是太 beautiful 了!!!_后端_39

接着,我们再次进行“科室表”与条形图,联动效果的设置

首先,我们编辑这个“科室表”

可视化大屏可真是太 beautiful 了!!!_数据可视化_40

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_后端_41

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_后端_42

保存后,进行效果展示。

可视化大屏可真是太 beautiful 了!!!_后端_43

6.5.2 需求2:病床利用率

病床利用率 = 一个月的患者人数 / 病床数(0.7-0.9表示还不错)

利用SQL语句,统计病床利用率达标的科室
select
        deptname,
        in_month,
        round((患者人数/bednum),2) as 病床利用率
from
(select
     *
from department) a,

(select 
    deptno,in_month,
    count(name) as 患者人数
from hospital
group by deptno,in_month) b
where a.deptno = b.deptno
and (患者人数/bednum) >= 0.7 and (患者人数/bednum) <= 0.9
复制代码

结果如下:

可视化大屏可真是太 beautiful 了!!!_后端_44

在帆软中,利用上述SQL语句,得到最终的绘图数据

可视化大屏可真是太 beautiful 了!!!_后端_45

插入一个条形图,并进行数据的绑定

可视化大屏可真是太 beautiful 了!!!_数据可视化_46

保存后,进行效果展示

可视化大屏可真是太 beautiful 了!!!_Python_47

6.5.3 需求3:某科室病床利用率月度趋势分析
利用SQL语句,统计现有及标配病床数
select
       deptname,
       in_month,
       round((患者人数/bednum),2) as 病床利用率
from
(select
    *
from department) a,

(select 
   deptno,in_month,
   count(name) as 患者人数
from hospital
group by deptno,in_month) b
where a.deptno = b.deptno
复制代码

结果如下(截取部分如下):

可视化大屏可真是太 beautiful 了!!!_后端_48

在帆软中,利用上述SQL语句,得到最终的绘图数据

可视化大屏可真是太 beautiful 了!!!_后端_49

插入一个条形图,并进行数据的绑定

可视化大屏可真是太 beautiful 了!!!_Python_50

进行标题的设置

可视化大屏可真是太 beautiful 了!!!_后端_51

添加一个参考线:0.85

可视化大屏可真是太 beautiful 了!!!_Python_52

接着,我们再次进行“科室表”与条形图,联动效果的设置

首先,我们编辑这个“科室表”

可视化大屏可真是太 beautiful 了!!!_数据可视化_53

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_Python_54

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_后端_55

保存后,进行效果展示。

可视化大屏可真是太 beautiful 了!!!_Python_56

6.6 收入情况分析

  • 需求1:某科室住院收入月度趋势分析
  • 需求2:病床利用率
6.6.1 需求1:某科室住院收入月度趋势分析
利用SQL语句,统计现有及标配病床数
select 
       deptname,in_month,收入
from 
(select 
       deptno,in_month,
       round(sum(lastincome),2) as 收入
from hospital
group by deptno,in_month) a,
(select * from department) b
where a.deptno = b.deptno
复制代码

结果如下(截取部分如下):

可视化大屏可真是太 beautiful 了!!!_后端_57

在帆软中,利用上述SQL语句,得到最终的绘图数据

可视化大屏可真是太 beautiful 了!!!_Python_58

插入一个条形图,并进行数据的绑定

可视化大屏可真是太 beautiful 了!!!_后端_59

进行标题的设置

可视化大屏可真是太 beautiful 了!!!_后端_60

接着,我们再次进行“科室表”与条形图,联动效果的设置

首先,我们编辑这个“科室表”

可视化大屏可真是太 beautiful 了!!!_数据可视化_61

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_数据可视化_62

当出现如下界面,完成如下操作。

可视化大屏可真是太 beautiful 了!!!_数据可视化_63

保存后,进行效果展示。

可视化大屏可真是太 beautiful 了!!!_Python_64

推荐阅读

数据分析之 AB testing 实战(附 Python 代码)

Python 自动化办公之"你还在手动操作“文件”或“文件夹”吗?"

最详细的 Python 结合 RFM 模型实现用户分层实操案例!

利用 Python 进行多 Sheet 表合并、多工作簿合并、一表按列拆分