据说今年找工作很难,不得不说行业化内卷严重,且近几年就业形势一直都不太好,一方面高校毕业生逐年在递增,另一方面,市场的岗位需求趋近饱和,一岗难求。
基于此,本文使用智联招聘、BOSS直聘等在线招聘平台的招聘人数数据,借助pandas和pyecharts两个包,绘制漏斗图,从招聘流程上解析人数的变化情况。
示例工具:anconda3.7
本文讲解内容:openpyxl、pyecharts使用
适用范围:招聘业务中的漏斗分析
安装及导入库
使用pip命令下载pyecharts包,并指定下载的包的版本是1.9.0版本,如果下载速度比较慢的话,后面可以加一个-i清华镜像下载包,当出现Sussessfully的字样时,就表明pyecharts包已经安装好。
!pip install pyecharts==1.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

这里我们导入openpyxl库用于数据导入,以及pyecharts库用于数据可视化。
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
import openpyxl
from pyecharts import options as opts
from pyecharts.charts import Funnel,Grid,Bar,Page
数据导入
使用openpyxl库数据导入,读取指定路径的数据表,并指定读取工作表1该sheet表下的数据。
# 读取excel数据
workbook = openpyxl.load_workbook(r'C:Desktop招聘数据.xlsx')
sheet = workbook['工作表1']
新建一个空的列表[ ],使用sheet['A'][0].value可以读取指定单元格内的数据,如果要读取指定单元格区域的数据,可以使用for循环进行循环读取,用append命令将读取的数据合并在列表中,导入智联招聘数据如下。
value1 = []
title1 = sheet['A'][0].value
for cell in (sheet['B'][1::]): #定位数据位置
value1.append(cell.value)
title1
value1

同理导入BOSS直聘数据。
value2 = []
title2 = sheet['F'][0].value
for cell in (sheet['G'][1::]): #定位数据位置
value2.append(cell.value)
title2
value2

导入前程无忧的数据如下。
value3 = []
title3 = sheet['K'][0].value
for cell in (sheet['L'][1::]): #定位数据位置
value3.append(cell.value)
title3
value3

导入指定的数据区域。
value4 = []
for cell in (sheet['Q'][1::]): #定位数据位置
value4.append(cell.value)
value4

构建数据集
想要做出漏斗图,需要构造出含字段标签的数据集,我们使用列表解析式来生成,如果要做不同公司的漏斗图,就要分别构造数据集,数据集结果如下。
attr = ["浏览","简历", "约面", "到面", "offer","入职"]
value1 = [int(i) for i in value1]
data1 = [[attr[i], value1[i]] for i in range(len(attr))]
data1

data2 = [[attr[i], value2[i]] for i in range(len(attr))]
data2

data3 = [[attr[i], value3[i]] for i in range(len(attr))]
data3

数据可视化
绘制智联招聘人数的漏斗图,使用可视化对象Funnel(),导入数据data1,其他可视化配置可以默认或者使用参数进行设置,.render_notebook()命令可在notebook在线展示。
funnel1=(
Funnel()
.add(
series_name="人数/人",
#sort_='ascending',
data_pair=data1,
gap=2,
tooltip_opts=opts.TooltipOpts(),
label_opts=opts.LabelOpts(is_show=True, position="inside"),
itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),
)
.set_global_opts(title_opts=opts.TitleOpts(title=title1, subtitle="招聘人数转化漏斗分析"))
)
funnel1.render_notebook()

同理制作BOSS直聘的招聘人数漏斗图。
funnel2=(
Funnel()
.add(
series_name="人数/人",
#sort_='ascending',
data_pair=data2,
gap=2,
tooltip_opts=opts.TooltipOpts(),
label_opts=opts.LabelOpts(is_show=True, position="inside"),
itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),
)
.set_global_opts(title_opts=opts.TitleOpts(title=title2, subtitle="招聘人数转化漏斗分析"))
)
funnel2.render_notebook()

还有前程无忧的招聘人数漏斗图。
funnel3=(
Funnel()
.add(
series_name="人数/人",
#sort_='ascending',
data_pair=data3,
gap=2,
tooltip_opts=opts.TooltipOpts(),
label_opts=opts.LabelOpts(is_show=True, position="inside"),
itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),
)
.set_global_opts(title_opts=opts.TitleOpts(title=title3, subtitle="招聘人数转化漏斗分析"))
)
funnel3.render_notebook()

如果想要做一个词云图,根据关键词的大小来呈现招聘人数的多少,导入视觉对象WordCloud,并且构造数据集words,即可制作词云图。
from pyecharts import options as opts
from pyecharts.charts import WordCloud
words = [(attr[i], value4[i]) for i in range(len(attr))]
wordcloud=(
WordCloud()
.add(
"人数",
words,
word_size_range=[30, 100],
textstyle_opts=opts.TextStyleOpts(font_family="cursive"))
.set_global_opts(title_opts=opts.TitleOpts(title="面试人数词云图"))
)
wordcloud.render_notebook()

结果导出
以上做出各个招聘公司的招聘人数漏斗图,可看出,在整个招聘过程中,从网站浏览到筛选简历的过程中,基本有一半简历会被刷下来,所以,在找工作时,尤其要写出一份精美的简历,良好的简历让人眼前一亮,避免第一关就被PASS掉,可视化做出来后使用page命令,将前面的结果呈目前一张界面中,并可以保存为网页版结果。
page = Page(layout=Page.SimplePageLayout)#layout=Page.DraggablePageLayout自定义布局
page.add(funnel1,funnel2,funnel3,wordcloud)
page.render(r"C:Desktop招聘人数漏斗分析.html")

三年互联网数据分析经验,擅长Excel、SQL、Python、PowerBI数据处理工具,数据可视化、商业数据分析技能,统计学、机器学习知识,持续创作数据分析内容,点赞关注,不迷路。



三个网站之间的数量相对比例用三个独立漏斗是无法展现的。还不如用一张分类柱形图或分类条形图。三根分成几段的柱子就解决了。
好建议,感谢建议
大家找到满意的工作了吗?说说今年对工作的看法
收藏了,感谢分享