Python、Java 薪资最高,C# 垫底:分析什么编程语言最赚钱!

本文主要用Python爬取拉勾网不同编程语言职位信息,包括Python岗、Java岗、C++岗、PHP岗、C#岗位(5岗),再用R语言对影响薪资的因素进行分析。由于拉勾网的职位信息只显示30页,一页15个职位信息,如果单独爬取一个城市的岗位信息,只有几页是匹配的信息,信息量太小,分析没有说服力。因此,本文爬取拉勾网全国职位信息。主要包括三部分内容:

爬取拉勾网5岗职位信息,以Python岗为例;

以Python岗位信息为例,分析影响薪资的因素;

5岗之间薪水因素影响比较分析。

”我自己是一名从事了十余年的后端的老程序员,辞职后目前在做讲师,近期我花了一个月整理了一份最适合2018年学习的JAVA干货(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)从事后端的小伙伴们都可以来了解一下的,这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来。“

加QQ群:585550789(名额有限哦!)

爬取拉勾网5岗职位信息——以Python岗为例

我们抓取的信息包括Python岗位名称、公司名称、薪资、工作经验、学历、公司规模、公司福利。

##以python岗位为例,运用selenium+Chrome()爬取岗位信息# coding=UTF-8fromlxmlimportetreefromseleniumimportwebdriverimporttimeimportcsvbrowser = webdriver.Chrome()browser.get('https://www.lagou.com/jobs/list_PYTHON?px=default&city=%E5%85%A8%E5%9B%BD#filterBox')browser.implicitly_wait(10)defget_dates(selector):items = selector.xpath('//*[@id="s_position_list"]/ul/li')foriteminitems:yield{'Name': item.xpath('div[1]/div[1]/div[1]/a/h3/text()')[0],'Company': item.xpath('div[1]/div[2]/div[1]/a/text()')[0],'Salary': item.xpath('div[1]/div[1]/div[2]/div/span/text()')[0],'Education': item.xpath('div[1]/div[1]/div[2]/div//text()')[3].strip(),'Size': item.xpath('div[1]/div[2]/div[2]/text()')[0].strip(),'Welfare': item.xpath('div[2]/div[2]/text()')[0] }defmain():i =0foriinrange(30): selector = etree.HTML(browser.page_source) browser.find_element_by_xpath('//*[@id="order"]/li/div[4]/div[2]').click() time.sleep(5) print('第{}页抓取完毕'.format(i+1))foriteminget_dates(selector): print(item)withopen('Py.csv','a', newline='')ascsvfile:##Py.csv是文件的保存路径,这里默认保存在工作目录fieldnames = ['Name','Company','Salary','Education','Size','Welfare'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader()foriteminget_dates(selector): writer.writerow(item) time.sleep(5) browser.close()if__name__=='__main__': main()

抓取结果如下:

将抓取结果循环写入csv文件:

此外还抓取了Java岗、C++岗、PHP岗、C#岗位4岗的信息,代码和抓取Python岗位信息类似。

以Python岗位信息为例,分析影响薪资的因素

这里包括数据清洗部分和数据分析部分两部分内容。

数据清洗部分

data<-read.csv("E://Data For R/RData/Py.csv")data[sample(1:nrow(data),size=10),]

在抓取过程中,由于将Python字典循环写入csv文件,因此列名也被循环写在csv文件中。

考虑本文主要分析影响薪资的因素,这里去除Name和Company两列。

##去除Name和Company两列DATA<-data[,-c(1,2)]##将python字典循环写入csv文件时,标题也会被写入,去除多余的标题##查找哪些行是标题重复的行which(DATA$Salary %in%"Salary") [1]163248648096102118134150166182198214230246262278294310326342358374390406422438454470486502518[34]534550566##去除多余的标题所在的行DATA<-DATA[-(which(DATA$Salary %in%"Salary")),]dim(DATA)[1]5454

1.变量Salary

变量Salary一般都是范围值,用“-”连接,但是不排除有XXK以上,例如10k以上这种表示形式,或者其他形式,这里需要处理一下。

##如果薪资是一个范围值,都是"-"连接,注意,薪资是一个范围值,匹配末尾结束k值需要注意,有大写K和小写k两种形式。newdata<-DATA[grep('\\-',DATA$Salary),]dim(newdata)[1] 544 4##对比前面dim(DATA),说明薪水少了一行,Salary具有其他的表示形式。##这里将范围薪水的值分成底薪和高薪两部分,后面取平均值来表示薪水library(tidyr)library(stringr)newdata<-separate(data=newdata,col=Salary,into=c("lowsalary","highsalary"),sep="-")##分别去除后面的k值,注意k有大写和小写两种形式newdata$lowsalary<-str_replace(newdata$lowsalary,'k|K',"")## |表示或的关系newdata$highsalary<-str_replace(newdata$highsalary,'k|K',"")newdata$lowsalary<-as.numeric(newdata$lowsalary)##转换数据类型newdata$highsalary<-as.numeric(newdata$highsalary)newdata$salary<-(newdata$lowsalary+newdata$highsalary)/2newdadat<-newdata[,-c(1,2)]##去除原有的lowsalary和highsalary

2.变量Education

###Education部分##首先将Education中工作经验和学历分开newdata<-separate(data = newdata,col=Education,into=c("Experience","Graduate"),sep = '/')table(newdata$Experience)经验1-3年 经验1年以下 经验3-5年 经验5-10年 经验不限 经验应届毕业生187626146377table(newdata$Graduate) 本科 不限 大专 硕士44727637

3.变量Size

##此处以公司人数作为描述公司规模的标准newdata<-separate(data=newdata,col=Size,into=c('Type','Rong','Number'),sep='/')table(newdata$Number)15-50人150-500人2000人以上50-150人500-2000人 少于15人761391171198211table(newdata$Rong)A轮 B轮 C轮 D轮及以上 不需要融资 上市公司 天使轮 未融资86815430132803348##将Type去除 newdata<-newdata[,-3]

4.变量Welfare

Welfare<-newdata[,"Welfare"]##将Welfare去除newdata<-newdata[,-5]head(newdata)

到此,数据清洗部分内容全部结束。

数据分析部分

1.工资与工作年限的关系

library(ggplot2)ggplot(newdata,aes(x=Experience,y=salary))+geom_boxplot(col="red")

符合大众的认知,从事Python的应届毕业生起始工资平均值在5K左右,且薪资水平跨度最小。经验5-10年的工资水平跨度最大,主要可能是因为,有一部分转为技术管理岗位,工资较低的可能还在继续码代码,是不是对广大同胞们的警告啊.......

2.工资与学历的关系(专科,本科,研究生,不限)

ggplot(newdata,aes(x=Graduate,y=salary))+geom_boxplot(col="red")

这里是否能说明学历在一定程度上的重要性?学历本科的工资跨度比较大,因为工作经验的不同导致了薪资的差异。

3.工资与公司融资的关系

ggplot(newdata,aes(x=Rong,y=salary))+geom_boxplot(col="red")

对于这部分知识是盲点,但是可以看出融资公司(上市也是一种融资方式)比没有融资的公司平均工资要高出不少,这部分是不是可以是以后找工作的一个风向标......

4.工资与公司大小的关系

公司规模越大,平均的工资也越高。

5.工资与工作时间和学历的关系

library(ggthemes)library(scales)ggplot(newdata,aes(x=Experience,y=salary,fill=factor(Graduate)))+geom_boxplot()+geom_hline(aes(yintercept=20),color="red",linetype="dashed",lwd=1)+scale_y_continuous(labels=dollar_format())+theme_few()

这张图告诉我们,在大部分情况下,没(Ren)钱(Chou)就要多读书。不管是经验经验1年以下、经验3-5年、经验5-10年、经验不限的情况下,拥有硕士学历的平均收入都普遍高于本科,本科都高于大专(这里完全没有歧视低学历之意)。

6.公司福利的云图

##公司福利的云图library(jiebaR)Welfare<-as.character(Welfare)wk = worker()seg_words<-wk[Welfare]library(plyr)library(wordcloud)tableWord<-count(seg_words)windowsFonts(myFont=windowsFont("华文彩云")) ##使用华文彩云字体wordcloud(tableWord[,1],tableWord[,2],random.order=F,col= rainbow(100),family="myFont")

现在公司的福利贴有“弹性工作,氛围好,团队,大牛,技术,五险一金”等标签来吸引求职者眼球。

5岗之间薪水因素影响比较分析

1.Python岗、Java岗、C++岗、PHP岗、C#岗位的平均薪水

抓取拉勾网职位信息,可以看出Python和Java的平均薪资较高,C#的平均工资最低。

由此也验证Python近几年火热的态势,由于AI的火热,Python的需求越来越大,传统的Java也比较强势,薪资待遇较高。

2.相同工作经验不同职位信息薪水比较

对于不同工作经验,不同编程语言平均薪水还是有较大的差异。

3.相同学历信息不同职位信息薪水比较

通过硕士、本科、大专、不限四种比较,硕士的总体薪资高于本科。

4.同一职位不同学历信息薪水比较

总的看来,在每个职业,硕士学历的平均薪水高于本科,本科的平均薪水高于大专。

”我自己是一名从事了十余年的后端的老程序员,辞职后目前在做讲师,近期我花了一个月整理了一份最适合2018年学习的JAVA干货(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)从事后端的小伙伴们都可以来了解一下的,这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来。“

加QQ群:585550789(名额有限哦!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • 今天学到了一个新的知识点。 气球式学习和水母式学习。 1.气球式学习 想想我们吹气球时的样子,一直不停的往里吹气。...
    杨昊霖我能为你做什么阅读 917评论 0 0
  • “人总是因为抱有过多的期待而让自己承担过大的压力。” “可悲的是就算知道有些东西不切实际,我们依旧舍不得放弃。” ...
    东谋某阅读 309评论 0 3
  • 今天妈妈说我们要从老家回来,我特别兴奋,为什么呢,我在老家感觉很不习惯。房子里有老鼠,有一只老鼠还爬到妈妈的...
    张余蔚阅读 308评论 0 1
  • 文/一土 电影也好,书本也好,总有故事引人入胜。小说作为文学的主要形式,也在力求讲好一个故事。人在喝酒时,所表达的...
    雨下撒哈拉阅读 273评论 0 1