python自制一款职位分析器,一键生成岗位分析报告

前言

为什么要进行职位分析?职位分析是人力资源开发和管理的基础与核心,是企业人力资源规划、招聘、培训、薪酬制定、绩效评估、考核激励等各项人力资源管理工作的依据。其次我们可以根据不同岗位的职位分析,可视化展示各岗位的数据分析报告。

之前网上也有不少关于行业的分析数据,今天我们就根据不同岗位,公司类型规模,学历要求,薪资分布等来进行分析,把职位分析功能集合封装起来,做成一个小工具分享给大家吧。

首先我们来看看分析展示的效果:

在这里插入图片描述
下面,我们开始介绍这个小工具的制作过程。

1. 核心功能设计

总体来说,我们的这款职位分析器可以通过输入岗位关键字和岗位条数,自动爬取相关岗位的数据,并对爬虫的岗位可视化表格展示。然后分析这些岗位数据的公司类型规模,对学历要求,薪资分布等。

拆解需求,大致可以整理出核心功能如下:

  • 可视化展示岗位表格数据

    • 通过输入的岗位关键字和获取条数,自动爬取职位数据
    • 对爬虫的职位原始数据进行清洗
    • 读取展示清洗后的职位数据
  • 分析岗位薪资情况

    • 根据工作年限及对应平均薪资,绘制工作经验年限和薪资折线图
    • 统计汇总薪资分布区间,了解该岗位薪资情况,展示薪资分布直方图
  • 分析岗位公司情况

    • 展示岗位中公司类型分布情况,包含民营企业、合资、上市、外企等等
    • 展示公司规模人数分布情况,包含少于50人,50-150,150-500等等
    • 统计岗位对于学历的要求
  • 数据分析导出

    • 对于可视化数据进行弹窗预览,并将数据导出保存

基本的核心功能确定,下面我们我们首先开始GUI设计

2. GUI设计与实现

基于功能点,我们可以先考虑进行简单的UE布局设计,然后再通过GUI开发库进行设计,这里采用的是tkinker,主要是简单方便。

基于UI设计,我们gui设计编码如下:

# 创建主窗口
root = Tk()
root.title('职位查询分析数据平台 -- Dragon少年')
# 设置窗口大小
root.minsize(1380, 730)
root.resizable(False, False)

#得到屏幕宽度
sw = root.winfo_screenwidth()
#得到屏幕高度
sh = root.winfo_screenheight()
ww = 1380
wh = 730
x = (sw-ww) / 2
y = (sh-wh) / 2
root.geometry("%dx%d+%d+%d" %(ww,wh,x,y))

frame_left_top = Frame(width=1050, height=400)
frame_right_top = Frame(width=320, height=400)
# 定义列表区域
tree = ttk.Treeview(frame_left_top, show="headings", height=18,
                    columns=("n", "a", "b", "c", "d", "e", "f", "g", "h"))
vbar = ttk.Scrollbar(frame_left_top, orient=VERTICAL, command=tree.yview)
# 定义树形结构与滚动条
tree.configure(yscrollcommand=vbar.set)
# 表格的标题
tree.column("n", width=60, anchor="center")
tree.column("a", width=180, anchor="center")
tree.column("b", width=200, anchor="center")
tree.column("c", width=100, anchor="center")
tree.column("d", width=100, anchor="center")
tree.column("e", width=80, anchor="center")
tree.column("f", width=100, anchor="center")
tree.column("g", width=90, anchor="center")
tree.column("h", width=90, anchor="center")

tree.heading("n", text="序号")
tree.heading("a", text="岗位名称")
tree.heading("b", text="公司名称")
tree.heading("c", text="公司类型")
tree.heading("d", text="公司规模")
tree.heading("e", text="学历")
tree.heading("f", text="工作经验")
tree.heading("g", text="最低工资(k)")
tree.heading("h", text="最高工资(k)")
tree.grid(row=0, column=0, sticky=NSEW)
vbar.grid(row=0, column=1, sticky=NS)

# 整体区域定位
frame_left_top.grid(row=0, column=0, padx=4, pady=5)
frame_right_top.grid(row=0, column=1, padx=2, pady=2)
frame_left_top.grid_propagate(0)
frame_right_top.grid_propagate(0)

type_str=StringVar()
#设置滚动窗口文本
habits = tk.LabelFrame(root, text="公司类型", padx=10, pady=4 )  # 水平,垂直方向上的边距均为 10
habits.place(x=1035, y=170)
habits_Window = Label(habits, textvariable=type_str, width=30, height=10,  font=('楷体', 12))
habits_Window.grid()


size_str=StringVar()
#设置滚动窗口文本
company_size = tk.LabelFrame(root, text="公司规模", padx=10, pady=4 )  # 水平,垂直方向上的边距均为 10
company_size.place(x=1035, y=370)
company_size_Window = Label(company_size, textvariable=size_str, width=30, height=8,  font=('楷体', 12))
company_size_Window.grid()

edu_str=StringVar()
#设置滚动窗口文本
company_edu = tk.LabelFrame(root, text="学历要求", padx=10, pady=4 )  # 水平,垂直方向上的边距均为 10
company_edu.place(x=1035, y=540)
company_edu_Window = Label(company_edu, textvariable=edu_str, width=30, height=8,  font=('楷体', 12))
company_edu_Window.grid()

# 打开文件
# right_top_button = Button(frame_right_top, text="打开文件", command=lambda :openFile(), font=('楷体', 12))
input_name = Label(frame_right_top, text='岗位关键字:', font=('楷体', 
评论 248
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dragon少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值