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>##以python崗位為例,運用selenium+Chrome()爬取崗位信息
# coding=UTF-8

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:  ##Py.csv是文件的保存路徑,這裡默認保存在工作目錄
            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>datadata[sample(1:nrow(data),size=10),]/<code>
Python、Java 薪資最高,C# 墊底:分析什麼編程語言最賺錢!

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

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

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

<code>##去除Name和Company兩列
DATA##將python字典循環寫入csv文件時,標題也會被寫入,去除多餘的標題
##查找哪些行是標題重複的行

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
##去除多餘的標題所在的行
DATAdim(DATA)
[1] 545   4/<code>

1.變量Salary

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

<code>##如果薪資是一個範圍值,都是"-"連接,注意,薪資是一個範圍值,匹配末尾結束k值需要注意,有大寫K和小寫k兩種形式。
newdatadim(newdata)
[1] 544   4
##對比前面dim(DATA),說明薪水少了一行,Salary具有其他的表示形式。
##這裡將範圍薪水的值分成底薪和高薪兩部分,後面取平均值來表示薪水
library(tidyr)
library(stringr)
newdata##分別去除後面的k值,注意k有大寫和小寫兩種形式
newdata$lowsalarynewdata$highsalarynewdata$lowsalarynewdata$highsalarynewdata$salarynewdadat/<code>

2.變量Education

<code>###Education部分
##首先將Education中工作經驗和學歷分開
newdatatable(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>##此處以公司人數作為描述公司規模的標準
newdatatable(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 
##將Type去除   
newdata/<code>

4.變量Welfare

<code>Welfare##將Welfare去除
newdatahead(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)
Welfarewk = worker()
seg_wordslibrary(plyr)
library(wordcloud)
tableWordwindowsFonts(myFont=windowsFont("華文彩雲")) ##使用華文彩雲字體
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# 墊底:分析什麼編程語言最賺錢!

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


分享到:


相關文章: