偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用Python分析深圳程序員工資有多高?還真是多金的程序員!

開發(fā) 后端
用Python告訴你深圳房租有多高 ,想繼續(xù)用 Python 分析一下,當(dāng)前深圳的求職市場(chǎng)怎么樣?順便幫一下秋招的同學(xué)。于是便爬取了某拉鉤招聘數(shù)據(jù)。

前言

多圖預(yù)警、多圖預(yù)警、多圖預(yù)警。秋招季,畢業(yè)也多,跳槽也多。我們的職業(yè)發(fā)展還是要順應(yīng)市場(chǎng)需求,那么各門編程語(yǔ)言在深圳的需求怎么呢?工資待遇怎么樣呢?zone 在上次寫了這篇文章之后 用Python告訴你深圳房租有多高 ,想繼續(xù)用 Python 分析一下,當(dāng)前深圳的求職市場(chǎng)怎么樣?順便幫一下秋招的同學(xué)。于是便爬取了某拉鉤招聘數(shù)據(jù)。以下是本次爬蟲的樣本數(shù)據(jù):

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

 

 

樣本

本次統(tǒng)計(jì)數(shù)據(jù)量為 4658 ,其中某拉鉤最多能顯示 30 頁(yè)數(shù)據(jù),每頁(yè) 15 條招聘信息,則總為:

30 x 15 = 450

首頁(yè)爬取跳過(guò)一頁(yè),則為 435 條,故數(shù)據(jù)基本爬完。其余不夠數(shù)量的語(yǔ)言為該語(yǔ)言在深圳只有這么多條招聘信息。

統(tǒng)計(jì)結(jié)果

各語(yǔ)言平均工資

其中

  • 精準(zhǔn)推薦
  • 自然語(yǔ)言
  • 機(jī)器學(xué)習(xí)
  • Go 語(yǔ)言
  • 圖像識(shí)別

獨(dú)領(lǐng)風(fēng)騷啊?。?!平均工資都挺高的。區(qū)塊鏈炒得挺火的,好像平均薪資并沒(méi)有那么高。我統(tǒng)計(jì)完之后,感覺(jué)自己拖后腿了,ma 的!??!要?jiǎng)h庫(kù)跑路了?。ㄗⅲ合聢D為月薪,單位:K)

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

各語(yǔ)言平均薪資

平均工資計(jì)算方式:

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

某鉤 item

***值與***值,求平均數(shù),如圖薪資則為:

(10k + 20k)/2 = 15k

***,再總體求平均數(shù)。

公司福利詞云

看福利還是挺豐富的,帶薪休假、下午茶、零食、節(jié)假日。

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

福利詞云

公司發(fā)展級(jí)別排行

總體由 A 輪向 D 輪縮減,大部分公司不需要融資,嗯,估計(jì)是拿不到資本融資,但是自家人又有錢的。

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

公司發(fā)展級(jí)別

各語(yǔ)言工作年限要求與學(xué)歷要求

看看你的本命語(yǔ)言的市場(chǎng)需求怎么樣?你達(dá)標(biāo)了嗎?其中三至五年的攻城獅職位挺多的,不怕找不到工作。還有一個(gè)趨勢(shì)是,薪資越高,學(xué)歷要求越高高??磥?lái)學(xué)歷還是挺重要的。

Java

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

Java 工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

Java 學(xué)歷要求

Python

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

Python 工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

Python 學(xué)歷要求

C 語(yǔ)言

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

C 語(yǔ)言工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

C 語(yǔ)言學(xué)歷要求

機(jī)器學(xué)習(xí)

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

機(jī)器學(xué)習(xí)工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

機(jī)器學(xué)習(xí)學(xué)歷要求

圖像識(shí)別

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

圖像識(shí)別工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

圖像識(shí)別學(xué)歷要求

自然語(yǔ)言

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

自然語(yǔ)言工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

自然語(yǔ)言學(xué)歷要求

區(qū)塊鏈

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

區(qū)塊鏈工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

區(qū)塊鏈學(xué)歷要求

Go 語(yǔ)言

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

Go 語(yǔ)言工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

Go

PHP

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

PHP 工作年限要求

 

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

PHP 學(xué)歷要求

爬蟲技術(shù)分析

  • 請(qǐng)求庫(kù):selenium
  • HTML 解析:BeautifulSoup、xpath
  • 詞云:wordcloud
  • 數(shù)據(jù)可視化:pyecharts
  • 數(shù)據(jù)庫(kù):MongoDB
  • 數(shù)據(jù)庫(kù)連接:pymongo

爬蟲代碼實(shí)現(xiàn)

看完統(tǒng)計(jì)結(jié)果之后,有沒(méi)有躍躍欲試?想要自己也實(shí)現(xiàn)以下代碼?以下為代碼實(shí)現(xiàn)。

對(duì)網(wǎng)頁(yè)右擊,點(diǎn)擊檢查,找到一條 item 的數(shù)據(jù):

用Python分析深圳程序員工資有多高?還真是多金的程序員!

 

網(wǎng)頁(yè)源碼

數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu):


  1. /* 1 */ 
  2.  "_id" : ObjectId("5b8b89328ffaed60a308bacd"), 
  3.  "education" : "本科",# 學(xué)習(xí)要求 
  4.  "companySize" : "2000人以上",# 公司人數(shù)規(guī)模 
  5.  "name" : "python開發(fā)工程師",# 職位名稱 
  6.  "welfare" : "“朝九晚五,公司平臺(tái)大,發(fā)展機(jī)遇多,六險(xiǎn)一金”",# 公司福利 
  7.  "salaryMid" : 12.5,# 工資上限與工資下限的平均數(shù) 
  8.  "companyType" : "移動(dòng)互聯(lián)網(wǎng)",# 公司類型 
  9.  "salaryMin" : "10",# 工資下限 
  10.  "salaryMax" : "15",# 工資上限 
  11.  "experience" : "經(jīng)驗(yàn)3-5年",# 工作年限 
  12.  "companyLevel" : "不需要融資",# 公司級(jí)別 
  13.  "company" : "XXX技術(shù)有限公司"# 公司名稱 

由于篇幅原因,以下只展示主要代碼:

  1. # 獲取網(wǎng)頁(yè)源碼數(shù)據(jù) 
  2. # language => 編程語(yǔ)言 
  3. # city => 城市 
  4. # collectionType => 值:True/False True => 數(shù)據(jù)庫(kù)表以編程語(yǔ)言命名 False => 以城市命名 
  5. def main(self, language, city, collectionType): 
  6.  print(" 當(dāng)前爬取的語(yǔ)言為 => " + language + " 當(dāng)前爬取的城市為 => " + city) 
  7.  url = self.getUrl(language, city) 
  8.  browser = webdriver.Chrome() 
  9.  browser.get(url) 
  10.  browser.implicitly_wait(10) 
  11.  for i in range(30): 
  12.  selector = etree.HTML(browser.page_source) # 獲取源碼 
  13.  soup = BeautifulSoup(browser.page_source, "html.parser"
  14.  span = soup.find("div", attrs={"class""pager_container"}).find("span", attrs={"action""next"}) 
  15.  print( 
  16.  span) # <span action="next" class="pager_next pager_next_disabled" hidefocus="hidefocus">下一頁(yè)<strong class="pager_lgthen pager_lgthen_dis"></strong></span> 
  17.  classArr = span['class'
  18.  print(classArr) # 輸出內(nèi)容為 -> ['pager_next''pager_next_disabled'
  19.  attr = list(classArr)[0] 
  20.  attr2 = list(classArr)[1] 
  21.  if attr2 == "pager_next_disabled":#分析發(fā)現(xiàn) class 屬性為 ['pager_next''pager_next_disabled'] 時(shí),【下一頁(yè)】按鈕不可點(diǎn)擊 
  22.  print("已經(jīng)爬到***一頁(yè),爬蟲結(jié)束"
  23.  break 
  24.  else
  25.  print("還有下一頁(yè),爬蟲繼續(xù)"
  26.  browser.find_element_by_xpath('//*[@id="order"]/li/div[4]/div[2]').click() # 點(diǎn)擊【下一頁(yè)】按鈕 
  27.  time.sleep(5) 
  28.  print('第{}頁(yè)抓取完畢'.format(i + 1)) 
  29.  self.getItemData(selector, language, city, collectionType)# 解析 item 數(shù)據(jù),并存進(jìn)數(shù)據(jù)庫(kù) 
  30.  browser.close() 

爬蟲分析實(shí)現(xiàn)

  1. # 獲取各語(yǔ)言樣本數(shù)量 
  2. def getLanguageNum(self): 
  3.  analycisList = [] 
  4.  for index, language in enumerate(self.getLanguage()): 
  5.  collection = self.zfdb["z_" + language] 
  6.  totalNum = collection.aggregate([{'$group': {'_id''''total_num': {'$sum': 1}}}]) 
  7.  totalNum2 = list(totalNum)[0]["total_num"
  8.  analycisList.append(totalNum2) 
  9.  return (self.getLanguage(), analycisList) 
  10. # 獲取各語(yǔ)言的平均工資 
  11. def getLanguageAvgSalary(self): 
  12.  analycisList = [] 
  13.  for index, language in enumerate(self.getLanguage()): 
  14.  collection = self.zfdb["z_" + language] 
  15.  totalSalary = collection.aggregate([{'$group': {'_id''''total_salary': {'$sum''$salaryMid'}}}]) 
  16.  totalNum = collection.aggregate([{'$group': {'_id''''total_num': {'$sum': 1}}}]) 
  17.  totalNum2 = list(totalNum)[0]["total_num"
  18.  totalSalary2 = list(totalSalary)[0]["total_salary"
  19.  analycisList.append(round(totalSalary2 / totalNum2, 2)) 
  20.  return (self.getLanguage(), analycisList) 
  21. # 獲取一門語(yǔ)言的學(xué)歷要求(用于 pyecharts 的詞云) 
  22. def getEducation(self, language): 
  23.  results = self.zfdb["z_" + language].aggregate([{'$group': {'_id''$education''weight': {'$sum': 1}}}]) 
  24.  educationList = [] 
  25.  weightList = [] 
  26.  for result in results: 
  27.  educationList.append(result["_id"]) 
  28.  weightList.append(result["weight"]) 
  29.  # print(list(result)) 
  30.  return (educationList, weightList) 
  31. # 獲取一門語(yǔ)言的工作年限要求(用于 pyecharts 的詞云) 
  32. def getExperience(self, language): 
  33.  results = self.zfdb["z_" + language].aggregate([{'$group': {'_id''$experience''weight': {'$sum': 1}}}]) 
  34.  totalAvgPriceDirList = [] 
  35.  for result in results: 
  36.  totalAvgPriceDirList.append( 
  37.  {"value": result["weight"], "name": result["_id"] + " " + str(result["weight"])}) 
  38.  return totalAvgPriceDirList 
  39. # 獲取 welfare 數(shù)據(jù),用于構(gòu)建福利詞云 
  40. def getWelfare(self): 
  41.  content = '' 
  42.  queryArgs = {} 
  43.  projectionFields = {'_id'False'welfare'True} # 用字典指定 
  44.  for language in self.getLanguage(): 
  45.  collection = self.zfdb["z_" + language] 
  46.  searchRes = collection.find(queryArgs, projection=projectionFields).limit(1000) 
  47.  for result in searchRes: 
  48.  print(result["welfare"]) 
  49.  content += result["welfare"
  50.  return content 
  51. # 獲取公司級(jí)別排行(用于條形圖) 
  52. def getAllCompanyLevel(self): 
  53.  levelList = [] 
  54.  weightList = [] 
  55.  newWeightList = [] 
  56.  attrList = ["A輪""B輪""C輪""D輪及以上""不需要融資""上市公司"
  57.  for language in self.getLanguage(): 
  58.  collection = self.zfdb["z_" + language] 
  59.  # searchRes = collection.find(queryArgs, projection=projectionFields).limit(1000) 
  60.  results = collection.aggregate([{'$group': {'_id''$companyLevel''weight': {'$sum': 1}}}]) 
  61.  for result in results: 
  62.  levelList.append(result["_id"]) 
  63.  weightList.append(result["weight"]) 
  64.  for index, attr in enumerate(attrList): 
  65.  newWeight = 0 
  66.  for index2, level in enumerate(levelList): 
  67.  if attr == level
  68.  newWeight += weightList[index2] 
  69.  newWeightList.append(newWeight) 
  70.  return (attrList, newWeightList)  

 

責(zé)任編輯:龐桂玉 來(lái)源: 今日頭條
相關(guān)推薦

2020-03-02 15:15:37

程序員工資協(xié)議

2018-01-26 17:35:56

前端程序員月薪

2014-10-15 13:02:44

程序員工資信息圖

2018-07-17 11:10:47

程序員工資行業(yè)

2021-01-13 15:07:30

程序員工資互聯(lián)網(wǎng)

2018-11-22 10:53:30

程序員技能開發(fā)者

2011-04-18 08:31:54

2013-08-20 09:33:59

程序員

2018-05-31 15:22:53

程序員女程序男性程序員

2011-04-19 09:59:47

工資程序員

2013-08-14 10:34:39

.NET程序員工資低.NET程序員

2020-09-01 14:21:27

程序員薪水開發(fā)

2020-01-10 17:29:12

IT開發(fā)者程序員

2012-03-06 09:22:46

程序員

2011-05-13 14:34:02

程序員

2019-09-18 15:32:05

程序員工資統(tǒng)計(jì)

2018-05-29 22:38:49

AI程序員代碼

2009-05-21 15:58:12

程序員工作經(jīng)驗(yàn)職場(chǎng)

2012-11-22 14:00:26

程序員

2017-11-14 21:30:15

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)