Python 招聘岗位数据可视化

简介: Python 招聘岗位数据可视化

项目背景


最近朋友圈又有小伙伴被降薪、被裁员了。往年金三银四是找工作的好时机,但在今年疫情之下互联网似乎更冷了。为了更好的找到好工作,就要了解企业需要什么样的人才,地区之间人才需求数量,薪资、学历与经验之间的关系等等。本文以拉勾网  Python 岗位数据作为分析。


image.png


获取数据

获取数据比较简单,拉勾网是用 POST 提交 Ajax 请求数据。


image.png


部分爬取代码


def crawler(self):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
        'Host': 'www.lagou.com',
        'Referer': 'https://www.lagou.com/jobs/list_python/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput=',
        'Cookie': 'cookie',
        'X-Anit-Forge-Code': '0',
        'X-Anit-Forge-Token': 'None',
        'X-Requested-With': 'XMLHttpRequest'
    }
    page = 0
    totalCount = 1
    resultSize = 0
    while (page * resultSize) <= totalCount:
        page = page + 1
        url = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"
        datas = {
            'first': 'false',
            'pn': page,
            'kd': 'python'
        }
        if page == 1:
            datas['first'] = 'true'
        html = requests.post(url, headers=headers, data=datas)
        result = html.json()
        if page == 1:
            totalCount = result['content']['positionResult']['totalCount']
            resultSize = result['content']['positionResult']['resultSize']
        jobs = result['content']['positionResult']['result']
        for job in jobs:
            job_array = [job['positionName'], job['workYear'], job['salary'], job['city'], job['education'],
                            job['positionAdvantage'], "|".join(job['companyLabelList']),
                            job['financeStage'], job['companySize'], job['industryField'], job['firstType']]
            # 存入数据库
            self.cursor.execute(self.sql, tuple(job_array))
            self.conn.commit()
        r = random.randint(15, 30)
        time.sleep(r)


把抓取的数据存入 Mysql 数据库中


image.png


数据可视化

数据库中杂乱的数据必须经过分析才有意义,使用第三方的 pyecharts 模块 ( https://github.com/pyecharts/pyecharts ) 将招聘数据可视化。


安装 pyecharts


pip3 install pyecharts -U
# 全球国家地图pip3 install echarts-countries-pypkg# 中国省级地图pip3 install echarts-china-provinces-pypkg# 中国市级地图pip3 install echarts-china-cities-pypkg
# 缺少提示安装pip3 install pyecharts_snapshot


微信图片_20220212180435.jpg


image.png


在城市岗位热力图和柱状图中可以看出北上广超一线城市提供了大部分的工作岗位。二三线城市提供的岗位不是很多。


# 主要代码
sql = 'select city, count(1) counts from jobs group by city'
results = self.query(sql)
c = (
    Geo()
        .add_schema(maptype="china")
        .add(
        "城市热力图",
        list(results),
        type_=ChartType.HEATMAP,
    )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(),
    ).render("拉钩城市热力图.html")
)
sql = 'select city,counts from (select city, count(1) counts from jobs group by city) a order by counts desc limit 20'
results = self.query(sql)
citys = []
values = []
for row in results:
    citys.append(row[0])
    values.append(row[1])
c = (
    Bar()
        .add_xaxis(citys)
        .add_yaxis("各城市的招聘数量 Top 20", values)
        .set_global_opts(
        xaxis_opts=opts.AxisOpts(name_rotate=60, name="城市", axislabel_opts={"rotate": 45})
    ).render("拉钩城市招聘图.html")
)


image.png


招聘岗位中本科学历的占比远大于大专、硕士和不限。1-5 年工作经验的本科人才能更快的找到工作,5-10年工作经验的岗位较少。


# 主要代码sql = 'select education,count(1) counts from jobs group by education'results = self.query(sql)c = (    Pie()        .add("", list(results))        .set_global_opts(title_opts=opts.TitleOpts(title='学历占比'))        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))        .render("拉勾学历.html"))
sql = 'select workYear,count(1) counts from jobs group by workYear'results = self.query(sql)c = (    Pie()        .add("", list(results))        .set_global_opts(title_opts=opts.TitleOpts(title='工作经验占比'))                            .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c},{d}%"))                            .render("拉勾工作年限.html"))


年限与薪资


image.png


在上图表中可以看出工作经验与薪资是成正比的,其中 1-3 年工作经验薪资在 10K 到 25K之间,3-5年的在 10K 到 30K 之间, 5-10 年的在 15K 到 35K 之间。3-10 年工作经验的最高薪资可以达到 60K。


# 主要代码sql = 'SELECT workYear,replace(salary,\'k\',\'\') s FROM jobs group by workYear,salary order by workYear'results = self.query(sql)sum = {}for r in results:    rs = r[1].split('-')    a = sum.get(r[0], [])    a.extend(rs)    sum[r[0]] = a
for k in sum:    numbers = list(map(int, sum[k]))    v = list(set(numbers))    sum[k] = v
print(list(sum.values()))
c = Boxplot()c.add_xaxis(list(sum.keys()))c.add_yaxis("薪资与工作经验", c.prepare_data(list(sum.values())))c.set_global_opts(title_opts=opts.TitleOpts(title="薪资与工作经验"))c.render("拉勾薪资.html")


工作类型


image.png


移动互联网行业在招聘上占比大。数据服务、企业服务、金融、电商行业招聘人数较少。


# 主要代码sql = 'select industryField from jobs'results = self.query(sql)rows = []for row in results:    r = row[0].replace(',', ' ').replace('丨', ' ').replace('、', ' ')    rows.extend(r.split(' '))sum = {}for r in rows:    num = sum.get(r, 0) + 1    sum[r] = numtup = sorted(sum.items(), key = lambda kv:(kv[1], kv[0]),reverse=True)sum = {}for k, v in tup[0:20]:    sum[k + str(v)] = vlocation = list(sum.keys())values = list(sum.values())
c = (    PictorialBar()        .add_xaxis(location)        .add_yaxis(        "",        values,        label_opts=opts.LabelOpts(is_show=False),        symbol_size=18,        symbol_repeat="fixed",        symbol_offset=[0, 0],        is_symbol_clip=True,        symbol=SymbolType.ROUND_RECT,    )        .reversal_axis()        .set_global_opts(        title_opts=opts.TitleOpts(title="热门行业"),        xaxis_opts=opts.AxisOpts(is_show=False),        yaxis_opts=opts.AxisOpts(            axistick_opts=opts.AxisTickOpts(is_show=False),            axisline_opts=opts.AxisLineOpts(                linestyle_opts=opts.LineStyleOpts(opacity=0)            ),        ),    )        .render("拉勾行业.html"))


企业融资


image.png


从融资上市来看上市融资的企业招聘岗位数量还是很多的,不需要融资的企业也占了 30% 的比例,未融资的企业只有 12% 左右。


results = self.query('select companySize,count(1) counts from jobs group by companySize')c = (    Pie()        .add("", list(results))        .set_global_opts(title_opts=opts.TitleOpts(title='企业大小'))                            .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c},{d}%"))                            .render("拉勾企业大小.html"))


福利时间


image.png


带薪年假、绩效奖金、扁平管理、弹性工作等是多数企业能给员工的福利。


# 主要代码
sql = 'select positionAdvantage,companyLabelList from jobs'
results = self.query(sql)
data = {}
for row in results:
    # 去掉特殊符号
    positionStr = re.sub('\W+', ' ', row[0])
    labelStr = re.sub('\W+', ' ', row[1])
    a = positionStr.split(' ')
    b = labelStr.split(' ')
    a.extend(b)
    for i in a:
        data[i] = data.get(i, 0) + 1
    sum = []
    for k in data:
        sum.append((k,data[k]))
(
    WordCloud()
    .add(series_name="热点分析", data_pair=sum, word_size_range=[6, 66])
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
        ),
        tooltip_opts=opts.TooltipOpts(is_show=True),
    )
    .render("拉勾福利.html")
)


总结

招聘岗位相对来说还是较少的,本科以上、有工作经验的人才可以更快的找到工作。融资上市的企业招聘不在少数。

目录
相关文章
|
6月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
7月前
|
机器学习/深度学习 数据可视化 搜索推荐
基于python的汽车数据可视化、推荐及预测系统
本研究围绕汽车数据可视化、推荐及预测系统展开,结合大数据与人工智能技术,旨在提升用户体验与市场竞争力。内容涵盖研究背景、意义、相关技术如 Python、ECharts、协同过滤及随机森林回归等,探讨如何挖掘汽车数据价值,实现个性化推荐与智能预测,为汽车行业智能化发展提供支持。
|
6月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
3996 1
|
7月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
6月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
652 0
|
6月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
8月前
|
机器学习/深度学习 新能源 调度
电力系统短期负荷预测(Python代码+数据+详细文章讲解)
电力系统短期负荷预测(Python代码+数据+详细文章讲解)
709 1
|
8月前
|
缓存 API 网络架构
淘宝item_search_similar - 搜索相似的商品API接口,用python返回数据
淘宝联盟开放平台中,可通过“物料优选接口”(taobao.tbk.dg.optimus.material)实现“搜索相似商品”功能。该接口支持根据商品 ID 获取相似推荐商品,并返回商品信息、价格、优惠等数据,适用于商品推荐、比价等场景。本文提供基于 Python 的实现示例,包含接口调用、数据解析及结果展示。使用时需配置淘宝联盟的 appkey、appsecret 和 adzone_id,并注意接口调用频率限制和使用规范。
|
6月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
7月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。

推荐镜像

更多