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

news/2024/5/19 1:56:21/文章来源:https://blog.csdn.net/weixin_43248939/article/details/88386328

确定目标

  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.luyixian.cn/news_show_874683.aspx

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

相关文章

【网站流量分析】某网站网站流量分析报告(CNZZ统计)

某网站流量分析报告 1思维导图2流量分析2.1趋势分析2.2对比分析2.3当前在线 3来源分析3.1来源分类3.2搜索引擎3.3搜索词3.4受访界面 4访客分析4.1区域分布4.2运营商4.3终端4.4新老访客4.5忠诚度4.6活跃度4.7用户结构 5结论与建议5.1结论5.2建议 1思维导图 2流量分析 2.1趋势分…

大流量网站的底层系统架构

动态应用&#xff0c;是相对于网站静态内容而言&#xff0c; 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用…

某网站电商运营数据分析案例

PHPStat是目前国内最专业的电子商务数据分析运营平台&#xff0c;专注为电子商务企业提供网站访客转化行为、订单分析、商品分析、页面转化分析、营销转化分析的整体优化解决方案。目前PHPStat已经成功为苏宁易购、湖南卫视快乐购、天天网、某网站、鸿星尔克、高鸿商城、以纯旗…

MySQL在大型网站的应用架构演变

MySQL在大型网站的应用架构演变 【编者按】作为最流行的开源数据库&#xff0c;MySQL被广泛应用在Web应用程序以及其它中小型项目上。然而不可忽视的是&#xff0c;在许多大型IT公司中&#xff0c;MySQL在高度优化和定制化后&#xff0c;已逐渐偏离了原有的开源版本&#xff0c…

大型网站技术架构探讨

&#xfeff;&#xfeff; 目录&#xff1a; 1、大型网站架构的目标与挑战 2、网站架构演变及其技术脉络 3、架构设计理论与原则 何为“大型”网站&#xff1f; 没有统一的判断标准&#xff0c;流量大小是一个重要指标&#xff08;日均流量至少IP>1,000,000才算大型网站&…

如何构建高扩展性网站?

&#xfeff;&#xfeff; 阅读目录 主要内容 化简方程 分布工作 横向扩展设计 使用正确的工具 不要做重复的工作 积极利用缓存 从错误中吸取教训 数据库原则 容错设计与故障控制 避免或分发状态 异步通信和消息总线 其他原则 参考 主要内容 本书从多个方面围绕高…

精选31个网站界面设计实践教程

设计一个网站从来都不是一件容易的事。如果你去询问一位在该行业有丰富经验的网页设计师&#xff0c;他会告诉你以前根本没有太多关于Web设计/开发的资源、文章和各种沟通交流平台&#xff0c;更不用说高质量免费教程了。 如果您打算建立自己的个人网站或者重新设计您的博客的主…

10个提高网站可用性的实用技巧

不论是企业网站、个人博客&#xff0c;或者购物网站、游戏网站&#xff0c;我们都希望能吸引访问者并且给他们留下愉快的访问体验。 可用性是用户体验的一种度量&#xff0c;它可以用访问者完成网站功能的方便程度来描述——无论是通过自身知识还是通过学习新方式来完成这种功能…

基于ASP.NET的网站发布、打包和安装

安装配置环境&#xff1a; 操作系统&#xff1a;Win7旗舰版 Visual Studio版本&#xff1a;VS2010 一、在发布、打包和安装网站之前&#xff0c;首先需要安装配置IIS。Win7默认已安装IIS。 1、打开IIS管理器功能。 打开控制面板-->程序->打开或关闭Windows功能 2、打…

ASP.NET网站发布中的错误类型

错误类型1&#xff1a; 解决方法&#xff1a;删除配置文件web.config里面的 <authentication mode"Windows" />行。 错误类型2&#xff1a; 分析&#xff1a;.Net Framework的版本不对应&#xff0c;要求Framework版本为4.0。 解决方法&#xff1a; 1、安装4.…

fastjson反序列化方法JSON.parseObject(String str,ClassT clazz)

fastjson这一工具包帮助我们进行java对象和json格式的字符串之间的相互转换。对象到字符串的过程&#xff0c;我们称之为序列化&#xff1b;反之&#xff0c;我们称为反序列化。 现在我们就来谈谈fastjson提供的反序列化方法&#xff0c;本篇只讨论按照指定的字节码返回相应对…

视频网站套上CDN是什么效果?

1、什么是CDN加速&#xff1f; 内容分发网络&#xff08;Content Delivery Network&#xff09;&#xff0c;是在现有 Internet 中增加的一层新的网络架构&#xff0c;由遍布全国的高性能加速节点构成。这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容&#xff0c…

CMU-CSAPP-深入理解计算机系统-P1-courseoverview

首先让我们看一个实例 原因是数据是如何在内存中布局。C不会进行边界检查&#xff0c;容易崩溃 这两种程序功能是一样的 但是他们的时间完全不一样

1001、单机安装基于LNMP结构的WordPress网站、web与数据库服务分离

project 第1部分 文章目录 project 第1部分project1 整体架构一、单机安装基于LNMP&#xff08;Linux Nginx Mysql PHP&#xff09;结构的WordPress网站1、 基本环境准备2、配置nginx3、配置数据库服务器4、部署wordpress 二、web与数据库服务分离准备数据库服务器自由扩展&…

阿里云——手把手教你搭建个人网站

言归正传&#xff0c;阿里算是做云服务最早的一批了&#xff0c;当时的其他几家有名气的现在基本都死了&#xff0c;只有阿里这支部队熬过来了&#xff0c;就我了解的几家云商做个简单的介绍&#xff1a; 青云&#xff1a;有情怀有理想&#xff0c;不过短板也很明显&#xff0c…

Servlet+JSP+MySQL社交网站

在网站架构上&#xff0c;采用MVC设计模式&#xff0c;实现将网站的页面显示与业务逻辑分离&#xff0c;使其各司其职&#xff1b;在数据库操作上&#xff0c;利用DAO模式&#xff08;Data Access Object数据存取对象&#xff09;技术&#xff0c;将程序中的类对象映射成为数据…

《大型网站系统与JAVA中间件实践》pdf版电子书网盘附下载链接+仪式感技术书阅读法

附Java/C/C/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全&#xff1a; 书单导航页&#xff08;点击右侧 极客侠栈 即可打开个人博客&#xff09;&#xff1a;极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50本&#xff08;珍藏版) ②【算法…

《大型网站技术架构:核心原理与案例分析李智慧》pdf版电子书网盘附下载链接+仪式感技术书阅读法

附Java/C/C/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全&#xff1a; 书单导航页&#xff08;点击右侧 极客侠栈 即可打开个人博客&#xff09;&#xff1a;极客侠栈 ①【Java】学习之路吐血整理技术书从入门到进阶最全50本&#xff08;珍藏版) ②【算法…

SSM(springMVC+spring+mybatis)旅游网站项目源码,课程设计(毕业设计)

最近在翻文件的时候发现大四时的毕业设计&#xff0c;一个旅游网站&#xff0c;虽然代码写得很烂&#xff0c;但还是可以跑起来&#xff0c;想着删了还不如分享一下&#xff0c;毕竟我也觉得做毕设是真的无聊又浪费时间......... 整体功能图(其实是做得很敷衍&#xff0c;大部…

如何使用TFilter网站快速获取FIR滤波器的相关系数

最近需要对数据进行滤波&#xff0c;考虑到赛灵思已经有免费的FIR滤波器的ip核&#xff0c;便准备使用硬件进行滤波。但是不论是怎样使用FIR滤波器&#xff0c;都离不开相关系数的确定。实际设计中&#xff0c;不可能拿笔去一个个数值的计算&#xff0c;因此需要借助工具。 网上…