计算机毕设 大数据工作岗位数据分析与可视化 - 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环境下导入pandaspyecharts实现数据图表交互展示。
  • 写出四个@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 最后

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Excel】补全单元格值变成固定长度

我们知道股票代码都为6位数字,但深圳中小板代码前面以0开头,数字格式时前面的0会自动省略,现在需要在Excel表格补全它。如下图: 这时我们需要用到特殊的函数:TEXT或者RIGHT TEXT函数是Excel中一个非常有用的函数。TEX…

c: struct sort descending and ascending in windows and Ubuntu

/*** file StudentStructSort.h* author geovindu,Geovin Du,涂聚文 (geovindu163.com)* ide: vscode c11,c17 Ubuntu 22.4* brief 结构体排序示例* date 2023-11-05* version 0.1* copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants**/#ifnd…

海康工业相机如何提高相机帧率

影响帧率的因素 相机参数 帧率限制使能 像素格式 曝光时间 数据包大小(网口) 相机默认参数 ADC位深 系统环境设置

opencv创建图片,绘制图片,画框,划线,改变像素点颜色

文章目录 创建空白图片创建一张渐变色彩色绘制多边形绘制多线改变像素点颜色 创建空白图片 bool tool_class::creatEmpty(int width, int height, std::string image_p) {// 创建一个空白图像cv::Mat blankImage(height, width, CV_8UC3, cv::Scalar(255, 255, 255));// 保存图…

CSS3 分页、框大小、弹性盒子

一、CSS3分页&#xff1a; 网站有很多个页面&#xff0c;需要使用分页来为每个页面做导航。示例&#xff1a; <style> ul.pagination { display: inline-block; padding: 0; margin: 0; } ul.pagination li {display: inline;} ul.pagination li a { color: black; f…

给CAD中添加自定义菜单CUIX

本文以AutoCAD2020为例&#xff0c;介绍如何添加自定义菜单。 打开AutoCAD2020&#xff0c;在命令行执行CUI并回车&#xff0c;出现菜单 进入菜单编辑界面 点击传输&#xff0c;然后新建 在菜单上右键&#xff0c;添加自定义菜单 点击保存&#xff0c;即可存为cuix文件。之后…

arduino 简易智能花盆

编辑器&#xff1a;arduino IDE 主板&#xff1a;arduino uno 传感器&#xff1a; 0.96寸的OLED屏&#xff08;四脚&#xff09; 声音模块 土壤温湿度模块 DS18B20温度模块&#xff08;这里用到防水的&#xff09; 光敏电阻模块&#xff08;买成三脚的了只能显示高低&#x…

【uniapp】文件授权验真系统(含代码)

文章目录 前言一、框架选用二、数据库设计三、设计上传列表四、上传操作1.前端2.后端 五、修改操作六、访问操作七、二维码生成八、二维码访问九、删除操作总结 前言 吐槽&#xff1a;终于开通了【资源绑定】的功能了&#xff0c;之前还要一个一个的去贴链接 之前的同学联系…

家居美学:将水离子壁炉融入你的现代装饰

当谈及家居装饰和壁炉选择时&#xff0c;水离子雾化壁炉是一个备受瞩目的话题。水离子雾化壁炉的美学价值&#xff0c;还为室内装饰带来全新的维度。它甚至能够激发室内装饰的灵感。 水离子雾化壁炉是现代美学的标志&#xff0c;融合了简洁、线条清晰的设计。这种壁炉常常采用不…

地区 IP 库

地区 & IP 库 yudao-spring-boot-starter-biz-ip (opens new window)业务组件&#xff0c;提供地区 & IP 库的封装。 #1. 地区 AreaUtils (opens new window)是地区工具类&#xff0c;可以查询中国的省、市、区县&#xff0c;也可以查询国外的国家。 它的数据来自 …

React动态生成二维码和毫米(mm)单位转像素(px)单位

一、使用qrcode.react生成二维码&#xff0c;qrcode.react - npm 很简单&#xff0c;安装依赖包&#xff0c;然后引用就行了 npm install qrcode.react或者 yarn add qrcode.react直接上写好的代码 import React, {useEffect, useState} from react; import QRCode from qr…

6.存储器概述,主存储器

目录 一. 存储系统基本概念 &#xff08;1&#xff09;存储系统的层次结构 &#xff08;2&#xff09;分类 &#xff08;3&#xff09;存储器的性能指标 二. 主存储器的基本组成 三. SRAM和DRAM 四. 只读存储器ROM 五. 提升主存速度的方法 &#xff08;1&#xff09;双…

复杂度计算实例

1.常见时间复杂度计算举例 实例1 实例1基本操作执行了2N10次&#xff0c;通过推导大O阶方法知道&#xff0c;时间复杂度为 O(N) 实例2 实例2基本操作执行了MN次&#xff0c;有两个未知数M和N&#xff0c;时间复杂度为 O(NM) 实例3 实例3基本操作执行了100次&#xff0c;通过…

FTP、NFS以及SAMBA服务

一、FTP服务 1、Linux下ftp客户端管理工具 ftp、lftp都是Linux下ftp的客户端管理工具&#xff0c;但是需要独立安装 # yum install ftp lftp -y ☆ ftp工具 # ftp 10.1.1.10 Connected to 10.1.1.10 (10.1.1.10). 220 (vsFTPd 3.0.2) Name (10.1.1.10:root): 输入FTP的账号…

游戏公司数据分析师必备知识(持续补充中...)

1.如何撰写专题报告&#xff1f; ①原则 只有一个主题&#xff1a;即使不讲ppt&#xff0c;业务方也能看得懂行文通俗简单易懂&#xff1a;学习产品经理平常是如何写报告的明确的数据结论和落地项先行&#xff1a;跟业务方多沟通数据结论&#xff0c;让他们给出落地项 ②结构…

【星海随笔】git的使用

1.在终端&#xff0c;检查git是否安装 git --version 2.没有安装的话去&#xff0c;官网&#xff0c;下载git 3.一直点下一步即可 4.安装后在终端检查git是否安装好 5.设置用户名和邮件地址(最好和GitHub的用户名/邮箱保持一致) git config --global user.name “自己的用户名”…

Linux编写一个极简版本的Shell

Linux编写一个极简版本的Shell &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容在Linux环境下&#xff…

Markdown使用教程

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

笔记本电脑的麦克风没有声音

笔记本电脑的麦克风没有声音是一个常见的问题&#xff0c;可能是由于以下几个原因导致的&#xff1a; 第一&#xff0c;麦克风没有启用或者被禁用了。在Windows系统中&#xff0c;右键单击任务栏上的音量图标&#xff0c;选择“录音设备”&#xff0c;在弹出窗口中找到麦克风&a…

Python+Appium自动化测试-编写自动化脚本

一&#xff0c;连接测试手机&#xff0c;获取测试机及被测APP配置 配置信息如下&#xff1a; {"platformName": "Android","platformVersion": "10","deviceName": "PCT_AL10","appPackage": "c…