当前位置:   article > 正文

python旅游数据分析可视化系统+可视化大屏 python+爬虫 计算机毕业设计(建议收藏)_python旅游数据可视化

python旅游数据可视化

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

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

1、项目介绍

Python语言、MySQL数据库、Django框架
selenium爬虫框架、携程网旅游数据、HTML

2、项目界面

(1)旅游数据大屏

在这里插入图片描述

(2)旅游分析系统首页

在这里插入图片描述

(3)旅游数据词云分析

在这里插入图片描述

(4)评论最多景区分析

在这里插入图片描述

(5)评分最高Top15

在这里插入图片描述

(6)景区级别扇形图

在这里插入图片描述

(7)后台数据管理

在这里插入图片描述

(8)数据采集界面

在这里插入图片描述

3、项目说明

Django携程旅游数据采集分析可视化系统是一个基于Django框架开发的旅游数据采集、分析和可视化的系统。该系统旨在帮助用户从携程网站上获取旅游相关的数据,并对这些数据进行分析和可视化展示。
该系统的主要功能包括数据采集、数据存储、数据分析和数据可视化。首先,系统可以通过爬虫技术从携程网站上抓取旅游相关的数据,包括酒店信息、航班信息、景点信息等。然后,系统将这些数据存储在数据库中,以便后续的分析和展示。
系统还提供了强大的数据分析功能,用户可以对采集到的数据进行各种统计和分析,例如热门景点排行、酒店价格趋势、航班延误情况等。用户可以根据自己的需求选择不同的分析方法和指标,以便更好地了解旅游市场的情况。
最后,系统通过可视化的方式将分析结果展示给用户。用户可以通过图表、地图等形式直观地了解数据的情况,从而更好地做出决策。同时,系统还支持用户自定义报表和图表,以满足个性化的需求。
总之,Django携程旅游数据采集分析可视化系统是一个功能强大、操作简便的系统,可以帮助用户获取旅游数据、进行数据分析,并通过可视化展示帮助用户做出更明智的决策,同时避免可能在中国是敏感的内容。

4、核心代码

from django.shortcuts import render, redirect
from lvyou import models
from django.http import JsonResponse, HttpResponse
from django.db.models import Q

def login(request):
    """登录函数"""
    if request.method == "POST":
        user = request.POST.get('user')
        pass_word = request.POST.get('password')
        print('user------>', user)
        users_list = list(models.UserList.objects.all().values("user_id"))
        users_id = [x['user_id'] for x in users_list]
        print(users_id)
        # print(students_num)
        ret = models.UserList.objects.filter(user_id=user, pass_word=pass_word)
        if user not in users_id:
            return JsonResponse({'code': 1, 'msg': '该账号不存在!'})
        elif ret:
            # 有此用户 -->> 跳转到首页
            # 登录成功后,将用户名和昵称保存到session 中,
            request.session['user_id'] = user
            user_obj = ret.last()
            user_name = user_obj.user_name
            request.session['user_name'] = user_name
            return JsonResponse({'code': 0, 'msg': '登录成功!'})
        else:
            return JsonResponse({'code': 1, 'msg': '密码错误!'})
    else:
        return render(request, "login.html")


def register(request):
    """注册函数"""
    if request.method == "POST":
        user = request.POST.get('user')
        pass_word = request.POST.get('password')
        user_name = request.POST.get('user_name')
        users_list = list(models.UserList.objects.all().values("user_id"))
        users_id = [x['user_id'] for x in users_list]
        if user in users_id:
            return JsonResponse({'code': 1, 'msg': '该账号已存在!'})
        else:
            models.UserList.objects.create(user_id=user, user_name=user_name, pass_word=pass_word)
            request.session['user_id'] = user  # 设置缓存
            request.session['user_name'] = user_name
            return JsonResponse({'code': 0, 'msg': '注册成功!'})
    else:
        return render(request, "register.html")


# 退出(登出)
def logout(request):
    # 1. 将session中的用户名、昵称删除
    request.session.flush()
    # 2. 重定向到 登录界面
    return redirect('login')


def index(request):
    return render(request, "index.html", locals())


def get_screen(request):
 
    city_list = ['北京市', '天津市', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省', '黑龙江省', '上海市', '江苏省',
     '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省', '广东省', '广西壮族自治区',
     '海南省', '重庆市', '四川省', '贵州省', '云南省', '西藏自治区', '陕西省', '甘肃省', '青海省', '宁夏回族自治区',
     '新疆维吾尔自治区', '台湾省', '香港特别行政区', '澳门特别行政区', '']


    # 等级占比图
    level_list = list(set([x[0] for x in list(models.Data.objects.all().values_list('level'))]))
    l_1_data = []
    for level in level_list:
        l_1_data.append({'name': level, "value": models.Data.objects.filter(level=level).count()})
    # print(l_1_data)

    # 散点图
    hot_score = list(models.Data.objects.all().values_list('hot', 'score'))
    hot_score = [[float(x[0]), float(x[1])] for x in hot_score if x[1] != '0']
    hot_score = sorted(hot_score, key=lambda x: x[0])
    # print(hot_score)

    # 处理中间柱形图数据
    c_1_data = list(models.Data.objects.all().values_list('name', 'hot').distinct().order_by('-hot'))[0:10]
    # print(c_1_data)
    c_1_x = [x[0] for x in c_1_data]
    c_1_y = [float(x[1]) for x in c_1_data]

    #  处理地图数据
    map_data = []
    for x in city_list:
        map_data.append({'name': x, 'value': models.Data.objects.filter(address__icontains=x[0:2]).count()})
    print("map_data------>", map_data)

    # 评分排行
    comment_list = list(models.Data.objects.all().values_list('name', 'comment_count').distinct())
    # print(comment_list)
    comment_list = [[x[0], int(x[1].replace('条点评', ''))] for x in comment_list]
    comment_list = sorted(comment_list, key=lambda x: x[1], reverse=True)[0:10]
    r_1_x = [x[0] for x in comment_list]
    r_1_y = [float(x[1]) for x in comment_list]

    # 词云图
    r_2_data = list(models.Data.objects.all().values_list('name', 'comment_count').distinct())
    # print(comment_list)
    r_2_data = [[x[0], int(x[1].replace('条点评', ''))] for x in r_2_data]
    r_2_data = [{"name": x[0], "value": x[1]} for x in r_2_data]

    return render(request, "screen.html", locals())


def welcome(request):
    """此函数用于处理控制台页面"""
    all_data = models.Data.objects.all().count()
    data_5a = models.Data.objects.filter(Q(level__icontains='5A') | Q(name__icontains='5A')).count()
    data_4a = models.Data.objects.filter(Q(level__icontains='4A') | Q(name__icontains='4A')).count()
    hot_data = [[x[0], float(x[1])] for x in list(models.Data.objects.all().values_list('name', 'hot').distinct())]
    hot_data = sorted(hot_data, key=lambda x: x[1], reverse=True)[0]
    hot_data_name = hot_data[0]
    hot_data_hot = hot_data[1]

 
    city_list = ['北京市', '天津市', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省', '黑龙江省', '上海市',
                 '江苏省',
                 '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省', '广东省',
                 '广西壮族自治区',
                 '海南省', '重庆市', '四川省', '贵州省', '云南省', '西藏自治区', '陕西省', '甘肃省', '青海省',
                 '宁夏回族自治区',
                 '新疆维吾尔自治区', '台湾省', '香港特别行政区', '澳门特别行政区', '']

    #  处理地图数据
    map_data = []
    for x in city_list:
        map_data.append({'name': x, 'value': models.Data.objects.filter(address__icontains=x[0:2]).count()})
    # print(map_data)

    return render(request, "welcome.html", locals())


def chart_1(request):
    level_list = list(set([x[0] for x in list(models.Data.objects.all().values_list('level'))]))
    l_1_data = []
    all_value = 0
    for level in level_list:
        a = models.Data.objects.filter(level=level).count()
        all_value += a
        l_1_data.append({'name': level, "value": a})

    # print(l_1_data)
    return render(request, "echarts_1.html", locals())


def chart_2(request):
    comment_list = list(models.Data.objects.all().values_list('name', 'comment_count').distinct())
    # print(comment_list)
    comment_list = [[x[0], int(x[1].replace('条点评', ''))] for x in comment_list]
    comment_list = sorted(comment_list, key=lambda x: x[1], reverse=True)[0:5]
    c_1_data = [{'name': x[0], 'value': x[1]} for x in comment_list]
    le_data = [x[0] for x in comment_list]
    return render(request, "echarts_2.html", locals())


def chart_3(request):
    comment_list = list(models.Data.objects.all().values_list('name', 'hot').distinct())
    # print(comment_list)
    comment_list = [[x[0], float(x[1].replace('条点评', ''))] for x in comment_list]
    comment_list = sorted(comment_list, key=lambda x: x[1], reverse=True)[0:5]
    c_1_data = [{'name': x[0], 'value': x[1]} for x in comment_list]
    le_data = [x[0] for x in comment_list]
    return render(request, "echarts_3.html", locals())


def chart_4(request):
    comment_list = list(models.Data.objects.all().values_list('name', 'score').distinct())
    # print(comment_list)
    comment_list = [[x[0], float(x[1].replace('条点评', ''))] for x in comment_list]
    comment_list = sorted(comment_list, key=lambda x: x[1], reverse=True)[0:15]
    c_1_data = [{'name': x[0], 'value': x[1]} for x in comment_list]
    le_data = [x[0] for x in comment_list]
    return render(request, "echarts_4.html", locals())


def chart_5(request):
    # 词云图
    r_2_data = list(models.Data.objects.all().values_list('name', 'comment_count').distinct())
    # print(comment_list)
    r_2_data = [[x[0], int(x[1].replace('条点评', ''))] for x in r_2_data]
    r_2_data = [{"name": x[0], "value": x[1]} for x in r_2_data]
    return render(request, "echarts_5.html", locals())

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192

源码获取:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/408954
推荐阅读
相关标签