某招聘网站“数据分析”相关岗位招聘信息爬取并分析

确定目标

  1. 简单分析数据分析相关岗位的薪酬状况及技能要求;
  2. 尝试数据分析从数据获取到数据分析报告撰写的整个数据分析流程,学习爬虫、数据清洗、数据分析相关技巧。
    在这里插入图片描述

数据获取

获取的岗位数据来源于某招聘网站,采取爬虫的方式获取,岗位搜索的关键词为:“数据分析”,爬取的信息包括:岗位名称,城市,薪酬,学历要求,经验要求,岗位描述/职责,分五次爬取,爬取了北京、上海、广州、深圳、南京五个城市的岗位数据共1472条

数据清洗

在清洗之前,我已经将爬取的北京、上海、广州、深圳、南京的数据合并为一个excel文件,以下直接读取(使用read_csv时出现错误,可能是因为岗位职责/描述一栏,数据本身就包含逗号的缘故,故使用read_excel),这次数据清洗主要使用pandas库,的清洗工作包括:

  1. 删除无效的列和行,增加索引列
  2. 对薪酬列进行分割,分为最低薪酬salary_min和最高薪酬salary_max,去除无关字符
  3. 工作经验列划分类别:应届毕业生、一年以下、1-3年、3-5年、5-10年、10年以上,去除无关字符
  4. 学历列划分类别:大专、本科、硕士、博士
  5. 岗位职责/描述列去除无关字符
    数据清洗代码如下:
from pandas import Series,DataFrame
import pandas as pd#读取文件
parsed = pd.read_excel('C:/Users/King/Desktop/拉勾网数据分析/拉勾网数据.xlsx', names = ['position','company','salary','city','expe','edu','desc'])#新增列(后面作为索引),删除‘公司’列
parsed = parsed.reindex(columns = ['seq','position','salary','city','expe','edu','desc'])#删除无关的行,指定索引列并赋值
parsed = parsed[~(parsed['position'].isin(['职位']))]
parsed['seq'] = range(parsed.iloc[:,0].size)
parsed.set_index(['seq'],inplace=True)#薪酬列分割为salary_min和salary_max
salary_m = parsed['salary'].str.replace('k','').str.replace('K','').str.split('-', expand = True)
parsed = parsed.drop('salary', axis = 1).join(salary_m)
parsed.rename(columns = {0:'salary_min',1:'salary_max'}, inplace=True)#经验列统一类别
expe_m = parsed['expe'].str.strip('经验年').str.replace('不限','应届毕业生')
parsed = parsed.drop('expe', axis = 1).join(expe_m)#学历列统一类别
edu_c = parsed['edu'].str.replace(r'.*不限.*','大专').str.replace(r'及以上.*','')
parsed = parsed.drop('edu', axis = 1).join(edu_c)#岗位职责列去除无关字符
desc_c = parsed['desc'].str.replace(r'[\n,"岗位职责","职位描述","职责描述","工作职责",":"]','')
parsed = parsed.drop('desc',axis = 1).join(desc_c)

清洗后的数据预览如下图:
在这里插入图片描述

数据简单分析

这次采集的数据维度较少,仅进行简单的分析,不涉及高深的统计学理论

基本描述

代码如下:

#获取不同城市的岗位数量
city_num = parsed['city'].value_counts()
city_s = city_num.index.tolist()
num_s = [i for i in city_num]#获取不同经验段岗位的数量
expe_num = parsed['expe'].value_counts()
expe_e = expe_num.index.tolist()
num_e = [i for i in expe_num]#开始画图
from pyecharts import Grid,Bar,Piebar = Bar('各城市岗位数量',title_pos='50%')
bar.add('城市',city_s,num_s, mark_point = ['max','min'],legend_pos="70%")bar_expe = Bar('各经验段岗位数量')
bar_expe.add('经验要求/年',expe_e,num_e,xaxis_rotate=30,mark_point = ['average'],legend_pos="20%")pie = Pie("各经验段岗位数量占比",title_top="50%")
pie.add("", expe_e, num_e, is_random=True,center = ['25%',"75%"],radius=["10%", '25%'], rosetype="area", is_legend_show=False,is_label_show=True)pie_c = Pie('各城市岗位数量占比',title_top="50%", title_pos="50%")
pie_c.add("", city_s, num_s, is_random=True,center = ['75%','75%'],radius=['10%', '25%'], rosetype="area", is_legend_show=False,is_label_show=True)grid = Grid(height = 800, width = 950)
grid.add(bar, grid_left="60%", grid_bottom = '60%')
grid.add(bar_expe, grid_right="60%", grid_bottom = "60%")
grid.add(pie_c, grid_right = '60%', grid_top = "60%")
grid.add(pie, grid_left = "60%", grid_top = "60")
grid

在这里插入图片描述以上,一共采集了1472条数据分析相关岗位的信息。从城市分布来看,北京和上海的均为450条,并不是因为这两个城市仅有450个数据分析相关岗位,而是因为该招聘网站只显示前450条招聘信息,爬虫爬到450条时便停止了,该招聘网站上,深圳和广州的岗位数量较北上少,南京最少,仅有35条数据分析相关岗位的招聘信息。
从要求的工作经验来看,大部分企业的需求仍然是有工作经验的数据分析师,招聘一年以下工作经验(含应届毕业生)的仅占16.5%,企业都想招进来就能直接上手的,而学校开设数据科学相关专业也只是近两年的事,很少应届生能够直接满足企业的需求;招聘1-5年工作经验占比70%以上,到10年以上工作经验仅有2条岗位信息,这也是因为数据分析师近几年才发展起来的职业,能有十年以上数据科学相关工作经验的职业人员本身就很少。

对比分析

城市-薪酬

先使用pyecharts库绘制箱线图,代码如下:

#获得数据,绘制箱线图
from pyecharts import Boxplot#城市数据,作为x轴
x_axis = '北京,上海,广州,深圳,南京'.split(',')#获得最低和最高薪酬组的数据,作为y轴数据
parsed['salary_min'] = parsed['salary_min'].astype(int)
parsed['salary_max'] = parsed['salary_max'].astype(int)
ls_min = []
ls_max = []
for x in x_axis:lt_min = parsed[parsed['city'] == x]['salary_min'].tolist()ls_min.append(lt_min)lt_max = parsed[parsed['city'] == x]['salary_max'].tolist()ls_max.append(lt_max)#开始绘制
boxplot = Boxplot('各城市最低和最高工资的箱线图')
boxplot.add('最低薪酬',x_axis, boxplot.prepare_data(ls_min))
boxplot.add('最高薪酬',x_axis, boxplot.prepare_data(ls_max))
boxplot

效果如下
在这里插入图片描述可以看到pyecharts绘制箱线图默认没有排除离群点的影响,由于没有找到设置的相关参数,因此转用matplotlib,matplotlib绘制代码和效果如下:

import matplotlib.pyplot as plt
import matplotlib
#设置以保证中文显示不出问题
matplotlib.rcParams['font.family'] = 'STSong'
matplotlib.rcParams['font.size'] = 15
#开始画图
parsed.boxplot(column=['salary_min','salary_max'], by='city',figsize = (10,5))
plt.savefig('各城市之间薪酬的差异.jpg', dpi=600) 
plt.show()

在这里插入图片描述这里主要从不同城市的最低薪酬(左边)和最高薪酬(右边)两个角度进行分析。最低薪酬的平均水平来看,北京、上海、深圳的几乎在同一水平,广州和南京的略低一些,整体来看,最低均在20K以下;从最高薪酬来看,波动明显比最低薪酬大得多,最大值出现在广州,达到了100k,平均水平来看,北京、上海、深圳均在20k左右及以上,而广州和南京的大部分仍在20k以下。

学历-薪酬

lables = ['','大专','本科','硕士','博士']
parsed_edu = parsed[['salary_min','salary_max','edu']].copy()
ls_new = parsed_edu['edu']
#改名字很重要
ls_new.name = 'edu_num'
for i in range(4):ls_new = ls_new.str.replace(lables[i + 1], str(i))
parsed_edu = parsed_edu.join(ls_new.astype(int))
parsed_edu = parsed_edu.sort_values(by = 'edu_num')
#画图
parsed_edu.boxplot(column=['salary_min','salary_max'], by='edu_num',fontsize = 14, figsize = (10,5))
plt.xticks(range(7),lables)
plt.savefig('各不同学历之间薪酬的差异.jpg', dpi=600) 
plt.show()

在这里插入图片描述最低薪酬来看,大专的平均薪酬水平最低,本科和硕士差不多,博士学历的波动最小、最低薪酬也在15k以上,这也说明大专到本科是一个小分水岭、硕士到博士是一个大分水岭当然这也有,而本科和硕士的基本差不多;最高薪酬来看,大专学历的薪酬水平整体上较其余学历略低,本科和硕士依旧相差不大,奇怪的是博士的最高薪酬差强人意。
这里有一个重要原因是这次采集数据采用的搜索关键字是‘数据分析’,而对大部分企业而言,他们的数据分析工作并不需要博士学历,因此此次仅采集到3个招聘博士的岗位信息(如下图所示),不具有代表性
在这里插入图片描述

工作经验-薪酬

lables = ['','应届毕业生','1年以下','1-3','3-5','5-10','10年以上']
parsed_expe = parsed[['salary_min','salary_max','expe']].copy()
ls_new = parsed_expe['expe']#一定要改名字
ls_new.name = 'expe_num'
for i in range(6):ls_new = ls_new.str.replace(lables[i + 1], str(i))
parsed_expe = parsed_expe.join(ls_new.astype(int))
parsed_expe = parsed_expe.sort_values(by = 'expe_num')
#画图
parsed_expe.boxplot(column=['salary_min','salary_max'], by='expe_num',rot = 30,fontsize = 14, figsize = (10,5))
plt.xticks(range(7),lables)
plt.savefig('各不同工作经验段之间薪酬的差异.jpg', dpi=600) 
plt.show()

在这里插入图片描述与学历相比,不同工作经验带来的薪酬差距要大得多,无论从最低薪酬还是最高薪酬来看,都能看到薪酬随工作经验的明显递增趋势,特别是工作3-5年后,薪酬增长速度较快。如下图所示,这里要求10年以上工作经验的岗位仅有2个,因此也不具有代表性
在这里插入图片描述

岗位需求分析

import jieba
import re#转成字符串格式,并将所有字母转化为大写,方便分析
t = ''.join(parsed['desc'].tolist())
t = t.upper()#清除无关内容(序号、特殊符号等)
pattern = re.compile(r'\d[.|\.|、]')
pattern1 = re.compile(r'\s')
t = re.sub(pattern,'', t)
t = re.sub(pattern1, '', t)
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~【】◆,;、。()':t = t.replace(ch, "") 
t = t.replace('\xa0','')#使用jieba库分词
words = jieba.lcut(t)
counts = {}
for word in words:           counts[word] = counts.get(word,0) + 1#给分词字典添加技能类词汇,方便识别
ls_add = 'SQL,PYTHON,SPSS,TABLEAU,OFFICE,EXCEL,PPT,HADOOP,JAVA,R,SAS,SPARK,HIVE,WORD,ABTEST,MYSQL,MATLAB'.split(',')
for i in ls_add:jieba.add_word(i)#不断调整,删除无关字符    
excludes = {'的','和','等','有','数据','分析','及','及','对','并','数据分析','相关','优先','能力','进行','与','熟悉','要求','使用','需求','团队','以上','负','熟练','或','良好','以上学历','年','公司','为','任','专业','具备','能','提供','具有','项目','互联网','者','支持','挖掘','模型','建模','能够','强','具','统计','开发','了解','监控','设计','大','中','应用','指标','建议','建立','客户','根据','完成','通过','研究','体系','管理','行为','技术','平台','部门','较','提出','参与','较','较强','软件','3','推动','掌握','基于','一定','理解','从','精通','合','2','至少','包括','发展','协助','搭建','一种','语言','优秀','资格','以及','在','各','熟练掌握','常用','处理','深入','落地','敏感度','结果','发现','方向','日常','数据处理','1','善于','指定','流程','精神','机器','快速','提升','方法','海量','系统','敏感','制定','其他','核心','各类','整理','建设','构建','协','输出','定期','完善','基础','提取','有效','实现','信息','方案','我们','运用','背景','针对','解决','活动','深度','你','如','结合','专业本科','解决方案','领域','给出','改进','专题','维护','驱动','跟踪','及时','编写','形成','规划','场景','考虑','实际','新','框架','任心','操','清晰','实施','5','机会','可','将','情况','类','特征'}
for word in excludes:del counts[word]

以上是使用jieba库分词,清除无关的字符等,下面绘制招聘需求里高频词汇的词云。

#绘制招聘需求里高频词汇的词云
words = []
counts_1 = []
for i in range(60):word, count = items[i]words.append(word)counts_1.append(count)
from pyecharts import WordCloud
wordcloud = WordCloud(width=700, height=500)
wordcloud.add("", words, counts_1, word_size_range=[20, 100])
wordcloud

在这里插入图片描述提取1472条招聘岗位的岗位说明信息中的高频词汇,绘制的词云图如上。可以明显看到‘业务’、‘产品’、‘运营’、‘经验’、‘沟通’、‘用户’、‘行业’、‘报告’等字眼,可以看出:

  1. 数据分析这个岗位和业务是分不开的,数据分析是为业务提供支持的,也正因此,企业更愿意招聘有工作经验的,因为相对应届毕业生而言,他们有更强的业务理解能力,这也告诉我们不要陷入一味地学习技能的陷阱里,平时也要多关注行业信息、多接触业务,培养自己的业务理解能力、逻辑思维能力
  2. 很多公司的数据分析师的职能和产品、运营没有清楚的界限,通常一个数据分析师也充当了产品经理、运营人员的角色,因此也会有很好的沟通能力、表达能力方面的要求,在选择工作的时候一定要看清这个公司的数据分析师到底是做什么的

接下来在看现在企业招聘数据分析师一般要求哪些技能:

ls_add = 'SQL,PYTHON,SPSS,TABLEAU,OFFICE,EXCEL,PPT,HADOOP,JAVA,R,SAS,SPARK,HIVE,WORD,ABTEST,MYSQL,MATLAB'.split(',')
ls_num = []
for i in ls_add:ls_num.append(t.count(i))
ls = list(zip(ls_add, ls_num))
ls.sort(key = lambda x:x[1],reverse=True)
ls_tec,ls_count = zip(*ls)
ls_count#统计各技能出现的频次,绘制条形图
bar1 = Bar("技能需求条形图")
bar1.add("", ls_tec[1:], ls_count[1:],xaxis_rotate= -30 , is_label_show=True,is_datazoom_show=True,datazoom_type="both", datazoom_range=[7, 16])
bar1

在这里插入图片描述对招聘的技能要求进行提取【注意:这里将R排除了,因为没能成功有效统计R技能需求的实际岗位数量】,可以看到:

  1. SQL依旧是数据分析师的基础必备技能,被提及次数最多
  2. python略微超过excel,说明python也逐渐受到数据分析师的重视,但是excel仍然是职场必备技能之一
  3. 大数据工具Hadoop、Spark,说明部分企业的数据分析师也兼大数据的相关工作
  4. 可视化工具Tableau正在逐渐受到重视

最后,再给出一个使用Jupyter完成整个流程的截图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50892.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OGG-01028分析处理

1.现象 ogg的安装目录使用率达到100%&#xff0c;果断时间会释放短时间又会达到使用率100%。 2.分析 2.1 如果是队列文件问题不应该自己释放短时间又达到100%&#xff0c;查看到底是哪个目录导致。 du -sm /home/oracle/oggsource/*|sort -n 83 replicat 277 dir…

医药行业数据分析软件(含非付费)--对比分析

目前主要使用的医药数据软件分为两大类&#xff0c;一个是免费医药数据软件&#xff0c;一个是商业综合类的医药数据软件。医药数据软件的本质是让用户能在最短时间内在一个网站把想要的信息通过检索一览无余&#xff0c;因此&#xff0c;全面性、准确性、及时性是该类数据库的…

医药行业的销售数据如何分析?

本文转自公众号叨叨侠爱叨叨 ▌一、医药行业的体系 医疗属于大健康行业&#xff0c;大健康&#xff08;Healthcare Industry&#xff09;行业一般是指经济体系中向患者提供预防、治疗、康复等服务部门的总和&#xff0c;更接近于我国的医疗卫生服务业。 按照国际行业分类标准来…

医药产品经理ims数据分析

如果说某个药品的销售额在对比去年同月下降40%&#xff0c;而你身为该药品的产品经理是否能快速找出其原因&#xff1f;这是医药产品经理、医药市场bd对于数据异动分析的考题&#xff0c;侧面反映了医药行业数据分析对于医药产品经理这个职位的重要性。 说到医药行业数据分析先…

数据分析案例-大数据相关招聘岗位可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

医药销售数据分析

阅读原文 一、数据源 来自某医药公司的产品销售数据&#xff0c;时间为 3 月到 5 月&#xff0c;共 48 个 Excel 表格。包含订单信息、售后信息、用户信息以及对应销售人员信息等。 加载合并后得到的原始数据如下&#xff1a; 二、数据清洗 清洗流程以及对应细节 加载数据源 …

【Python数据分析】——药品销售数据分析(完整项目实战)

一、前言 这篇文章找来了有关药品销售数据进行案例分析练习&#xff0c;利用适当的统计方法对相关数据进行月均消费次数、月均消费金额、客单价和消费趋势等几个业务指标进行分析。 分析过程为&#xff1a;数据获取、数据清洗、建模分析、可视化 二、数据获取 &#xff08;…

奇瑞汽车回应要求员工周六上班:本意不是压榨员工;Google发布史上最大通才模型PaLM-E;Chrome 111发布|极客头条

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&…

ChatGPT和知识图谱视频笔记

目录 Prompt tuing Instruction-tuning 知识图谱 prompting tuning未对模型参数进行更新&#xff0c; Fine tuning和Instruction tuning都对模型参数进行了更新 Prompt tuing prompt简单理解就是提问的问题 Instruction-tuning 知识图谱

新浪股票接口获取历史数据

这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用&#xff0c;因为新浪没有公开关于其接口的官方文档&#xff0c;所以通过各种百度差了很多关于新浪股票接口的使用&#xff0c;不过大家基本都是转载或者直接复制&#xff0c;对于实时数据的获取讲的很详细&#…

ChatGPT爆火之下,最有料如何赋能企业数字化升级

随着数字技术的飞速发展&#xff0c;人们的生活逐渐被数字技术所渗透。从智能家居到智能手机&#xff0c;从智能交通到智能医疗&#xff0c;数字技术已经成为了我们生活中不可或缺的一部分。最近火爆的ChatGPT就是一个很好的例子&#xff0c;作为新兴的数字技术&#xff0c;不仅…

硬件预算最高直降46倍!低成本上手AIGC和千亿大模型,一行代码自动并行,Colossal-AI再升级

最近&#xff0c;AI大模型连续火爆出圈&#xff0c;人工智能生成模型&#xff08;AIGC&#xff09;的热度尚未褪去&#xff0c;聊天机器人ChatGPT便引发全网热议&#xff0c;两周吸引百万用户。还有卷趴一半程序员的AlphaCode&#xff0c;生成全新蛋白质的ESM2等&#xff0c;不…

chatgpt赋能python:用Python优化电气工程

用Python优化电气工程 电气工程是现代世界的基础&#xff0c;在我们的日常生活中随处可见电气设备和电子系统的影响。Python是一种流行的编程语言&#xff0c;能够优化电气工程的许多方面。本文将介绍如何使用Python来增强电气工程的效率和准确性。 数据分析 Python是一种强…

chatgpt赋能python:Python模拟电路:实现更快,更高效的电路设计

Python模拟电路&#xff1a;实现更快&#xff0c;更高效的电路设计 当涉及到电路设计和模拟时&#xff0c;Python已经成为了工程师们首选的编程语言之一。无论是进行数字电路还是模拟电路设计&#xff0c;Python都表现出了它的可靠性和灵活性。 在这篇文章中&#xff0c;我们…

AI-领航-人生第一节-AI课,30位AI领域极客 汇集1000小时Al心得

保姆级教学 从入门到精通&#xff0c;0基础新手小白都能学 142课程体系 AI先导课-认识Al 四大领域技能-干货学习 GPT智能写作 GPT营销与策划] AI图像与视频 AI职场提效 复盘课程升级 A使用1000小时的高阶心得|高阶课程展示 课程大纲&#xff1a; 一、先导课 什么是G…

【免费AI教程大合集】做一个不轻易被割的韭菜

说明&#xff1a;本篇分享的内容不含任何商业推广&#xff0c;也不会收取任何费用&#xff0c;并且属于网络上各路大咖整理的资源文档&#xff0c;完全免费&#xff01;&#xff01;&#xff01; 前言&#xff1a; 在当今数字化和智能化的时代&#xff0c;人工智能已然成为一种…

外贸开发信 html,外贸开发信怎么写,外贸客户开发信写作技巧及注意事项(附范文模板)...

外贸开发信的7大写作技巧 1、开发信开头称呼要恰当 有些人写外贸开发信不喜欢加称呼&#xff0c;甚至连简单的“你好”都忽略&#xff0c;直接开始正文内容。孰不知就像在传统的信件上一样&#xff0c;写上称呼是一种礼貌的象征。 2、内容言简意赅 外贸开发信标题要足够清晰明确…

openai(chatgpt)+python详细使用方法

网络上很多直接就是上这么串代码的 ​ import openai#获取api-key openai.api_key "你的apikey"response openai.Completion.create(model"text-davinci-003",prompt"请用python语言生成一个二分法查找算法",max_tokens256, ) messagerespons…

善于发现自己的优势,他与好友合伙创业,年销售做到近15亿

1965年&#xff0c;吴长江出生在重庆铜梁的一个矿工家庭。在他的记忆中&#xff0c;整个小学&#xff0c;都是光着脚上学&#xff0c;但常常给父母拿回来的是满分的试卷。 高中毕业后&#xff0c;吴长江考入西北工业大学&#xff0c;学的是飞机制造。毕业后进入陕西汉中一家国…

创业者应远离20个创业趋势:限时折扣 签到 交友

条条大路通罗马&#xff0c;非要在独木桥上论成败&#xff0c;那不是自寻烦恼吗&#xff1f; 导语&#xff1a;条条大路通罗马&#xff0c;非要在独木桥上论成败&#xff0c;那不是自寻烦恼吗?美国科技博客网站BusinessInsider周二就评选出20个创业者应该远离的创业趋势&#…