当前位置: 首页 > 科技观察

Python还是Java?大数据解读学什么语言更赚钱

时间:2023-03-21 14:57:44 科技观察

本文主要使用Python爬取拉勾网不同编程语言的职位信息,包括:Python帖子、Java帖子、C++帖子、PHP帖子、C#帖子(5篇);用R语言分析影响薪水的因素。由于拉勾网的招聘信息只展示了30页,每页15条招聘信息,如果单独爬取一个城市的招聘信息,只有几页是匹配信息,信息量太少,分析不出来没有说服力。因此,本文爬取了拉勾网的全国招聘信息。主要分为三个部分:爬取拉勾网5岗位信息--以Python岗位为例以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],'工资':item.xpath('div[1]/div[1]/div[2]/div/span/text()')[0],'教育':item.xpath('div[1]/div[1]/div[2]/div//text()')[3].strip(),'Size':item.xpath('div[1]/div[2]/div[2]/text()')[0].strip(),'福利':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(选择器):print(item)withopen('Py.csv','a',newline='')ascsvfile:##Py.csv为文件的保存路径,默认保存在工作目录下fieldnames=['姓名','公司','薪资','学历','规模','福利']writer=csv.DictWriter(csvfile,fieldnames=fieldnames)writer.writeheader()foriteminget_dates(selector):writer.writerow(item)time.sleep(5)browser.close()if__name__=='__main__':main()抓取结果如下:循环写入抓取结果到csv文件:另外,4篇Java帖,C++帖子、PHP帖子、C#帖子被抓取的信息、代码、抓取Python作业信息都差不多。2、以Python职位信息为例,分析影响薪酬的因素。这包括两个部分:数据清洗和数据分析。数据清洗部分data<-read.csv("E://DataForR/RData/Py.csv")data[sample(1:nrow(data),size=10),]在爬取过程中,由于python字典是循环写在csv文件中的,所以列名也是循环写在csv文件中的。考虑到本文主要分析影响薪水的因素,这里去掉了Name和Company栏。##去掉Name和CompanyDATA两列<-data[,-c(1,2)]##python字典循环写入csv文件时,title也会被写入,多余的titlewillberemoved##Whichlinestofind是标题重复的行which(DATA$Salary%in%"Salary")[1]163248648096102118134150166182198214230246262278294310326342358374390406422438454470486502518[34]534550566##去除多余的标题所在的行DATA<-DATA[-(which(DATA$Salary%in%"Salary")),]dim(DATA)[1]54541。VariableSalaryVariableSalary一般是一个范围值,用“-”连接,但也不排除有XXK以上,比如10k以上,或者其他形式,这里我们需要处理一下。##如果薪水是范围值,则用“-”连接。请注意,薪水是一个范围值。比赛结束时需要注意最后的k值。有两种形式:大写K和小写k。newdata<-DATA[grep('\\-',DATA$Salary),]dim(newdata)[1]5444##与前面的dim(DATA)相比,表示salary少了一行,而Salary有其他表示。##这里将范围salary的值分为底薪和高薪两部分,后面取平均值表示salarylibrary(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和highsalary2。variableEducation###Education部分##先把Educationnewdata中的工作经历和学历分开<-separate(data=newdata,col=Education,into=c("Experience","Graduate"),sep='/')table(newdata$Experience)experience1-3年经验1年以下经验3-5年经验5-10年经验不限作为描述公司规模的标准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##RemoveTypenewdata<-newdata[,-3]4.VariableWelfareWelfare<-newdata[,"Welfare"]##去掉Welfarenewdata<-newdata[,-5]head(newdata)这里数据清洗部分全部在数据分析部分1.工资和工龄库的关系(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.工资和工时与学历的关系库(ggthemes)库(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)钱(周)多读书。不管是1年以下经验,3-5年经验,5-10年经验,还是无限经验,硕士的平均收入普遍高于学士学位,平均收入为学士学位高于大专。(这里没有歧视低学历的意思)6.公司福利云图##公司福利云图库(jiebaR)福利<-as.character(福利)wk=worker()seg_words<-wk[福利]library(plyr)library(wordcloud)tableWord<-count(seg_words)windowsFonts(myFont=windowsFont("中国彩云"))##使用中国彩云字体wordcloud(tableWord[,1],tableWord[,2],random.order=F,col=rainbow(100),family="myFont")现在公司的福利贴上有“弹性工作、氛围好、有团队、有才、有技术、五险一金”等标签吸引求职者的注意。三、五个岗位薪资因素影响对比分析1、Python岗、Java岗、C++岗、PHP岗、C#岗的平均薪资。抓取拉勾网的职位信息,可以看出python和java的平均工资都比较高。C#***的平均工资。这也验证了近几年python的火爆趋势。由于AI的普及,对python的需求越来越大,而传统的java也比较强势,薪资较高。2、相同工作经历的不同工作信息薪资对比对于不同的工作经验,不同编程语言的平均薪资还是相差较大的。3、相同学历信息不同职位信息薪资对比通过硕士、本科、大专、不限四项对比,硕士整体薪资高于本科。4、同一职位不同学历信息薪资对比一般来说,在各个职业中,硕士平均薪资高于本科,本科平均薪资高于大专大学。