教女友做好一个数据分析“驾驶舱”

引言

 数据可视化驾驶舱是一款为民众及相关决策者提供的指标分析型系统。打破数据隔离,实现指标分析及决策场景落地。通过详尽的指标体系,实时反映企业的运行状态,将采集的数据形象化、直观化、具体化。“管理驾驶舱”充分融合了人脑科学、管理科学和信息科学的精华,以人为产品的核心,从决策者的决策环境、企业管理综合指标的定义以及信息的表述,都围绕着激发人的智能、有利于思维连贯和有效思维判断为目的。将管理决策提升到一个新的高度。最大化地发挥高层经理了解、领导和控制相关业务的管理室(即驾驶舱),实际上是一个为高层管理层提供的“一站式”(One-Stop)决策支持的管理信息中心系统。
 自2019年新冠肺炎流行至今,各平台的数据公示各有千秋,这使得制作出一个可以直观的让民众、决策者了解肺炎趋势的数据可视化“驾驶舱”就显得尤为重要。

系统设计

 笔者结合自身的知识架构与数据库所学本领知识,通过查阅相关资料,设计了一款相对简单实用的实用的数据可视化驾驶舱系统。系统的底层数据基于python爬虫获取;通过MySQL数据库实现数据的存取;界面基于Flask工具设计;可视化基于Echarts工具实现图像的绘制;由于笔者缺少linuix系统的相关经验与工具,故项目部署环节作出省略。最终的设计思想如下图所示。
在这里插入图片描述

实现流程

数据获取与SQL存储

 本课题数据主要为两类:1、数值型数据,来源与腾讯数据实时更新;2、文本数据,来源与百度的舆情热搜。
通过python将数据爬取并处理后,将数据存入MySQL设计好的库中,便于后期数据的拿取,疫情数据库的数据关系如下图 所示,相关E-R图详见下图 :
在这里插入图片描述
在这里插入图片描述

SQL架构程序

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for details
-- ----------------------------
DROP TABLE IF EXISTS `details`;
CREATE TABLE `details`  (
  `id` int(11) NOT NULL,
  `updata_time` datetime(0) NOT NULL,
  `province` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `city` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `confrim` int(11) NULL DEFAULT NULL,
  `confrim_add` int(11) NULL DEFAULT NULL,
  `heal` int(11) NULL DEFAULT NULL,
  `dead` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `updata_time`(`updata_time`) USING BTREE,
  CONSTRAINT `up` FOREIGN KEY (`updata_time`) REFERENCES `history` (`ds`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for history
-- ----------------------------
DROP TABLE IF EXISTS `history`;
CREATE TABLE `history`  (
  `ds` datetime(0) NOT NULL,
  `confrim` int(11) NULL DEFAULT NULL,
  `confrim_add` int(11) NULL DEFAULT NULL,
  `suspect` int(11) NULL DEFAULT NULL,
  `suspect_add` int(11) NULL DEFAULT NULL,
  `heal` int(11) NULL DEFAULT NULL,
  `heal_add` int(11) NULL DEFAULT NULL,
  `dead` int(11) NULL DEFAULT NULL,
  `dead_add` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`ds`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for hotsearch
-- ----------------------------
DROP TABLE IF EXISTS `hotsearch`;
CREATE TABLE `hotsearch`  (
  `id` int(11) NOT NULL,
  `dt` datetime(0) NOT NULL,
  `content` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `dt`(`dt`) USING BTREE,
  CONSTRAINT `dt` FOREIGN KEY (`dt`) REFERENCES `history` (`ds`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

Flask界面设计

 笔者结合当前相关的研究资料,与所得类型数据,将通过Flask设计的界面分为了以下8个部分:

  • Title(标题);
  • Time(时间);
  • L1(左上图像板块);
  • L2(左下图像板块);
  • c1(中上图像板块);
  • c2(中下图像板块);
  • r1(右上图像板块);
  • r2(右下图像板块);
    实现的原始“驾驶舱”界面如图 所示
    在这里插入图片描述

Echarts界面可视化设计

 Echarts是一款开源、功能强大的可视化图像设计工具,对于前端的图像设计十分契合,故笔者选取此工具作为“驾驶舱”的可视化图像设计工具。结合数据类型、可视化呈现全面性、工具的可选功能考虑后,笔者可视化的设计思路如下:

  • L1(左上):累计趋势折线图;
  • L2(左下):增量趋势折线图;
  • C1(中1):数值实时情况呈现;
  • C2(中2):疫情热图;
  • R1(右上):确诊趋势柱状图;
  • R2(右下):舆情词云图。
    实现效果如图 所示。
    在这里插入图片描述

SQL数据库与前端界面的交互实现

 笔者通过python的pymysql库,实现SQL数据在python的调用。在数据拿取使用上,笔者通过简单的select语句从history表中选取出相关数据进行数据形式转换后完成累计趋势图、新增趋势图与数值情况呈现的绘制;通过拿取detials表中实时疫情详细数据并进行相关格式转换后完成疫情热图的呈现,同时通过对非湖北相关疫情城市数据的降序排序后,提取出前五个城市数据项,完成非湖北TOP5城市的数据柱状图呈现;通过SQL调用出hotsearch中的前20条疫情文本数据,通过python中的jieba分词库进行分词计数操作后,导入处理后数据实现词云图的呈现。最终的“驾驶舱”实现效果如图 所示。
在这里插入图片描述

总结

⋓本次实验以python为工具实现舆情数据爬取、“驾驶舱”界面的设计和与MySQL数据库的交互;选用MySQL作为数据的储存工具,Echarts实现可视化图像的呈现,最终完成了疫情“驾驶舱”系统的构建。
 通过本次实验,笔者学习到SQL数据库怎样与其他工具进行交互搭建系统,认识到掌握SQL的重要性,也认识到自身的架构能力的不足,因此,关于本次实验仍有一些不足有待改进:(1)现阶段数据爬取平台网址的数据结构会不时的更新,因此使得疫情驾驶舱系统无法做到实时的数据更新,在数据获取与更新上仍有待改进;(2)现今,疫情的发展已经走到“下半场”,因此世界的舆情的趋势发展监控的架构,也十分重要,在疫情的数据呈现的全面性上,仍有待提高改进。

文章标题仅为噱头,希望读者可以怀着一颗虚心求知的心学习知识,同时其中·不足望多多指正

参考

大数据舆情监控项目实战

猜你喜欢

转载自blog.csdn.net/Zengmeng1998/article/details/106099240