赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。
技术栈:
Flask后端框架、 bootstrap前端框架 、 MySQL数据库 、Echarts可视化大屏、 51job招聘网站数据
1、招聘数据可视化大屏
2、招聘数据概况
3、福利词云图
4、柱状图分析
5、饼状图分析
6、岗位发布时间图
7、招聘数据
8、职位介绍
Flask框架招聘数据可视化大屏系统是一个基于Python的Web开发框架Flask构建的招聘数据可视化大屏系统。该系统旨在帮助企业或招聘机构更好地了解和分析招聘数据,以便做出更明智的决策。
该系统的主要功能包括数据收集、数据处理、数据可视化和数据分析。首先,系统可以从不同的招聘渠道或网站上收集招聘数据,如职位信息、薪资水平、求职者数量等。然后,系统会对这些数据进行处理和清洗,确保数据的准确性和完整性。
接下来,系统利用可视化技术将处理后的数据以图表、表格等形式展示在大屏上。用户可以通过大屏系统直观地了解招聘数据的趋势、变化和关联性,从而更好地了解市场需求和竞争情况。
此外,系统还提供数据分析的功能,用户可以根据自己的需求和偏好进行数据分析,比如按照地区、行业、职位等维度进行数据筛选和对比分析。系统会生成相应的数据报告和图表,帮助用户更好地理解和解读招聘数据。
Flask框架招聘数据可视化大屏系统具有易于使用、灵活性强和可定制性高的特点。它支持多种数据源的接入,可以根据用户的需要进行定制开发,满足不同企业或机构的需求。
总之,Flask框架招聘数据可视化大屏系统是一个功能强大的招聘数据分析工具,帮助企业或招聘机构更好地理解和利用招聘数据,从而提升招聘效率和竞争力。
import SQLUtils from demoAgent import settingAgent import jieba from flask import Flask, render_template, request import Setting from flask import jsonify import recruitPage from geopy.geocoders import Nominatim geolocator = Nominatim(user_agent='aaa515') app = Flask(__name__) db, all_table = recruitPage.create_mysql_ORM(app=app) # 数据处理 jieba.setLogLevel(jieba.logging.INFO) app_Agent = settingAgent() app_data = app_Agent.init_flask() con_sql = app_Agent.py_sql() def get_sql_data(sql_ment): con_sql.ping(reconnect=True) mysql = con_sql.cursor() data = [] for s in sql_ment: mysql.execute(s) datas = mysql.fetchall() data.append(datas) mysql.close() return data 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 # 岗位介绍 @app.route("/introduce") def introduce(): return render_template("/introduce.html") # 简介 @app.route('/') def index1(): return render_template("/index1.html") @app.route('/index2') def index2(): return render_template("/index2.html") @app.route('/index3') def index3(): return render_template("/index3.html") @app.route('/index4') def index4(): return render_template("/index4.html") @app.route('/index5') def index5(): return render_template("/index5.html") # 首页 # 职位数 @app.route("/data_all_data_python") def data_all_data(): return jsonify({"data": data_dict["data_all_data"]}) @app.route("/data_all_data_web") def data_all_data_web(): return jsonify({"data": data_dict_web["data_all_data"]}) @app.route("/data_all_data_java") def data_all_data_java(): return jsonify({"data": data_dict_java["data_all_data"]}) @app.route("/data_all_data_C") def data_all_data_C(): return jsonify({"data": data_dict_C["data_all_data"]}) @app.route("/data_all_data_PHP") def data_all_data_PHP(): return jsonify({"data": data_dict_PHP["data_all_data"]}) @app.route('/home') def home(): count=data_dict["data_all_data"]+data_dict_web["data_all_data"]+data_dict_java["data_all_data"]+data_dict_C["data_all_data"]+data_dict_PHP["data_all_data"] return render_template("/home.html", count=count,python=data_dict["data_all_data"],web=data_dict_web["data_all_data"],java=data_dict_java["data_all_data"],C=data_dict_C["data_all_data"],PHP=data_dict_PHP["data_all_data"]) @app.route("/data_data_desc") def data_data_desc(): d = SQLUtils.date_data()[2] data = [d.get('大数据开发工程师'), d.get('web前端开发工程师'), d.get('C++开发工程师'), d.get('PHP开发工程师'), d.get('java开发工程师'), d.get('month')] return jsonify({"data": data}) @app.route("/data_name_desc_data") def data_name_desc_data(): return jsonify({"data": data_dict["data_name_desc"]}) # python学历要求 @app.route("/data_edu_data") def data_edu_data(): return jsonify({"data": data_dict["data_edu"]}) @app.route("/data_edu") def data_edu(): return render_template("/bar1.html") #获取不同职位的岗位数量 @app.route('/job_count') def job_count(): con_sql1 = app_Agent.py_sql() c = con_sql1.cursor() c.execute(Setting.jobCount) # con_sql.commit() res = c.fetchall() c.close() con_sql1.close() job = [] count = [] for r in res: job.append(r[1]) count.append(str(r[0])) resdata = { 'job': job, 'count': count } return jsonify(resdata) # python工作经验 @app.route("/data_bar_workYear") def data_bar_workYear(): return render_template("/pie1.html") @app.route("/data_bar_workYear_data") def data_bar_workYear_data(): return jsonify({"data": data_dict["data_bar_workYear"]}) # python薪资 @app.route("/data_salary") def data_salary(): return render_template("/pie2.html") @app.route("/data_salary_data") def data_salary_data(): return jsonify({"data": data_dict["data_salary"]}) @app.route("/data_salary_python") def data_salary_python(): return jsonify({"data": data_dict["data_salary"]}) #现地区岗位排行 @app.route("/location") def location(): # print('执行location') data = [] dic = {} list_name = ['select * from name_db where id >= 1'] location_name = get_sql_data(list_name) for i in location_name: for n in i: location = n[5] if dic.get(location) == None: dic[location] = 1 else: dic[location] = dic[location] + 1 # print(dic) for k,v in dic.items(): if k.__contains__('市'): k = k.replace('市', '') elif k.__contains__('省'): k = k.replace('省', '') elif k.__contains__('自治区'): k = k.replace('自治区', '') if k.__contains__('维吾尔'): k = k.replace('维吾尔', '') elif k.__contains__('回族'): k = k.replace('回族', '') elif k.__contains__('特别行政区'): k = k.replace('特别行政区', '') d = { 'name': k, 'value': v } data.append(d) data = sorted(data, key=lambda data: data['value'], reverse=True) data = data[:15] return jsonify({"data": data}) # python需求词云 @app.route("/word_cloud_python_data") def word_python_data(): return jsonify({"data": data_dict["data_word_cloud"]}) # 职位列表 @app.route('/recruit') def recruitPage(): page = request.args.get("page", 1) if page == None: page = 1 else: page = int(page) paginate = db.session.query(all_table["name_db"]).paginate(page=page, per_page=20) print(paginate.items) return render_template("recruitpage.html", paginate=paginate) # 学历要求对比 @app.route("/data_edu_web") def data_edu_web(): return jsonify({"data": data_dict_web["data_edu"]}) @app.route("/data_edu_java") def data_edu_java(): return jsonify({"data": data_dict_java["data_edu"]}) @app.route("/data_edu_C") def data_edu_C(): return jsonify({"data": data_dict_C["data_edu"]}) @app.route("/data_edu_PHP") def data_edu_PHP(): return jsonify({"data": data_dict_PHP["data_edu"]}) # 经验饼图 @app.route("/data_bar_workYear_web") def data_bar_workYear_web(): return jsonify({"data": data_dict_web["data_bar_workYear"]}) @app.route("/data_bar_workYear_java") def data_bar_workYear_java(): return jsonify({"data": data_dict_java["data_bar_workYear"]}) @app.route("/data_bar_workYear_C") def data_bar_workYear_C(): return jsonify({"data": data_dict_C["data_bar_workYear"]}) @app.route("/data_bar_workYear_PHP") def data_bar_workYear_PHP(): return jsonify({"data": data_dict_PHP["data_bar_workYear"]}) # 薪资占比饼状图 @app.route("/data_salary_web") def data_salary_web(): return jsonify({"data": data_dict_web["data_salary"]}) @app.route("/data_salary_java") def data_salary_java(): return jsonify({"data": data_dict_java["data_salary"]}) @app.route("/data_salary_C") def data_salary_C(): return jsonify({"data": data_dict_C["data_salary"]}) @app.route("/data_salary_PHP") def data_salary_PHP(): return jsonify({"data": data_dict_PHP["data_salary"]}) # 公司类型 @app.route("/company_classification_data", methods=["GET"]) def company_classification_data(): key, value = SQLUtils.company_classification_data() list = [] name = [] for i in range(len(key)): list.append({"name": key[i], 'value': value[i]}) name.append(key[i]) return jsonify({"k": list, 'name': name}) @app.route("/company_classification", methods=["GET"]) def company_classification(): return render_template("/pie5.html") # 公司规模 @app.route("/company_size_data", methods=["GET"]) def company_size_data(): key, value = SQLUtils.company_size_data() list = [] name = [] for i in range(len(key)): list.append({"name": key[i], 'value': value[i]}) name.append(key[i]) return jsonify({"k": list, 'name': name}) @app.route("/company_size", methods=["GET"]) def company_size(): return render_template("/pie4.html") # 时间折线 @app.route("/date") def date(): return render_template("/line.html") @app.route("/date_data") def date_data(): data = SQLUtils.date_data()[0] return jsonify(data) # 福利词云图 @app.route("/benefits") def benefits(): return render_template("/wordcloud3.html") @app.route("/benefits_data") def benefits_data(): data = SQLUtils.wordcloud() return jsonify(data) # 需求词云 @app.route("/word_cloud_web_data") def word_web_data(): return jsonify({"data": data_dict_web["data_word_cloud"]}) @app.route("/word_cloud_java_data") def word_java_data(): return jsonify({"data": data_dict_java["data_word_cloud"]}) @app.route("/word_cloud_C_data") def word_C_data(): return jsonify({"data": data_dict_C["data_word_cloud"]}) @app.route("/wordcloud") def wordcloud(): return render_template("wordcloud1.html") @app.route("/wordcloud_PHP_data") def word_PHP_data(): return jsonify({"data": data_dict_PHP["data_word_cloud"]}) # 前20公司 @app.route("/job_release_data", methods=["GET"]) def job_release_data(): key, value = SQLUtils.job_release_data() list = [] name = [] for i in range(len(key)): if value[i] <= 15: continue list.append({"name": key[i], 'value': value[i]}) name.append(key[i]) return jsonify({"k": list, 'name': name}) @app.route("/job_release", methods=["GET"]) def job_release(): return render_template("/pie3.html") # 面板大图 @app.route('/sct') def sct(): return render_template("/sct.html") # 大地图 @app.route("/locations") def locations(): # print('执行location') data = [] dic = {} list_name = ['select * from name_db where id >= 1'] location_name = get_sql_data(list_name) for i in location_name: for n in i: location = n[5] if dic.get(location) == None: dic[location] = 1 else: dic[location] = dic[location] + 1 # print(dic) for k,v in dic.items(): if k.__contains__('市'): k = k.replace('市', '') elif k.__contains__('省'): k = k.replace('省', '') elif k.__contains__('自治区'): k = k.replace('自治区', '') if k.__contains__('维吾尔'): k = k.replace('维吾尔', '') elif k.__contains__('回族'): k = k.replace('回族', '') elif k.__contains__('特别行政区'): k = k.replace('特别行政区', '') d = { 'name': k, 'value': v } data.append(d) data = sorted(data, key=lambda data: data['value'], reverse=True) return jsonify({"data": data}) # 就业人数 @app.route("/data_name_desc") def data_name_desc(): return render_template("bar2.html") # 地区词云 @app.route("/word_cloud") def word_region(): return render_template("wordcloud2.html") # 职位数量 @app.route("/job_data", methods=["GET"]) def job_data(): key = SQLUtils.job_data() return jsonify({"k": key}) @app.route("/data_name") def data_name(): return jsonify({"data": data_dict["data_name"]}) @app.route("/data_name_web") def data_name_web(): return jsonify({"data": data_dict_web["data_name"]}) if __name__ == '__main__': # app.run(debug=True) app.run()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/366318
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。