博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅
1、项目介绍
技术栈:
Python语言、Flask后端框架 bootstrap前端框架 MySQL数据库 可视化大屏 echarts可视化 51job招聘网站
2、项目界面
(1)招聘数据分析大屏
(2)数据总览
(3)柱状图分析
(4)饼图分析
(5)岗位发布时间图分析
(6)词云图分析
(7)招聘数据
(8)岗位介绍页面
3、项目说明
基于Flask框架的招聘数据可视化系统是一个集成后端服务、前端展示和数据可视化的综合性平台,旨在从51job招聘网站上抓取数据,进行高效分析和直观展示。以下是对该系统的简要介绍。
该系统后端采用Flask框架,一个轻量级但功能强大的Python Web框架。Flask以其简洁和易扩展性著称,能够轻松处理从51job招聘网站上抓取的大量数据,并提供高效的数据处理服务。同时,MySQL数据库作为系统的数据存储层,负责存储和管理从51job上获取的招聘信息,确保数据的持久化和高效查询。
前端部分则采用Bootstrap框架,为用户提供了一个响应式、易于使用和美观的界面。Bootstrap的组件库和样式库使得前端页面的开发更加快捷和标准化,极大地提升了用户体验。
在数据可视化方面,系统充分利用了ECharts这一强大的可视化工具。ECharts以其丰富的图表类型和良好的交互性,能够将招聘数据以折线图、柱状图、饼图等多种形式展示出来,让用户对招聘趋势、岗位分布等信息一目了然。此外,系统还支持可视化大屏展示,使得数据展示更加直观和震撼。
整体而言,该系统通过整合Flask后端框架、Bootstrap前端框架、MySQL数据库以及ECharts可视化工具,实现了一个从数据抓取、存储、处理到展示的完整流程。它不仅提高了招聘数据的分析效率,还通过直观的可视化展示,帮助用户更好地把握招聘市场的动态和趋势。
4、核心代码
def set_salary(tuple):
salary_10 = 0
salary_20 = 0
salary_30 = 0
salary_40 = 0
salary_50 = 0
for i in tuple:
if int(i[1].split("·")[0]) <= 10:
salary_10 += 1
if 10 < int(i[1].split("·")[0]) <= 20:
salary_20 += 1
if 20 < int(i[1].split("·")[0]) <= 30:
salary_30 += 1
if 30 < int(i[1].split("·")[0]) <= 40:
salary_40 += 1
if int(i[1].split("·")[0]) >= 50:
salary_50 += 1
data_dict = {
"10k以下": salary_10,
"10k-20k": salary_20,
"20k-30k": salary_30,
"30k-40k": salary_40,
"50k以上": salary_50,
}
data = [
{"name": "10k以下", "value": salary_10},
{"name": "10k-20k", "value": salary_20},
{"name": "20k-30k", "value": salary_30},
{"name": "30k-40k", "value": salary_40},
{"name": "50k以上", "value": salary_50},
]
return data
def radar_edu(tuple):
data = []
for i in tuple:
data.append({"name": i[0], "value": i[1]})
return data
def map(tuple):
data = []
for i in tuple:
data.append({"name": i[0], "value": i[1]})
return data
def word_cloud(tuple):
data_srt = ""
for s in tuple:
data_srt = data_srt + s[1]
words = jieba.lcut(data_srt)
counts = {}
for word in words:
if len(word) == 1:
continue
else:
counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
# print(items)
# 列表排序sort(reverse=True 降序,可迭代列表元素,key代表数据(列表数据))
items.sort(key=lambda x: x[1], reverse=True)
# print(items)
data = []
for w in items:
if w[1] >= 1000:
data.append(
{"name": w[0], "value": w[1]}
)
return data
def count_desc(tuple):
data = []
for i in range(0, 7):
data.append(tuple[i][1])
return data
def sount_desc_salary(tuple):
data = []
for i in range(0, 7):
# print(tuple[i])
data.append(tuple[i][2])
# print(data)
return data
def all_data(tuple):
return tuple[0][1]
def jin_wei_data(tuple):
data = []
for i in tuple:
temp = []
temp.append(i[1])
temp.append(i[2])
data.append({i[0]: temp})
return data
def data_names(tuple):
data = []
for d in tuple:
data.append({"name": d[0], "value": d[1]})
return data
def apiAgent(sql_index):
data = get_sql_data(Setting.bigList[sql_index])
data_map_data = []
for j in jin_wei_data(data[12]):
for key in j.keys():
for m in map(data[13]):
if m["name"] == key:
temp_list = []
for x in j[key]:
temp_list.append(x)
temp_list.append(m["value"])
data_map_data.append({
"name": m["name"],
"value": temp_list
})
data_dict = {
"data_name": data_names(data[0]),
"data_salary": set_salary(data[1]),
"data_edu": radar_edu(data[2]),
"data_bar": map(data[3]),
"data_bar_workYear": map(data[4]),
"data_word_cloud": word_cloud(data[5]),
"data_name_desc": count_desc(data[6]),
"data_salary_desc": sount_desc_salary(data[7]),
"data_raozhi_desc": sount_desc_salary(data[8]),
"data_jinyan_desc": sount_desc_salary(data[9]),
"data_edu_desc": sount_desc_salary(data[10]),
"data_all_data": all_data(data[11]),
"all_map_data": data_map_data,
}
return data_dict
标签:salary,name,tuple,源码,可视化,毕业设计,data,append,desc
From: https://blog.csdn.net/vx_biyesheji0002/article/details/143261169