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

发布时间:2024年01月07日

🍅大家好,今天给大家分享一个Python项目,感兴趣的可以先收藏起来,点赞、关注不迷路!🍅

大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业?。

1、项目介绍

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

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

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

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

2、项目界面

(1)旅游大数据大屏

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

(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)



源码获取:

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

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

文章来源:https://blog.csdn.net/vx_biyesheji0002/article/details/135434184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。