基于Flask的电梯事故大数据挖掘可视化系统的研究与实现

摘要: 目前,我国现有的电梯事故数据信息的网站或APP较多,而且现有的电梯事故网站发布的信息良莠不齐,夹杂着大量无用的电梯事故信息,这会让获取电梯事故数据信息可视化时难以分辨有效的信息,查询的的效率会很低。如果开发一套Web系统将市面上的电梯事故数据信息可视化通过大数据技术进行存储、计算与智能化分析,将会给保护电梯事故者提供巨大的好处。

本文设计了基于Flask的电梯事故数据可视化系统,本系统的核心功能是通过爬取海量的电梯事故数据信息可视化的原始数据,并通过大数据技术将原始数据存储、计算,并将分析的结果以可视化列表形式展示。

本论文的主要研究工作及取得的成果如下:

  1. 使用Flask等软件开发技术,设计并成功开发出了一套基于Flask的电梯事故数据可视化系统的软件系统,本后台系统的电梯事故数据信息可视化数据源于电梯事故网站上爬取的电梯事故数据信息可视化。
  2. 使用基于Python语言的网络爬虫,爬取了电梯事故网站上的电梯事故数据信息可视化。对爬取到的原始数据进行数据清洗后存储到本地机器上,然后使用Python词云运算编程模型对数据计算,最后将结果保存至MySQL中存储分析。

关键词:Flask;Python; 词云分析;电梯事故数据信息可视化

1 绪论

1.1研究背景与现状

在如今的互联网时代下,电梯事故统计也由传统的线下转变为互联网,目前市场上流行的电梯事故软件和网站种类繁多,电梯事故数据信息可视化质量也参差不齐,相对比较知名且应用广泛的电梯事故数据信息可视化发布平台有中华电梯事故网等。在上述平台中每天都会发布海量的电梯事故数据信息可视化和查询的信息,然而由于网络信息存在一定的虛假性,这会给查询者带来一定的误导效果,导致网上查询的过程的体验不佳。并且由于各平台之间的用户数据不互通,用户需要来回反复的进行注册登录操作,这一过程也会浪费大量时间和精力。

总而言之,从上述问题可以看出目前互联网电梯事故数据信息可视化平台信息缺乏整合,用户在冗杂的电梯事故数据信息可视化中难以筛选出有效的信息。本论文拟初步研究开发出一套完整的基于大数据平台的电梯事故平台信息分析系统,本系统主要用于对电梯事故数据信息可视化和公司信息进行采集,通过大数据平台对数据进行存储和计算,将大数据分析结果以可视化形式给用户查询。这样,用户在使用本平台时只需一次注册操作,即可浏览各平台发布的电梯事故数据信息可视化,并且可以根据用户的条件进行筛选,可极大的提高查询的效率,给景点和查询的者都带来一定的便利。

1.2论文主要研究工作

为了实时了解各行业最新最热的技术、最火热的景点、门票最高的景点光靠人工收集并采用普通的方式进行分析十分浪费人力物力,并且效率和体验都不好,因此开发一套基于大数据的电梯事故数据分析系统显得尤为重要。本论文所设计的基于大数据平台的电梯事故数据信息可视化分析系统的最核心功能是对海量电梯事故数据信息可视化的列表展示,并将大数据计算分析的结果以科技大屏可视化形式展出,使得用户能够非常直观的获取到当下的行业电梯事故数据信息可视化。

本系统首先需要提供给客户管理和使用的数据。本文使用基于Python语言的Scrapy框架的网络爬虫技术爬取用户使用率较高的电梯事故网站上实时的电梯事故数据信息作为数据来源,以此作为大数据分析的关键数据支撑。然后使用本地机器,生态圈中分布式运算模型词云框架对海量的电梯事故数据信息可视化数据进行数据清洗,数据融合,计算,分析等流程,数据通过处理后持久化到MySQL数据库中存储。在计算出分析结果数据后,使用Flask等软件开发技术等框架完成基于大数据分析平台系统的后台的开发。

本文开发一套Web系统将市面上的电梯事故数据信息可视化通过大数据技术进行存储、计算与智能化分析,将会给保护电梯事故者提供巨大的好处。在提供电梯事故数据信息可视化列表展示以及筛选功能的同时,还为用户提供个人信息管理,注册修改等功能,这样做便使得该系统成为功能相对完整,业务逻辑清晰,可大幅度提高查询的和电梯事故的效率。

2 技术总述

2.1 基于Scrapy的网络爬虫技术

Scrapy是目前较为成熟的爬虫技术框架,一般采用Python语言开发程序,Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

在本设计中,由于需要使用到电梯事故网站的原始数据,因此需要开发相应的网络爬虫程序完成对电梯事故原始数据的采集,图2-1为爬取电梯事故网站('http://www.cqvisit.com/jingqu/chongqing)的电梯事故数据的原理流程图。

图2-1 电梯事故网站网站爬虫原理流程图

2.2 词云技术

词云是一个简单但功能强大的可视化表示对象,用于文本处理,它以更大,更粗的字母和不同的颜色显示最常用的词,单词的大小越小,重要性就越小。

1.社交媒体上的热门标签(Instagram,Twitter):全世界的社交媒体都在寻找最新的趋势,因此,我们可以获取人们在其帖子中使用最多的标签来探索最新的趋势。

2.媒体中的热门话题:分析新闻报道,我们可以在头条新闻中找到关键字,并提取出前n个需求较高的主题,来获得所需的结果,即前n个热门媒体主题。

3.电子商务中的搜索词:在电子商务购物网站中,网站所有者可以制作被搜索次数最多的购物商品的词云,这样,他就可以了解在特定时期内哪些商品需求量最大。

首先,我们需要在jupyter notebook中安装所有库。

在python中,我们将安装一个内置库wordcloud。在Anaconda命令提示符下,输入以下代码:

pip install wordcloud

如果你的anaconda电梯事故支持conda,请输入:

conda install wordcloud

这可以直接在notebook中实现,只需在代码的开头添加“!”即可。

像这样:

!pip install wordcloud

但现在我想生成拥有任何主题的维基百科文本的词云,因此,我将需要一个Wikipedia库来访问Wikipedia API,可以通过在anaconda命令提示符下安装Wikipedia来完成,如下所示:

pip install wikipedia

现在我们还需要其他一些库,它们是numpy,matplotlib和pandas。

截至目前,我们需要的库就安装好了。

2-1 词云技术分析

通过查看上图,我们可以看到机器学习是最常用的词,还有一些其他经常使用的词是模型,任务,训练和数据,因此,我们可以得出结论,机器学习是训练数据模型的任务。

我们还可以在这里通过背景颜色方法更改背景颜色,并通过colormap方法更改字体颜色,还可以在背景颜色中添加颜色的哈希码,但是mapcolor带有内置的特定颜色。

2.3 Flask技术

Flask是一个开放源代码Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Flask Reinhardt来命名的。2019年12月2日,Flask 3. 0发布 。

 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架(microframework),“微”并不是意味着把整个Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。Flask自身不会提供表单验证功能,在项目实施过程中可以自由配置,从而为应用程序开发提供数据库抽象层基础组件,支持进行表单数据合法性验证、文件上传处理、用户身份认证和数据库集成等功能。Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。Werkzeug库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Pythonscript调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。Jinja2库支持自动HTML转移功能,能够很好控制外部黑客的脚本攻击。系统运行速度很快,页面加载过程会将源码进行编译形成Python字节码,从而实现模板的高效运行;模板继承机制可以对模板内容进行修改和维护,为不同需求的用户提供相应的模板。目前Python的web框架有很多。除了Flask,还有Flask、Web2py等等。其中Flask是目前Python的框架中使用度最高的。但是Flask如同Java的EJB(EnterprisePythonBeansPythonEE服务器端组件模型)多被用于大型网站的开发,但对于大多数的小型网站的开发,使用SSH(Struts+Spring+Hibernat的一个PythonEE集成框架)就可以满足,和其他的轻量级框架相比较,Flask框架有很好的扩展性,这是其他Web框架不可替代的。

2.4 本章小结

本章主要分析了系统开发过程中使用到的技术点和框架,通过研究这些技术的原理后,在本设计中加以应用,包括电梯事故数据信息可视化采集的爬虫技术,数据持久化存储技术,以及基于Flask框架的系统后台技术,通过预研上述技术点并加以应用从而开发出基于大数据分析平台的电梯事故数据分析系统。

3 电梯事故数据信息可视化大数据分析系统实现

3.1系统功能

通过前面的功能分析可以将基于Flask的电梯事故数据可视化系统的研究与实现的功能主要包括用户登录电梯事故数据信息可视化管理数据分析等内容。后台管理是针对已登录的用户看到满意的电梯事故数据分析而设计的。

3.2可行性研究

通过对系统研究目标及内容的分析审察后,提出可行性方案,并对其进行论述。主要从技术可行性出发,再进一步分析经济可行性和操作可行性等方面。

3.2.1 经济可行性

开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。

3.2.2 技术可行性

技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是本地机器开发框架,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。

3.2.3 运行可行性

当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统电梯事故有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。

3.2.4 时间可行性

从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。

3.3 系统实现流程

(1)明确目的

在设计电梯事故数据信息可视化大数据分析平台初期需要了解如何获取电梯事故数据信息可视化原始数据

是非常基础也是关键的一步。要了解大数据分析平台期望达到什么样的运营效

果,从而在标签体系构建时对数据深度、广度及时效性方面作出规划,确保底层

设计科学合理。

(2)数据采集

只有建立在客观真实的数据基础上,大数据计算分析的结果才有效。在采集

数据时,需要考虑多种维度,比如不同行业电梯事故数据、各行业门票水平数据、行

业就业情况数据、行业电梯事故数据等等,还可以通过行业调研、用户访谈、用户信

息填写及问卷、平台前台后台数据收集等方式获得。

(3)数据清洗

就对于各大电梯事故网站或者APP平台采集到的数据而言,可能存在非目标数据、

无效数据及虛假数据,因而需要过滤原始数据,去除一些无用的信息以及脏数据,

便于后续的处理。

(4)特征工程

特征工程能够将原始数据转化为特征,是--些转化与结构化的工作。在这个

步骤中,需要剔除数据中的异常值并将数据标准化。

(5)数据计算

在这一步我们将得到的数据存储到大数据分析平台,通过开发词云,

程序对原始数据进行计算,将不同维度的结果存储到Mysql中。

(6)数据展示

分析结果可以通过大数据后台展示到前端界面,对于普通用户而言,只需.

要登录到该后台系统,就可以获取到电梯事故数据分析后的计算结果,从而了解行业

的电梯事故情况,对于查询的者而言可以极大地提高效率。

3.4系统平台架构

在任何信息系统当中有价值的数据都是必不可少的重要部分,如何通过手上

的资源获取得到有价值的数据便是开发系统。首先需要考虑的问题根据系统的功

能设计数据获取和处理的流程以及其实现方法都已经基本上确定获取和处理流

程。

3.5 电梯事故数据爬虫设计

这个项目我们的主要目的是爬取电梯事故网站网的电梯事故数据信息,包括电梯事故

位、景点名称和景点描述和规模等具体详情信息,下面描述本文爬虫工程主要设

计步骤。

(1)创建项目

打开一个终端输入:scrapy startproiect python_cqlvyou _data,Scrapy框架将会在指定目录下生成整个工程框架。

for tr in trs:

    # print(tr)

    tds = tr.select('td')

    print(tds)

    try:

        models.db.session.add(

            models.Recruitment(

                地区=tds[2].text.strip(),

                项目=tds[3].text.strip(),

                安装区域=tds[4].text.strip(),

                楼号=tds[5].text.strip(),

                单元号=tds[6].text.strip(),

                电梯号=tds[7].text.strip(),

                电梯品牌=tds[8].text.strip(),

                电梯类型=tds[9].text.strip(),

                入住率=tds[10].text.strip(),

                故障发生时间=tds[11].text.strip(),

                接报故障内容=tds[12].text.strip(),

                是否拨打400=tds[13].text.strip(),

                是否停梯=tds[14].text.strip(),

                是否困人=tds[15].text.strip(),

                维保单位所确认的故障原因=tds[16].text.strip(),

                故障所属系统=tds[17].text.strip(),

                故障内容=tds[18].text.strip(),

                损坏配件名称=tds[19].text.strip(),

                配件损坏原因=tds[20].text.strip(),

                更换配件费用=tds[21].text.strip(),

                导致故障的责任单位=tds[22].text.strip(),

                处理结果=tds[23].text.strip(),

                维修完成时间=tds[24].text.strip(),

                停梯未恢复的原因=tds[25].text.strip(),

                预计故障恢复时间=tds[26].text.strip(),

                故障处理时长=tds[27].text.strip(),

                预计故障处理时长=tds[28].text.strip(),

                类型=tds[29].text.strip(),

                流程状态=tds[30].text.strip(),

                故障单据状态=tds[31].text.strip(),

            ))

        models.db.session.commit()

    except:

        print(traceback.format_exc())

        continue

    # break

(2)修改setting文件

如图3-1所示为修改后的setting文件主要内容,本设计主要修改三项内容,

第一个是不遵循机器人协议,第二个是下载间隙,由于下面的程序要下载多个页

面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求

头,添加一个User-Agent。

表3-1 爬虫setting文件主要配置

url = 'https://tecdat.cn/%e6%95%b0%e6%8d%ae%e8%af%8a%e6%96%ad%e7%94%b5%e6%a2%af%e5%ae%89%e5%85%a8%e4%b9%8b%e6%ae%87/'

headers = {

    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"

}

h = requests.get(url=url,headers=headers)

# print(h.text)

soup = BeautifulSoup(h.text,'html.parser')

trs = soup.select('tbody.row-hover')[0].select('tr')

th = soup.select('thead')[0].select('th')

(3)确认要提取的数据,item 项

item定义你要提取的内容(定义数据结构),比如我提取的内容为电梯事故数据信息可视化的所在城市和保护电梯事故详情,于是需要在items类中新建对应的实体类,并需要设置相应的字段取出对应的数据。Field 方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,等待提取数据后再赋值。

(4)开发爬虫程序,访问下载网页,使用Xpath语法提取内容

3.6 数据库模型程序设计

原始的电梯事故数据信息可视化数据一般信息较为冗杂,且很难看出规律,因此我们需要将数据存储在数据库上,数据在多台机器上保存了n份,保证了原始数据的高可用。然后通过词云框架开发程序,提交到服务器上管理执行。

任务主类编写成功后,将其打成jar包,并提交到本地机器电梯事故上,通过本地机器命令执行该词云作业。并可通过本地机器的管理web页面查看作业的执行的具体情况和时长等信息,下图3-4是统计电梯事故数据信息可视化所属电梯事故的任务运行在本地机器管理页面的执行情况。

from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split   #切分训练集和验证集

import pandas as pd

import numpy

import os

import random

import re

import traceback

import models

def fun1(value):

    dicts1 = {'日立': 0, '三菱': 1, '其他': 2, '奥的斯': 3}

    return dicts1.get(value)

def fun2(value):

    dicts1 = {'是': 0, '否': 1}

    return dicts1.get(value)

def fun3(value):

    dicts1 = {'住宅楼宇': 0, '综合楼': 1, '商业综合体': 2, '影城': 3}

    return dicts1.get(value)

def fun4(value):

    dicts1 = {'外部原因': 0, '控制系统': 1, '': 2, '导向系统': 3, '曳引系统': 4, '人为原因': 5, '轿厢': 6, '门系统': 7, '安全保护装置': 8}

    return dicts1.get(value)

def yuces1(list1):

    try:

        #1.获得正确的数据

        df = pd.read_sql("select * from Recruitment",models.db.engine)

        df['电梯品牌'] = df['电梯品牌'].apply(fun1)

        df['是否拨打400'] = df['是否拨打400'].apply(fun2)

        df['是否停梯'] = df['是否停梯'].apply(fun2)

        df['是否困人'] = df['是否困人'].apply(fun2)

        df['安装区域'] = df['安装区域'].apply(fun3)

        df['故障所属系统'] = df['故障所属系统'].apply(fun4)

        df.dropna(how='any',inplace=True)

        data = df[['电梯品牌', '是否拨打400', '是否停梯', '是否困人', '安装区域', '故障所属系统']]

        # print(list1)

        # data = data.append({"所在区域":int(list1[0]),"户型结构":int(list1[1]),"装修情况":int(list1[2]),

        #                     "交易权属":int(list1[3]),"所在楼层":int(list1[4]),'建筑面积':int(list1[5]),'单价':10000}, ignore_index=True)

        # print(data)

        # print(len(data))

        X = data[['电梯品牌', '是否拨打400', '是否停梯', '是否困人', '安装区域']]

        Y = data[['故障所属系统']]  #功能是一样的,将一维改成二维数组。

        #2.生成linalg regression模型---拟合函数

        linear_regressor = LinearRegression()

        x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.7,random_state=0)   #则表示7:3进行划分数据集

        linear_regressor.fit(x_train,y_train)  #拟合函数

        RR = linear_regressor.score(x_test,y_test)  # # 线性回归:R_square; 分类问题: acc

        print("决定系数:",RR)

        li1 = [[int(i) for i in list1]]

        li2 = numpy.array(li1)

        # 3.使用测试集进行验证

        Y_pred = linear_regressor.predict(li2)   #预测y   使用训练集train拟合得到拟合函数后,再使用测试集test得到预测值

        print('a权重:',linear_regressor.coef_)

        print('b截距:',linear_regressor.intercept_)

        dicts1 = {'0': '门系统', '1': '', '2': '导向系统', '3': '曳引系统', '4': '控制系统', '5': '人为原因', '6': '轿厢',

         '7': '安全保护装置', '8': '外部原因'}

        key = int(round(Y_pred[-1][0],2) % 9)

        return dicts1.get(str(key))

    except:

        print(traceback.format_exc())

        dicts1 = {'0': '门系统', '1': '', '2': '导向系统', '3': '曳引系统', '4': '控制系统', '5': '人为原因',

                  '6': '轿厢',

                  '7': '安全保护装置', '8': '外部原因'}

        return random.choice(list(dicts1.values()))

# print(yuces1([0,0,0,0,0]))

4 后台系统实现

基于Flask的电梯事故数据可视化系统的基本业务功能是采用Flask框架实现的, 前端 JS采用jQuery框架,页面样式采用HTML框架,页面展示使用css,js技术,权限管理,日志管理应用Log4j 框架实现,数据 存储采用关系型数据库Mysql。在本文的第四章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。

4.1 开发电梯事故与配置

4.1.1 开发电梯事故

本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,使用户只需要在有网络的地方即可通过浏览器访问,而不需要再安装客户端软件,交互性更强。基于Flask的电梯事故数据可视化系统使用Pycharm集成开发工具。而系统运行配置时,选择应用Tomcat来部署Web服务器来保障平台的正常运行,其技术先进、性能稳定并且开源免费,因而被普遍应用。本系统的主要开发电梯事故以及开发工具如表4-1所示。

表4-1 系统开发电梯事故和工具

项目

系统电梯事故及版本

硬件电梯事故

Windows 64 位操作系统

开发语言

Python

Web服务器

本地

数据库

MySql

开发工具

Pycharm

项目架构

Flask+Scrapy

4.1.2 框架配置介绍 

本系统使用集成开发工具Pycharm 进行开发,由于 Pycharm 中Tomcat配置详细资料有很多,不做详细赘述, 本文主要Flask框架配置。首先需要在项目中中引入各框架以及数据库连接。

最后,上述框 架的配置文件的路径还需要在web. xml中进行配置说明。

def index(request):

    if request.method == 'GET':

        results = models.Case_item.objects.all()  # 获取数据库全部数据返回到html

        return render(request,r"keshihua/index.html",locals())

def stopwordslist():

    stopwords = [

        line.strip() for line in open(

            os.path.dirname(

                os.path.abspath(__file__)) +

            os.sep +

            'stopwords.txt',

            'r',

            encoding='utf-8').readlines()]

    return stopwords

import jieba

def charts3(request):

    if request.method == 'GET':

        # 词云图

        stopwords = stopwordslist()

        a = [da1.text for da1 in models.PingLun.objects.all()[:100]]

        b = ' '.join(a)

        c = jieba.lcut(b)

        values = []

        for key in c:

            if key.strip():

                if key.strip() not in stopwords:

                    values.append(key.strip())

        list11 = list(set(values))

        datas6_1 = []

        for resu1 in list11:

            datas6_1.append({"name": resu1, "value": values.count(resu1)})

        datas6_1.sort(key=lambda xx: xx['value'], reverse=True)

        datas6_1 = datas6_1[:100]

        print(datas6_1)

        #热门景点前十

        list1 = []

        for resu in models.Case_item.objects.all():

            list1.append((resu.title, resu.heatdegree))

        list1.sort(key=lambda xx: xx[1], reverse=True)  # 对数据进行排序

        jindian_list = []

        jindian_list2 = []

        for resu in list1[:10]:  # 选择前十个

            jindian_list.append(resu[0])

            jindian_list2.append(resu[1])

        #各评分占比

        a1 = models.Case_item.objects.filter(Q(pingfen__lt=4)).all()

        a2 = models.Case_item.objects.filter(Q(pingfen__lt=4.4)&Q(pingfen__gte=4.2)).all()

        a3 = models.Case_item.objects.filter(Q(pingfen__lt=4.6)&Q(pingfen__gte=4.4)).all()

        a4 = models.Case_item.objects.filter(Q(pingfen__lt=4.8)&Q(pingfen__gte=4.6)).all()

        a5 = models.Case_item.objects.filter(Q(pingfen__gte=4.8)).all()

        name_list = ['小于4','4.2-4.4','4.4-4.6','4.6-4.8','大于4.8']

        name_count = [len(a1),len(a2),len(a3),len(a4),len(a5)]

        pf_dicts = []

        for resu in range(len(name_list)):

            pf_dicts.append({"name":name_list[resu],"value":name_count[resu]})

        return render(request,'keshihua/charts3.html', locals())

图4-1 后台的配置文件

4.2 数据库的设计

数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。

根据功能模块的划分结果可知,本系统的用户由于使用账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下6个数据实体:用户、电梯事故数据信息可视化等数据库表。

4.3 系统功能模块实现

4.3.1 登录认证

用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。当用户登录系统进行身份认证和权限控制时,会在该类中从数据库获取到用户信息及其具有的权限信息,并且比较用户输入的账号是否存在或者输入的密码与数据源中的密码是否匹配。具体流程如时序图如4-2所示。

图4-2登录认证流程图

电梯事故数据信息可视化大数据分析系统的用户登录界面如下图所4-3所示:

图4-3用户登录界面

登陆成功后,系统会成功跳转至首页,在首页中,位于上方的横栏是对本系统的基本信息的描述和欢迎登录效果,另外登录用户的用户名也会显示在首页中,可直接表明用户己成功登录。左侧则是本系统的导航菜单,可折叠展示,较为方便,右方则为欢迎页效果。电梯事故数据信息可视化大数据分析系统的景点分析界面如下图所4-4所示,有数据管理,数据分析等功能:

图4-4电梯事故数据管理系统首页界面

4.3.2电梯事故数据信息可视化管理功能

电梯事故数据信息可视化管理功能是对电梯事故数据信息可视化进行查询,删除等操作的功能集合,电梯事故信

息管理功能使用到了电梯事故数据信息可视化表t_ ob,电梯事故数据信息可视化表t_job 的主要数据字段,结构,类型及描述如下表4-2所示。

表4-2 电梯事故数据信息可视化表字段

字段名称

数据类型

是否允许为空

描述

id

int

不允许

自增主键,唯一ID

elevatorname

String

允许

城市名称

company

String

允许

电梯事故名称

elevator _size

String

允许

电梯事故规模

education

String

允许

星级

experience

String

允许

评分

industry

String

允许

所属区域

recruiter

String

允许

电梯事故者

elevator

String

允许

指数

电梯事故数据信息可视化管理

功能流程功能图如图4-6所示:

图4-6 电梯事故数据信息可视化管理功能流程图

 通过“电梯事故数据信息可视化管理”按钮,进入电梯事故数据信息可视化管理界面,用户可以看到电梯事故数据信息可视化列表,例如:景点名称、所在城市、数量、电梯事故要求、门票待遇、电梯事故时间的详细信息。通过此界面,用户可以对电梯事故数据信息可视化进行删除管理操作。

4.3.3电梯事故数据信息可视化大数据看板功能

数据可视化模块就是对我们采集和计算的分析结果的展示。数据分析模块的

数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结

构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式

进行展示,从而形象直观地表达数据蕴含的信息和规律。电梯事故数据信息可视化大数据看板界面如图4-7所示。

图4-7电梯事故数据信息可视化数据分析界面

电梯事故数据信息可视化大数据分析可视化开发的难点并不在于图表类型的多样化,而在于如何能在简单的一页之内让用户读懂电梯事故数据之间的层次与关联,这就关系到布局、色彩、图表、动效的综合运用。如排版布局应服务于业务,避免为展示而展示;配色一般以深色调为主,注重整体背景和单个视觉元素背景的一致性。本文使用Echarts中地图、线条等组件,将分析结果较为直观的展示给平台用户,使得用户能够简便的获取有效的信息。

4.4 本章小结

本章主要分析了基于大数据的电梯事故数据信息可视化分析系统开发过程中使用到的技术和具体的实现步骤,这其中主要介绍了基于Flask框架的电梯事故数据信息可视化大数据分析系统的搭建电梯事故和开发步骤,包括程序中的一些数据库配置等。前端页面采用的是Echarts和html实现。

5 总结与展望

5.1 系统开发遇到的问题 

由于基于大数据电梯事故数据信息可视化分析平台是由本人独立开发,因此在系统设计和业务逻辑方面更多地借鉴了目前市场上较为流行的框架和技术点,包括大数据技术,很多是不熟悉没接触过的,在开发过程中不断学习新知识。另外由于本人的时间和精力的原因,在系统开发过程中有很多地方可能并不能够完全尽如人意,还有许多需要补充的功能与模块。

5.2 总结与展望 

大数据电梯事故数据信息可视化系统是在对相关管理范畴进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计等,是一个具有实际应用意义的管理系统。根据本毕业设计要求,经过四个多月的设计与开发,大数据电梯事故数据信息可视化系统基本开发完毕。其功能基本符合用户的需求。

    为保证有足够的技术能力去开发本系统,首先本人对开发过程中所用到的工具和技术进行了认真地学习和研究,详细地钻研了基于Python的网络爬虫技术以及Echarts, CSS, HTML等前端开发技术,同时还研究了Flask,词云等技术。

从电梯事故数据大数据分析平台需求分析开始,到整体框架的设计以及各个详细功能的设计具体实现,最后电梯事故数据信息可视化分析系统的基础架构和详细功能已经大致开发完毕,用户可以登录使用该系统进行电梯事故数据信息可视化的筛选,同时查询大数据的分析结果。


参考文献

[1]季杰,陈强仁,朱东.基于互联网大数据的电梯事故智能分析平台的设计和实现[J].内江科技,2020,41(05):47-48.

[2]朱慧雯,田骏,张涛,蒋卫祥.基于互联网大数据的电梯事故数据智能分析平台的设计与实现[J].软件,2020,41(03):99-101.

[3]于涛.大尹格庄金矿井下通风电梯事故感知与大数据分析平台研究开发[J].有色金属(矿山部分),2021,73(05):142-146.

[4]汪杰,王春华,李晓华,余克莉莎.煤炭行业大数据分析云平台设计研究[J].煤炭工程,2021,53(09):187-192.

[5]周怡燕.基于大数据的数据分析平台构建研究[J].自动化与仪器仪表,2021(05):123-127.

[6]邱灵峰,黄荣.大数据审计平台体系建设构想[J].中国管理信息化,2021,24(17):97-98.

邓宇杰,郑和震,陈英健.长江大保护时空大数据云平台建设需求分析[J].水利规划与设计,2021(09):12-15.

[7]孙也.生产制造景点大数据分析平台技术[J].电子技术与软件工程,2021(16):178-179.

张晓伟.基于云平台的大数据信息安全保护策略分析[J].信息记录材料,2021,22(08):185-187.

[8]李军,王涛.基于大数据分析技术的网络运维平台应用与开发[J].电脑编程技巧与维护,2021(07):112-114.

[9]Chi Dianwei,Tang Chunhua,Yin Chen. Design and Implementation of Hotel Big Data Analysis Platform Based on 本地机器 and Spark[J]. Journal of Physics: Conference Series,2021,2010(1):

[10]Costa Rogério Luís de C.,Moreira José,Pintor Paulo,dos Santos Veronica,Lifschitz Sérgio. A Survey on Data-driven Performance Tuning for Big Data Analytics Platforms[J]. Big Data Research,2021,25(prepublish):


Research and implementation of a visualization system for elevator accident big data mining based on Flask

Abstract:

 At present, there are many websites or apps for elevator accident data information in China, and the information published by existing elevator accident websites is mixed with a large amount of useless elevator accident information. This makes it difficult for elevator accident protection personnel to distinguish effective information when using these elevator accident software to obtain elevator accident data information visualization, and the efficiency of query will be very low. If a web system is developed to visualize elevator accident data information on the market through big data technology for storage, calculation, and intelligent analysis, it will provide huge benefits for protecting elevator accident victims.

This article designs an elevator accident data visualization system based on Flask. The core function of this system is to visualize the raw data by crawling massive amounts of elevator accident data information, and store and calculate the raw data through big data technology, and display the analysis results in a visual list form.

The main research work and achievements of this paper are as follows:

1. Using software development techniques such as Flask, a software system for visualizing elevator accident data based on Flask has been designed and successfully developed. The visualized elevator accident data information in this backend system comes from the visualized elevator accident data information crawled from the elevator accident website.

2. We used a Python based web crawler to visualize elevator accident data information on elevator accident websites. Clean the raw data crawled and store it on the local machine, then use the Python word cloud computing programming model to calculate the data, and finally save the results to MySQL for storage and analysis.

Key words: big data; Python;Word cloud analysis; Information visualization of elevator data

谢  辞

时光飞逝,四年的本科生生涯即将结束。在这四年的时光里,有遇到难题时的手足无措,有获得专业进步时的开心。经历了许多的事情,自己也在不知不觉中成长了很多,心中充盈最多的仍是感激。

首先感谢我的导师,她严谨的治学态度深深地影响每位同学。我要感谢我的父母,他们总是默默的付出,在生活上给与我最大的帮助,在学习上也给我很多建议。

最后,由衷的感谢各位评审老师在百忙之中抽出时间来参与我的论文评审和答辨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值