python旅游大数据分析可视化大屏 游客分析+商家分析+舆情分析 计算机毕业设计(附源码)Flask框架✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

技术栈:
Python语言 Flask框架 Echarts可视化 旅游数据 HTML

旅游大数据分析可视化大屏(游客+商家+舆情)

旅游大数据分析可视化系统是一个基于Python Flask框架开发的系统,用于分析和可视化旅游领域的大数据。该系统主要包括游客分析、商家分析和舆情分析三个模块。

2、项目界面

(1)旅游大数据大屏

在这里插入图片描述

(3)旅游板块分析大屏----游客分析

在这里插入图片描述

(2)旅游板块分析大屏----商家分析

在这里插入图片描述

(4)旅游板块分析大屏----旅游舆情分析

在这里插入图片描述

(5)功能模块选择

在这里插入图片描述

3、项目说明

旅游大数据分析可视化系统是一个基于Python Flask框架开发的系统,用于分析和可视化旅游领域的大数据。该系统主要包括游客分析、商家分析和舆情分析三个模块。

  1. 游客分析模块:该模块主要对游客的行为进行分析,包括游客的年龄、性别、地域分布等信息。通过对游客数据的分析,可以帮助旅游机构了解自己的客户群体,并根据分析结果制定相应的营销策略。

  2. 商家分析模块:该模块主要对旅游商家的经营情况进行分析,包括商家的销售额、客流量等指标。通过对商家数据的分析,可以帮助商家了解自己的经营情况,并根据分析结果优化自己的经营策略。

  3. 舆情分析模块:该模块主要对旅游领域的舆情进行分析,包括用户在社交媒体上对旅游景点、旅游产品的评价等。通过对舆情数据的分析,可以帮助旅游机构了解用户对自己的评价,并及时采取相应的措施进行改进。

该系统通过将分析结果可视化展示在大屏上,使用户能够直观地了解旅游领域的大数据情况,从而更好地进行决策和规划。同时,系统还提供了数据导出和报表生成等功能,方便用户进行进一步的分析和使用。

4、核心代码


from flask import Flask, render_template
import xlrd
import xlwt
from collections import Counter
# import pandas as pd

app = Flask(__name__)


# @app.route('/')
# def hello_world():
#     return 'Hello World!'
@app.route('/')
def index():
    return render_template("index.html")

@app.route('/test')
def test():
    # workBook1 = xlrd.open_workbook('D:\\ProgramFiles\\docTest\excel\\TeamSettlementDetails.xls')
    workBook1 = xlrd.open_workbook('templates\\xls\\团队结算明细.xls')
    sheet1 = workBook1.sheets()[0]

    aa = Counter(sheet1.col_values(4))
    moduleName = []
    # Counter({'other': 7862, 'catering': 2605, 'ticket': 2486, 'hotel': 1343, 'meeting': 979, 'training': 617, 'guid': 407, 'party': 84})
    moduleName = sorted(set(aa))

    otherTotal = 0
    cateringTotal = 0
    ticketTotal = 0
    hotelTotal = 0
    meetingTotal = 0
    trainingTotal = 0
    guidTotal = 0
    partyTotal = 0

    list = []
    sheet1_nrows = sheet1.nrows  # 获得行数
    for i in range(sheet1_nrows):  # 逐行打印sheet1数据
        if sheet1.row_values(i)[4] == 'catering':
            # print(sheet1.row_values(i)[6])
            cateringTotal += sheet1.row_values(i)[6]
        if sheet1.row_values(i)[4] == 'guid':
            # print(sheet1.row_values(i)[6])
            guidTotal += sheet1.row_values(i)[6]
        if sheet1.row_values(i)[4] == 'ticket':
            # print(sheet1.row_values(i)[6])
            ticketTotal += sheet1.row_values(i)[6]
        if sheet1.row_values(i)[4] == 'hotel':
            # print(sheet1.row_values(i)[6])
            hotelTotal += sheet1.row_values(i)[6]
        if sheet1.row_values(i)[4] == 'meeting':
            # print(sheet1.row_values(i)[6])
            meetingTotal += sheet1.row_values(i)[6]
        if sheet1.row_values(i)[4] == 'other':
            # print(sheet1.row_values(i)[6])
            otherTotal += sheet1.row_values(i)[6]
        if sheet1.row_values(i)[4] == 'party':
            # print(sheet1.row_values(i)[6])
            partyTotal += sheet1.row_values(i)[6]
        if sheet1.row_values(i)[4] == 'training':
            # print(sheet1.row_values(i)[6])
            trainingTotal += sheet1.row_values(i)[6]

    lastNamedict=[]
    bb(lastNamedict)

    # 地图展示
    province=[]
    nums=[]
    map(province,nums)

    return render_template("test.html", moduleName=moduleName, cateringTotal=cateringTotal,
                           guidTotal=guidTotal,
                           ticketTotal=ticketTotal, hotelTotal=hotelTotal, meetingTotal=meetingTotal,
                           otherTotal=otherTotal, partyTotal=partyTotal, trainingTotal=trainingTotal,
                           lastNamedict=lastNamedict,
                           province=province,nums=nums)


@app.route('/a')
def a():
    province = []
    nums = []
    map(province, nums)
    return render_template("a.html",province=province,nums=nums)

@app.route('/b')
def b():
    natu=[]
    num=[]
    naturePerson(natu,num)
    return render_template("b.html",natu=natu,num=num)

@app.route('/test2')
def test2():
    return render_template("test2.html")

@app.route('/test3')
def test3():
    return render_template("test3.html")

@app.route('/test33')
def test33():
    return render_template("test33.html")

@app.route('/test4')
def test4():
    return render_template("test4.html")

@app.route('/d')
def d():
    img_path = '/static/before/images/bg.png'
    img_stream = return_img_stream(img_path)
    return render_template('d.html',
                           img_stream=img_stream)


"""
这是一个展示Flask如何读取服务器本地图片, 并返回图片流给前端显示的例子
"""
def return_img_stream(img_local_path):
    """
    工具函数:
    获取本地图片流
    :param img_local_path:文件单张图片的本地绝对路径
    :return: 图片流
    """
    import base64
    img_stream = ''
    with open(img_local_path, 'r') as img_f:
        img_stream = img_f.read()
        img_stream = base64.b64encode(img_stream)
    return img_stream



# 各个景区的人流量
def naturePerson(natu,num):
    wb = xlrd.open_workbook("templates/xls/团队预定订单旅游板块明细数据.xls")
    ws = wb.sheet_by_index(0)
    # print(ws.row_values(0))  # 每一行作为一个列表
    total_list = []
    for row in range(ws.nrows):
        row_list = ws.row_values(row)
        total_list.append(row_list)
    # print(total_list)

    namedict = {}
    for items in total_list:
        if items[1] == None or items[1] == "TICKETGROUP_NAME":
            continue
        else:
            if items[1] in namedict.keys():
                namedict[items[1]] += items[3]
            else:
                namedict.setdefault(items[1], items[3])

    sortNamedict = sorted(namedict.items(), key=lambda namedict: namedict[1], reverse=True)
    # print(sortNamedict)

    lastNamedict = []
    for i in range(30):
        lastNamedict.append(sortNamedict[i])
    # print(lastNamedict)

    for i in lastNamedict:
        natu.append(i[0])
        num.append(i[1])

# 旅行社区排行榜
def bb(lastNamedict):
   wb = xlrd.open_workbook("templates/xls/aaa.xls")
   ws = wb.sheet_by_index(0)
   # print(ws.row_values(0))  # 每一行作为一个列表
   total_list = []
   for row in range(ws.nrows):
      row_list = ws.row_values(row)
      total_list.append(row_list)

   namedict = {}
   for items in total_list:
      if items[5] == None or items[5] == "AGENT_ACCOUNTNAME":
         continue
      else:
         if items[5] in namedict.keys():
            namedict[items[5]] += items[8]
         else:
            namedict.setdefault(items[5], items[8])

   sortNamedict = sorted(namedict.items(), key=lambda namedict: namedict[1], reverse=True)

   for i in range(30):
      lastNamedict.append(sortNamedict[i])


# 地图展示  中国各省份人流量
def map(province,nums):
    work = xlrd.open_workbook('templates/xls/地图.xls')
    sheet = work.sheets()[0]
    data = sheet.col_values(0)
    tem = Counter(data)
    fidata = sorted(tem.items(), key=lambda tem: tem[1], reverse=True)

    for i in fidata:
        province.append(i[0])
        nums.append(i[1])



if __name__ == '__main__':
    app.run(port=5000)



5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/287428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python

目录 前言 一、静态网页数据 二、网址通讯流程 1.DNS查询 2.建立连接 3.发送HTTP请求 4.服务器处理请求 5.服务器响应 6.渲染页面 7.页面交互 三、URL/POST/GET 1.URL 2.GET 形式 3.POST 形式 四.获取静态网页数据 1.requests库 点关注,防走丢&am…

Linux vi/vim 教程

文章目录 【 1. vi/vim 的三种模式 】1.1 命令模式1.2 输入模式1.3 底线命令模式 【 2. 实例 】【 3. vim 的其他命令 】 所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在。目前我们使用比较多的是 vim 编辑器。vim 从 vi 发展出来&am…

深度确定性策略梯度 DDPG

深度确定性策略梯度 DDPG 深度确定性策略梯度 DDPG模型结构目标函数算法步骤适合场景 深度确定性策略梯度 DDPG A2C、A3C 都是在线策略,在与环境交互时,样本参数更新效率低,所以主要是应用在离散空间,计算量没那么大。 DDPG 专用…

aps审核-模电英文稿

模拟电子线路 Analog circuit 需要熟悉课程名,一句话简单概括课程内容,准备一些重点内容介绍。 This course mainly introduces the properties(n.性质) of semiconductors(半导体) and transistors, and then analyzes and masters amplification circ…

算法专题四:前缀和

前缀和 一.一维前缀和(模板):1.思路一:暴力解法2.思路二:前缀和思路 二. 二维前缀和(模板):1.思路一:构造前缀和数组 三.寻找数组的中心下标:1.思路一:前缀和 四.除自身以外数组的乘积&#xff…

java企业人事信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业人事信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发,数据库为M…

DeepSpeed: 大模型训练框架

背景: 目前,大模型的发展已经非常火热,关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大,动辄上百亿,如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这…

PE解释器之PE文件结构

PE文件是由许许多多的结构体组成的,程序在运行时就会通过这些结构快速定位到PE文件的各种资源,其结构大致如图所示,从上到下依次是Dos头、Nt头、节表、节区和调试信息(可选)。其中Dos头、Nt头和节表在本文中统称为PE文件头(因为SizeOfHeaders…

Nacos设置账号密码

1、控制台设置 # 开启账号密码验证 nacos.core.auth.enabledtrue# 设置账号密码 nacos.core.auth.usernamenacos nacos.core.auth.passwordnacos1232、数据库设置 密码为:nacos,对应加密信息是: $2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2k…

文件分割合并助手

二进制文件合并分割器 时间: 2024.01.03 作者: FlameCyclone 自己写的一个能方便分割合并文件的小工具 使用说明 输出文件名 输出文件名规则前缀文件名开始固定名称序号(10/16进制显示, 宽度以输出最大序号为准)分割范围(16进制显示, 宽度以输出最大范围为准)CRC32校验码…

go语言``反引号用法归纳——多行输出和Tag标签(指定json名称、MySQL名称))

一、多行输出 示例 func main() {str1 : 反引号多行字符串str2 : "双引号" " 多行" " 字符串"//str3 : 单引号" //" 多行" //" 字符串str4 : "双引号\n" " 多行\n" &quo…

xadmin-plus

python之Xadmin-plus是什么? xadmin-plus: xadmin的django3.2版本支持。 Xadmin是一个非常优秀的Django Admin插件,可惜的是已经停止更新。Xadmin-plus对其进行了升级兼容。支持python3.10、Django3.2。 特性 Django Admin直接替换基于Twitter Boots…

Ubuntu22.04安装VTK8.2

1. 安装ccmake 和 VTK 的依赖项: sudo apt-get install cmake-curses-gui sudo apt-get install freeglut3-dev2.下载VTK-8.2.0库 VTK官方网址 自己选择合适的版本进行下载,解压到VTK文件夹下,再新建文件下名为build 3. 配置VTK 进入buil…

BIM 助力世界上最长的双层桥

Bentley 应用程序助力节省时间和成本,提前三年实现了投资回报 连通复杂的高速公路 PT. Wijaya Karya (WIKA) 是一家印度尼西亚的公司,为土建施工行业提供施工、机械和电气服务,该公司承包了印度尼西亚雅加达北部海港路二期工程的设计和建造&…

算法:岛屿的周长

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、问题描述 二、规律总结 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、问题描述 给定一个包含 0 和 1 的二维网格地图&#x…

Elasticsearch:如何使用 Elasticsearch 进行排序

虽然你在唱这首歌时可能会想象圣诞老人,但欧洲民间传说,尤其是阿尔卑斯地区的民间传说,有两个传奇人物圣尼古拉斯和坎普斯。 象征着慷慨和善良的圣尼古拉斯,在 12 月 6 日 为乖巧的孩子们带来礼物和欢乐! 相比之下&…

【算法挨揍日记】day45——474. 一和零、879. 盈利计划

474. 一和零 474. 一和零 题目描述: 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 解…

鸿蒙开发入门

一、开发准备 1.1 开发环境搭建 鸿蒙开发文档华为账号注册DevEco Studio 下载 二、快速入门 三、ArkUI 3.1 Image 3.2 Text 3.3 TextInput 3.4 Button 3.5 循环控制 3.6 List 3.7 自定义 3.8 状态管理 3.8.1 State 装饰器 3.8.2 Prop、Link 装饰器 // 父组件 State str: …

【每日论文阅读】生成模型篇

联邦多视图合成用于元宇宙 标题: Federated Multi-View Synthesizing for Metaverse 作者: Yiyu Guo; Zhijin Qin; Xiaoming Tao; Geoffrey Ye Li 摘要: 元宇宙有望提供沉浸式娱乐、教育和商务应用。然而,虚拟现实(VR)在无线网络上的传输是…

【Java】SpringBoot整合xxl-job学习使用详解

文章目录 介绍作用如何使用下载项目中央仓库地址环境调度中心初始化“调度数据库”配置部署“调度中心”部署项目调度中心集群(可选)其他:Docker 镜像方式搭建调度中心配置部署“执行器项目” 执行器maven依赖执行器配置执行器组件配置执行器…