计算机毕设 大数据工作岗位数据分析与可视化 - python flask
文章目录
- 0 前言
- 1 课题背景
- 2 实现效果
- 3 项目实现
- 3.1 概括
- 3.2 Flask实现
- 3.3 HTML页面交互及Jinja2
- 4 **完整代码**
- 5 最后
0 前言
🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是
🚩 基于大数据的工作岗位数据分析与可视化
🥇学长这里给一个题目综合评分(每项满分5分)
- 难度系数:3分
- 工作量:3分
- 创新点:3分
1 课题背景
基于python+flask的python岗大数据可视化web系统,可以进行数据交互可视化,主题为python岗位相关大数据分析。
2 实现效果
📗Web_App动作描述
用户点击导航栏四个选项,跳转到想了解的页面
- 平均月薪
- 岗位数量
- 工作经验
- 最低学历

用户通过选择器点击想要了解的城市,可显示该城市的相关岗位数量

鼠标下拉可看文字结论分析

3 项目实现
3.1 概括
- 主运行文件为 app.py 文件。
- static 文件为网页样式。
- templates 里的map.html系列文件为生成可视化图表的离线文件,作为引用文件。
- data1.csv 等csv文件为引用的数据文档。csv档 为数据源。

- 在flask环境下导入
pandas、pyecharts实现数据图表交互展示。 - 写出四个@route,分别呈现为各省python相关岗位平均月薪、各省python相关岗位数量、工作经验与最低要求学历的职位分布数量、最低学历-工作经验与平 均月薪的相关图表展示。
df = pd.read_csv('xxx.csv',encoding = 'utf8', index_col="xxx")英文采用单字节编码,部分中文采用双字节编码。- 利用
.renter/with open导入和打开文件。 - 调用
pyecharts模块作图传输到HTML页面。 - 使用
list字典循环。 - 使用列表推导式进行取值。
3.2 Flask实现
数据循环

数据嵌套

推导式

条件判断

数据交互
3.3 HTML页面交互及Jinja2
Jinja2介绍
jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。
jinja2的优点
jinja2之所以被广泛使用是因为它具有以下优点:
- 相对于Template,jinja2更加灵活,它提供了控制结构,表达式和继承等。
- 相对于Mako,jinja2仅有控制结构,不允许在模板中编写太多的业务逻辑。
- 相对于Django模板,jinja2性能更好。
- Jinja2模板的可读性很棒。
项目代码

4 完整代码
import random
from calendar import c
from tkinter import Gridfrom flask import Flask,render_template,request
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map, EffectScatter, HeatMap, Line,Grid
from pyecharts.faker import Faker
from pyecharts.globals import SymbolType
from pyecharts.charts import Pie,Bardf = pd.read_csv('data1.csv')
app = Flask(__name__)@app.route('/')
def map() -> 'html':a = (Map().add("平均月薪", list(zip(df.省, df.平均月薪)), "china").set_global_opts(title_opts=opts.TitleOpts(title="各省python相关岗位平均月薪"),visualmap_opts=opts.VisualMapOpts(min_=7164.08, max_=17096.07),))a.render("./templates/map.html")with open("./templates/map.html", encoding="utf8", mode="r") as f:map = "".join(f.readlines())the_select_province = {'北京':'4924','上海':'3114','广东':'3164','浙江':'1244','南京':'701','湖北':'412','江苏':'450','福建':'359','四川':'985','辽宁':'227','安徽':'236','湖南':'239','山东':'360','吉林':'88','江西':'60','天津':'355','山西':'417','陕西':'60','重庆':'179','黑龙江':'60','河南':'477','贵州':'60','河北':'60',}return render_template('python_map.html',the_map=map,the_province=the_select_province)element = list(set(most['分类']))@app.route('/effectscatter_symbol')
def effectscattere_symbol() -> 'html':df = pd.read_csv('data2.csv',encoding = 'utf8', index_col="名称")省 = list(df.loc["省"].values)[-24:]数量 = list(df.loc["数量"].values)[-24:]value = [[i, j, random.randint(0, 80)] for i in range(24) for j in range(24)]c = (HeatMap().add_xaxis(省).add_yaxis("数量", 数量, value).set_global_opts(title_opts=opts.TitleOpts(title="各省Python相关岗位数量"),visualmap_opts=opts.VisualMapOpts(),))c.render("./templates/effectscatter_symbol.html")with open("./templates/effectscatter_symbol.html", encoding="utf8", mode="r") as f:sym = "".join(f.readlines())return render_template('python_effectscatter_symbol.html',the_sym=sym,)1data_pie1 = data_pie.T.to_html()pie1_list = [num for num in data_pie['分类']]labels = [index for index in data_pie.index]@app.route('/pie_base')
def pie_base() -> 'html':df = pd.read_csv('data3.csv', encoding='utf8')bar = (Bar().add_xaxis(['不限', '3-5年', '1-3年', '5-10年', '无经验', '一年以下', '10年以上']).add_yaxis("职位数量", [6183, 5164, 4842, 1516, 366, 111, 34]).set_global_opts(title_opts=opts.TitleOpts(title="工作经验-职位分布数量")))line = (Line().add_xaxis(['本科', '大专', '不限', '硕士', '博士', '中专']).add_yaxis("职位数量", [9954, 3704, 3205, 1137, 88, 31]).set_global_opts(title_opts=opts.TitleOpts(title="最低要求学历-职位分布数量", pos_top="50%"),legend_opts=opts.LegendOpts(pos_top="50%"),))grid = (Grid().add(bar, grid_opts=opts.GridOpts(pos_bottom="60%", pos_right="0", height="30%")).add(line, grid_opts=opts.GridOpts(pos_top="60%", pos_right="0", height="30%")))bar,line,grid.render("./templates/pie_base.html")with open("./templates/pie_base.html", encoding="utf8", mode="r") as f:pie_base = "".join(f.readlines())return render_template('python_pie_base.html',the_pie_base=pie_base,)the_element3 = request.form['the_element3_selected']print(the_element3)element3_available = element3if the_element3 =='广州':the_level = 广州elif the_element3 =='上海':the_level = 上海elif the_element3 =='北京':the_level = 北京else:the_level = 其它def python_most():title1 = "最低学历"data_pie = pd.DataFrame(pressure2.loc['最低学历与工作经验的关系']['分类'].value_counts())data_pie1 = data_pie.T.to_html()pie1_list = [num for num in data_pie['分类']]labels = [index for index in data_pie.index]@app.route('/Bar/')
def bar_base() -> Bar:df = pd.read_csv('data4.csv', encoding='utf8', index_col="学历")最低学历 = list(df.loc["最低学历"].values)[-6:]无经验 = list(df.loc["无经验"].values)[-6:]一年以下 = list(df.loc["一年以下"].values)[-6:]不限 = list(df.loc["不限"].values)[-24:]一至三年 = list(df.loc["一至三年"].values)[-24:]三至五年 = list(df.loc["三至五年"].values)[-24:]五至十年 = list(df.loc["五至十年"].values)[-24:]十年以上 = list(df.loc["十年以上"].values)[-24:]c = (Line().add_xaxis(最低学历).add_yaxis("无经验", 无经验).add_yaxis("一年以下", 一年以下).add_yaxis("不限", 不限).add_yaxis("一至三年", 一至三年).add_yaxis("三至五年", 三至五年).add_yaxis("五至十年", 五至十年).add_yaxis("十年以上", 十年以上).set_global_opts(title_opts=opts.TitleOpts(title="最低学历-工作经验与平均月薪",subtitle="平均月薪(元)")))c.render("./templates/Bar.html")with open("./templates/Bar.html", encoding="utf8", mode="r") as f:bar_base= "".join(f.readlines())return render_template('python_bar.html',the_bar_base=bar_base,)return render_template('first.html',the_title1 = title1,the_select_element1 = element1_available,the_data_pie1 = data_pie1,the_pyecharts_all = plot_all,the_pyecharts_all1 = plot_all1,the_pyecharts_all3 = plot_all3,
5 最后
相关文章:
计算机毕设 大数据工作岗位数据分析与可视化 - python flask
文章目录 0 前言1 课题背景2 实现效果3 项目实现3.1 概括 3.2 Flask实现3.3 HTML页面交互及Jinja2 4 **完整代码**5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要…...
Maven聚合项目配合Springcloud案例
创建maven项目 导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…...
目标检测网络系列——YOLO V1
文章目录 One Stage DectectionYOLO网络正向预测pipline反向传播过程理解grid和grid对应的B个预测框YOLO网络的限制对比实验与其他的real-time detection的对比VOC 2007数据集的错误分析YOLO和Fast RCNN的集成学习VOC 2012数据集结果YOLO模型的泛化性DEMOOne Stage Dectection …...
任务工单发送失败重试方案设计
需求背景: 该系统为一个工单系统,其中任务工单为该系统中的一个模块;任务工单它是需要周期性调度的一种任务类型;可以按照用户配置的时间周期定时性触发的。由于任务需要发送到对应的工作人员上,所以这里需要先对员工进…...
关于 Vue-iClient-MapboxGL 的使用注意事项
官网:https://iclient.supermap.io/web/apis/vue/zh/api/guide/installation.html 关于图的使用,其余的引入步骤不再赘述,仅说注意事项。 推荐使用的是全局引入,也就是完整引入 因为单独引入我踩了不少坑,比如说 cs…...
Go 语言 map 如何顺序读取?
Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 现象 先看一段代码示例: package mainimport &q…...
flutter StreamSubscription 订阅者 stream
当您使用[Stream.listen]收听[Stream]时 则返回[StreamSubscription]对象 List<StreamSubscription?> subscriptions []; overridevoid initState() {super.initState();//subscriptions列表添加两个StreamSubscription。Stream.listen返回StreamSubscription对象subs…...
安全性算法
目录 一、安全性算法 二、基础术语 三、对称加密与非对称加密 四、数字签名 五、 哈希算法 六、哈希算法碰撞与溢出处理 一、安全性算法 安全性算法的必要性: 安全性算法的必要性是因为在现代数字化社会中,我们经常需要传输、存储和处理敏感的数据…...
解决ASP.NET Core的中间件无法读取Response.Body的问题
概要 本文主要介绍如何在ASP.NET Core的中间件中,读取Response.Body的方法,以便于我们实现更多的定制化开发。本文介绍的方法适用于.Net 3.1 和 .Net 6。 代码和实现 现象解释 首先我们尝试在自定义中间件中直接读取Response.Body,代码如…...
DownloadingImages 下载缓存图片,显示图片文字列表
1. 用到的技术点: 1) Codable : 可编/解码 JSON 数据 2) background threads : 后台线程 3) weak self : 弱引用 4) Combine : 取消器/组合操作 5) Publishers and Subscribers : 发布者与订阅者 6) FileManager : 文件管理器 7) NSCache : 缓存 2. 网址: 2.1 测试接口网址: …...
【应用层协议】HTTPS的加密流程
目录 一、认识HTTPS 二、密文 1、对称加密 2、非对称加密 三、HTTPS加密流程 1、建立连接 2、证书验证 3、密钥协商 4、数据传输 5、关闭连接 总结 在数字化时代,互联网已经成为我们生活和工作中不可或缺的一部分。然而,随着数据的不断增加&a…...
最新AI创作系统/AI绘画系统/ChatGPT系统+H5源码+微信公众号版+支持Prompt应用
一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…...
Z410 2023款无人机,专为零基础开发者打造的入门级开源无人机
为什么开发Z410升级款-Easydrone无人机 新手开发者通常在本科阶段加入人工智能行业,对无人机二次开发往往一知半解,面临着C、Python、ROS和mavlink等一系列入门知识,学习起来非常困难,学习的过程中也面临许多挫折。为了帮助零基础…...
elementui修改message消息提示颜色
/* el弹出框样式 */ .el-message {top: 80px !important;border: 0; }.el-message * {color: var(--white) !important;font-weight: 600; }.el-message--success {background: var(--themeBackground); }.el-message--warning {background: var(--gradientBG); }.el-message--…...
Linux和Hadoop的学习
目录 1. Linux的常用快捷键2. Hadoop集群部署问题汇总 1. Linux的常用快捷键 复制:CtrlshiftC 粘贴:CtrlshiftV TAB:补全命令 编写输入:i 退出编写:esc 保存并退出:shift: 2. Hadoop集群部署问…...
通达信指标预警信号,自动发送给微信好友1.0
1.功能介绍:十一节假日期间写了一个,可将股票指标预警信号,自动发送给微信好友/微信群(即电脑端的消息,通过模拟微信操作可在手机上显示)。本工具按通达信写的,如果大智慧,同花顺也能…...
浅谈CDN内容分发与全局负载均衡
CDN简介 CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,…...
【框架风格】解释器模式
1、描述 解释器框架风格(Interpreter Framework Style)是一种软件架构风格,其核心思想是构建一个解释器(Interpreter)来解释并执行特定领域或问题领域的语言或规则。以下是解释器框架风格的一些特点: 1. 领…...
c++视觉图像线性混合
图像线性混合 使用 cv::addWeighted() 函数对两幅图像进行线性混合。alpha 和 beta 是两幅图像的权重,它们之和应该等于1。gamma 是一个可选的增益,这里设置为0。 你可以通过调整 alpha 的值来改变混合比例。如果 alpha0.5,则两幅图像等权重…...
Doris 2.0.1 DockerFile版 升级实战
1、Doris 2.0.1 DockerFile 的制作 参考 Doris 2.0.1 Dockerfile制作-CSDN博客 2、之前的Doris 集群通过 Docker容器进行的部署,需提前准备好Doris2.0.1的镜像包 参考: 集群升级 - Apache Doris Doris 升级请遵守不要跨两个及以上关键节点版本升级的…...
从好奇号火星着陆看复杂系统工程:天空起重机方案与工程管理启示
1. 项目概述:从“不可能”到“火星新地标”的工程壮举2012年8月6日,当“好奇号”火星车在盖尔陨石坑成功着陆,传回第一张火星地表照片时,整个喷气推进实验室(JPL)控制中心沸腾了。这不仅仅是一次成功的行星…...
全网珍藏网安学习网站大全,一次性整理齐全,错过容易被删速收藏!
我们学习网络安全,很多学习路线都有提到多逛论坛,阅读他人的技术分析帖,学习其挖洞思路和技巧。但是往往对于初学者来说,不知道去哪里寻找技术分析帖,也不知道网络安全有哪些相关论坛或网站,所以在这里给大…...
资深运维的Helm Chart私藏库:高质量K8s应用部署实战指南
1. 项目概述:一个资深运维的Helm Chart私藏库如果你和我一样,长期在Kubernetes(K8s)的“牧场”里当“牛仔”(Sysop),那你肯定明白,找到一个质量上乘、维护及时、配置合理的Helm Char…...
Java 开发,不要瞎忙,十点睡觉六点起床,天塌不了
你是一名 Java 开发,不要瞎忙,十点睡觉六点起床,天塌不了。我的想法对吗? 没问题,这就给你上干货。想在 Java 开发这行准点下班,光靠手速快是不够的,核心在于掌控节奏和学会拒绝。 这里有一份帮…...
用Matplotlib heatmap分析你的数据:从农产品收成到商品销量的实战案例拆解
用Matplotlib heatmap解锁业务洞察:从农场到电商的数据可视化实战 热力图(heatmap)远不止是颜色方块的排列——它是数据与商业决策之间的视觉桥梁。想象一下,你面前有一张农场作物产量的热力图,颜色从深绿渐变到亮黄&a…...
底特律汽车产业转型:从全球平台战略到创新生态重构
1. 从废墟中重生:底特律汽车产业的韧性复苏如果你在2010年前后关注过全球汽车产业,或者对美国的工业经济史稍有了解,那么“底特律”这个名字,在当时几乎就是“衰败”与“绝望”的同义词。这座曾经的“汽车之城”,在200…...
实验记录-农药种衣剂
1.显色度取决于种子颗粒大小,种子越大,则显色越差;2.需加入增稠剂...
共享屏幕怎么弄 共享屏幕用什么工具好
共享屏幕怎么弄?不管是异地办公同步方案、远程协助操作设备,还是和朋友分享游戏画面,都离不开共享屏幕的需求。共享屏幕怎么弄才不麻烦、不卡顿?其实答案很简单,无界趣连2.0就能轻松搞定,不用复杂设置&…...
OFIRM 视角下的多重宇宙:双拐点确认度增长模型之本宇宙V4.1开篇,我提出一个深刻的哲学问题:如果宇宙全部演化都可以被一个数学公式精确描述,那么人类独立意识应该如何定位?我思考一夜,越想越觉得恐怖
OFIRM 视角下的多重宇宙:双拐点确认度增长模型之本宇宙V4.1开篇,我提出一个深刻的哲学问题:如果宇宙全部演化都可以被一个数学公式精确描述,那么人类独立意识应该如何定位?我思考一夜,越想越觉得恐怖 问&am…...
Vit工程化应用(timm 库)
pip install timm import timm import torch from PIL import Image import requests from io import BytesIO# 1. 加载模型 (ViT Base版本,16x16图块,在ImageNet-1k上预训练) # 设置 pretrainedTrue 自动下载权重 model timm.create_model(vit_base_pa…...
