Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

萬年的編程語言之爭,這次要用薪資高低來決定勝負了!

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

本文主要用Python爬取拉勾網不同編程語言職位信息,包括Python崗、Java崗、C++崗、PHP崗、C#崗位(5崗),再用R語言對影響薪資的因素進行分析。由於拉勾網的職位信息只顯示30頁,一頁15個職位信息,如果單獨爬取一個城市的崗位信息,只有幾頁是匹配的信息,信息量太小,分析沒有說服力。因此,本文爬取拉勾網全國職位信息。主要包括三部分內容:

  • 爬取拉勾網5崗職位信息,以Python崗為例;
  • 以Python崗位信息為例,分析影響薪資的因素;
  • 5崗之間薪水因素影響比較分析。


Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

爬取拉勾網5崗職位信息——以Python崗為例


我們抓取的信息包括Python崗位名稱、公司名稱、薪資、工作經驗、學歷、公司規模、公司福利。

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

<code> 
 

from

 lxml 

import

 etree

from

 selenium 

import

 webdriver

import

 time

import

 csv browser = 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

)

def

 

get_dates

(selector)

:

        items = selector.xpath(

'//*[@id="s_position_list"]/ul/li'

)         

for

 item 

in

 items:             

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

]             }

def

 

main

()

:

    i = 

0

    

for

 i 

in

 range(

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

))         

for

 item 

in

 get_dates(selector):             print(item)         

with

 open(

'Py.csv'

'a'

, newline=

''

as

 csvfile:               fieldnames = [

'Name'

'Company'

'Salary'

'Education'

'Size'

'Welfare'

]             writer = csv.DictWriter(csvfile, fieldnames=fieldnames)             writer.writeheader()             

for

 item 

in

 get_dates(selector):                 writer.writerow(item)         time.sleep(

5

)     browser.close()

if

 __name__==

'__main__'

:     main()/<code>

抓取結果如下:

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

將抓取結果循環寫入csv文件:

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

此外還抓取了Java崗、C++崗、PHP崗、C#崗位4崗的信息,代碼和抓取Python崗位信息類似。


Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

以Python崗位信息為例,分析影響薪資的因素


這裡包括數據清洗部分和數據分析部分兩部分內容。

數據清洗部分

<code>

data

"E://Data For R/RData/Py.csv")

data

[sample(

1

:nrow(

data

),size=

10

),]/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

在抓取過程中,由於將Python字典循環寫入csv文件,因此列名也被循環寫在csv文件中。

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

考慮本文主要分析影響薪資的因素,這裡去除Name和Company兩列。

<code> 

DATA

which(DATA$Salary

 

%in%

 

"Salary"

)

 

[1]

  

16

  

32

  

48

  

64

  

80

  

96

 

102

 

118

 

134

 

150

 

166

 

182

 

198

 

214

 

230

 

246

 

262

 

278

 

294

 

310

 

326

 

342

 

358

 

374

 

390

 

406

 

422

 

438

 

454

 

470

 

486

 

502

 

518

[34]

 

534

 

550

 

566

DATA 

%in%

 

"Salary"

)),]

dim(DATA)

[1]

 

545

   

4

/<code>

1.變量Salary

變量Salary一般都是範圍值,用“-”連接,但是不排除有XXK以上,例如10k以上這種表示形式,或者其他形式,這裡需要處理一下。

<code> 
newdata'\\-',DATA$Salary),]
dim(newdata)
[

1

544

   

4

library(tidyr) library(stringr) newdata"lowsalary",

"highsalary"

),sep=

"-"

) newdata$lowsalary'k|K',

""

) newdata$highsalary'k|K',

""

) newdata$lowsalaryas.numeric(newdata$lowsalary) newdata$highsalaryas.numeric(newdata$highsalary) newdata$salary2 newdadat1,

2

)]/<code>

2.變量Education

<code> 
 

newdata 

=

 

newdata,col=Education,into=c("Experience","Graduate"),sep

 

=

 

'/'

)

table(newdata$Experience)

經驗1-3年

     

經驗1年以下

       

經驗3-5年

      

經驗5-10年

        

經驗不限

  

經驗應屆畢業生

    

187

               

6

             

261

              

46

              

37

               

7

 

table(newdata$Graduate)

 

本科

  

不限

  

大專

  

碩士

    

447

    

27

    

63

     

7

 

/<code>

3.變量Size

<code> 

newdata

table(newdata$Number)

 

15

-50

   

150

-500

  

2000

人以上

    

50

-150

  

500

-2000

    

少於15人

     

76

         

139

         

117

         

119

          

82

          

11

 

table(newdata$Rong)

A輪

          

B輪

          

C輪

    

D輪及以上

   

不需要融資

     

上市公司

       

天使輪

       

未融資

  

86

           

81

           

54

           

30

          

132

           

80

           

33

           

48

 

newdata

/<code>

4.變量Welfare

<code>

Welfare

<

-newdata

[,

"Welfare"

]

##將

Welfare

去除

newdata

<

-newdata

[,-5]

head

(

newdata

)/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

到此,數據清洗部分內容全部結束。

數據分析部分

1.工資與工作年限的關係

<code>

library

(ggplot2)

ggplot

(newdata,aes(x=Experience,y=salary))+

geom_boxplot

(col=

"red"

)/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

符合大眾的認知,從事Python的應屆畢業生起始工資平均值在5K左右,且薪資水平跨度最小。經驗5-10年的工資水平跨度最大,主要可能是因為,有一部分轉為技術管理崗位,工資較低的可能還在繼續碼代碼,是不是對廣大同胞們的警告啊.......

2.工資與學歷的關係(專科,本科,研究生,不限)

<code>

ggplot

(newdata,aes(x=Graduate,y=salary))+

geom_boxplot

(col=

"red"

)/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

這裡是否能說明學歷在一定程度上的重要性?學歷本科的工資跨度比較大,因為工作經驗的不同導致了薪資的差異。

3.工資與公司融資的關係

<code>

ggplot

(newdata,aes(x=Rong,y=salary))+

geom_boxplot

(col=

"red"

)/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

對於這部分知識是盲點,但是可以看出融資公司(上市也是一種融資方式)比沒有融資的公司平均工資要高出不少,這部分是不是可以是以後找工作的一個風向標......

4.工資與公司大小的關係

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

公司規模越大,平均的工資也越高。

5.工資與工作時間和學歷的關係

<code>

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

()/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

這張圖告訴我們,在大部分情況下,沒(Ren)錢(Chou)就要多讀書。不管是經驗經驗1年以下、經驗3-5年、經驗5-10年、經驗不限的情況下,擁有碩士學歷的平均收入都普遍高於本科,本科都高於大專(這裡完全沒有歧視低學歷之意)。

6.公司福利的雲圖

<code> 
library(jiebaR)
Welfareas.character(Welfare)
wk = worker()
seg_words"華文彩雲"))  
wordcloud(tableWord[,

1

],tableWord[,

2

],random.order=F,col= rainbow(

100

),family=

"myFont"

)/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

現在公司的福利貼有“彈性工作,氛圍好,團隊,大牛,技術,五險一金”等標籤來吸引求職者眼球。


Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

5崗之間薪水因素影響比較分析


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

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

抓取拉勾網職位信息,可以看出Python和Java的平均薪資較高,C#的平均工資最低。

由此也驗證Python近幾年火熱的態勢,由於AI的火熱,Python的需求越來越大,傳統的Java也比較強勢,薪資待遇較高。

2.相同工作經驗不同職位信息薪水比較

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

對於不同工作經驗,不同編程語言平均薪水還是有較大的差異。

3.相同學歷信息不同職位信息薪水比較

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

通過碩士、本科、大專、不限四種比較,碩士的總體薪資高於本科。

4.同一職位不同學歷信息薪水比較

Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

總的看來,在每個職業,碩士學歷的平均薪水高於本科,本科的平均薪水高於大專。


分享到:


相關文章: