数据分析“驾驶舱”系统
- 引言
- 系统设计
- 实现流程
- 数据获取与SQL存储
- SQL架构程序
- Flask界面设计
- Echarts界面可视化设计
- SQL数据库与前端界面的交互实现
- 总结
- 参考
数据可视化驾驶舱是一款为民众及相关决策者提供的指标分析型系统。打破数据隔离实现指标分析及决策场景落地。通过详尽的指标体系实时反映企业的运行状态将采集的数据形象化、直观化、具体化。“管理驾驶舱”充分融合了人脑科学、管理科学和信息科学的精华以人为产品的核心从决策者的决策环境、企业管理综合指标的定义以及信息的表述都围绕着激发人的智能、有利于思维连贯和有效思维判断为目的。将管理决策提升到一个新的高度。最大化地发挥高层经理了解、领导和控制相关业务的管理室即驾驶舱实际上是一个为高层管理层提供的“一站式”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现今疫情的发展已经走到“下半场”因此世界的舆情的趋势发展监控的架构也十分重要在疫情的数据呈现的全面性上仍有待提高改进。
文章标题仅为噱头希望读者可以怀着一颗虚心求知的心学习知识同时其中·不足望多多指正
参考大数据舆情监控项目实战