www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]作者:JackTian、黃偉呢 微信公眾號(hào):杰哥的IT之旅(ID:Jake_Internet) 我經(jīng)常會(huì)收到讀者關(guān)于一系列咨詢運(yùn)維方面的事情,比如:杰哥,運(yùn)維到底是做什么的呀?運(yùn)維的薪資水平/ 待遇怎么樣呢?杰哥幫忙看下這個(gè)崗位的招聘需要對(duì)于小白來(lái)說,能否勝任的了呢?


作者:JackTian、黃偉呢
微信公眾號(hào):杰哥的IT之旅(ID:Jake_Internet)


我經(jīng)常會(huì)收到讀者關(guān)于一系列咨詢運(yùn)維方面的事情,比如:杰哥,運(yùn)維到底是做什么的呀?運(yùn)維的薪資水平/ 待遇怎么樣呢?杰哥幫忙看下這個(gè)崗位的招聘需要對(duì)于小白來(lái)說,能否勝任的了呢?等等。


這次呢,杰哥帶著一種好奇心的想法,結(jié)合自身的工作經(jīng)驗(yàn)與業(yè)界全國(guó)關(guān)于招聘運(yùn)維工程師的崗位做一個(gè)初步型的分析,我的一位好朋友 —— 黃偉呢,幫我爬取了 13966 條關(guān)于運(yùn)維的招聘信息,看看有哪些數(shù)據(jù)存在相關(guān)差異化。主要包括內(nèi)容:

  • 熱門行業(yè)的用人需求 Top10

  • 熱門城市的崗位數(shù)量 Top10

  • 崗位的省份分布

  • 不同公司規(guī)模的用人情況

  • 排名前 10 的崗位的平均薪資

  • 崗位對(duì)學(xué)歷的要求

  • 運(yùn)維崗位需求的詞云圖分布


對(duì)于本文的敘述,我們分以下三步為大家講解。

  • 爬蟲部分

  • 數(shù)據(jù)清洗

  • 數(shù)據(jù)可視化及分析

1、爬蟲部分

本文主要爬取的是 51job 上面,關(guān)于運(yùn)維相關(guān)崗位的數(shù)據(jù),網(wǎng)站解析主要使用的是Xpath,數(shù)據(jù)清洗用的是 Pandas 庫(kù),而可視化主要使用的是 Pyecharts 庫(kù)。

相關(guān)注釋均已在代碼中注明,為方便閱讀,這里只展示部分代碼,完整代碼可查看文末部分進(jìn)行獲取。

# 1、崗位名稱
job_name = dom.xpath('//div[@class="dw_table"]/div[@class="el"]//p/span/a[@target="_blank"]/@title')

# 2、公司名稱
company_name = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t2"]/a[@target="_blank"]/@title')

# 3、工作地點(diǎn)
address = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t3"]/text()')

# 4、工資
salary_mid = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t4"]')
salary = [i.text for i in salary_mid]

# 5、發(fā)布日期
release_time = dom.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t5"]/text()')

# 6、獲取二級(jí)網(wǎng)址url
deep_url = dom.xpath('//div[@class="dw_table"]/div[@class="el"]//p/span/a[@target="_blank"]/@href')

# 7、爬取經(jīng)驗(yàn)、學(xué)歷信息,先合在一個(gè)字段里面,以后再做數(shù)據(jù)清洗。命名為random_all
random_all = dom_test.xpath('//div[@class="tHeader tHjob"]//div[@class="cn"]/p[@class="msg ltype"]/text()')

# 8、崗位描述信息
job_describe = dom_test.xpath('//div[@class="tBorderTop_box"]//div[@class="bmsg job_msg inbox"]/p/text()')

# 9、公司類型
company_type = dom_test.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[1]/@title')

# 10、公司規(guī)模(人數(shù))
company_size = dom_test.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[2]/@title')

# 11、所屬行業(yè)(公司)
industry = dom_test.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[3]/@title')

2、數(shù)據(jù)清洗

1)讀取數(shù)據(jù)

# 下面使用到的相關(guān)庫(kù),在這里展示一下 import pandas as pd import numpy as np import re import jieba

df = pd.read_csv("only_yun_wei.csv",encoding="gbk",header=None)
df.head()

2)為數(shù)據(jù)設(shè)置新的行、列索引

# 為數(shù)據(jù)框指定行索引
df.index = range(len(df))
# 為數(shù)據(jù)框指定列索引
df.columns = ["崗位名","公司名","工作地點(diǎn)","工資","發(fā)布日期","經(jīng)驗(yàn)與學(xué)歷","公司類型","公司規(guī)模","行業(yè)","工作描述"]
df.head()

3)去重處理

# 去重之前的記錄數(shù)
print("去重之前的記錄數(shù)",df.shape)
# 記錄去重
df.drop_duplicates(subset=["公司名","崗位名","工作地點(diǎn)"],inplace=True)
# 去重之后的記錄數(shù)
print("去重之后的記錄數(shù)",df.shape)

4)對(duì)崗位名字段的處理

# ① 崗位字段名的探索
df["崗位名"].value_counts()
df["崗位名"] = df["崗位名"].apply(lambda x:x.lower())

# ② 構(gòu)造想要分析的目標(biāo)崗位,做一個(gè)數(shù)據(jù)篩選
df.shape
target_job = ['運(yùn)維','Linux運(yùn)維','運(yùn)維開發(fā)','devOps','應(yīng)用運(yùn)維','系統(tǒng)運(yùn)維','數(shù)據(jù)庫(kù)運(yùn)維','運(yùn)維安全','網(wǎng)絡(luò)運(yùn)維','桌面運(yùn)維']
index = [df["崗位名"].str.count(i) for i in target_job]
index = np.array(index).sum(axis=0) > 0 job_info = df[index]
job_info.shape

job_list = ['linux運(yùn)維','運(yùn)維開發(fā)','devOps','應(yīng)用運(yùn)維','系統(tǒng)運(yùn)維','數(shù)據(jù)庫(kù)運(yùn)維' ,'運(yùn)維安全','網(wǎng)絡(luò)運(yùn)維','桌面運(yùn)維','it運(yùn)維','軟件運(yùn)維','運(yùn)維工程師']
job_list = np.array(job_list) def rename(x=None,job_list=job_list):
    index = [i in x for i in job_list] if sum(index) > 0:
        return job_list[index][0] else:
        return x
job_info["崗位名"] = job_info["崗位名"].apply(rename)
job_info["崗位名"].value_counts()[:10]

5)工資字段的處理

job_info["工資"].str[-1].value_counts()
job_info["工資"].str[-3].value_counts()

index1 = job_info["工資"].str[-1].isin(["年","月"])
index2 = job_info["工資"].str[-3].isin(["萬(wàn)","千"])
job_info = job_info[index1 & index2]
job_info["工資"].str[-3:].value_counts() def get_money_max_min(x): try: if x[-3] == "萬(wàn)":
            z = [float(i)*10000 for i in re.findall("[0-9]+\.?[0-9]*",x)]
        elif x[-3] == "千":
            z = [float(i) * 1000 for i in re.findall("[0-9]+\.?[0-9]*", x)] if x[-1] == "年":
            z = [i/12 for i in z] return z
    except: return x

salary = job_info["工資"].apply(get_money_max_min)

job_info["最低工資"] = salary.str[0]
job_info["最高工資"] = salary.str[1]
job_info["工資水平"] = job_info[["最低工資","最高工資"]].mean(axis=1)

6)工作地點(diǎn)字段的處理

address_list = ['北京', '上海', '廣州', '深圳', '杭州', '蘇州', '長(zhǎng)沙', '武漢', '天津', '成都', '西安', '東莞', '合肥', '佛山', '寧波', '南京', '重慶', '長(zhǎng)春', '鄭州', '常州', '福州', '沈陽(yáng)', '濟(jì)南', '寧波', '廈門', '貴州', '珠海', '青島', '中山', '大連','昆山',"惠州","哈爾濱","昆明","南昌","無(wú)錫"]
address_list = np.array(address_list) def rename(x=None,address_list=address_list):
    index = [i in x for i in address_list] if sum(index) > 0:
        return address_list[index][0] else:
        return x
job_info["工作地點(diǎn)"] = job_info["工作地點(diǎn)"].apply(rename)
job_info["工作地點(diǎn)"].value_counts()

7)公司類型字段的處理

job_info.loc[job_info["公司類型"].apply(lambda x:len(x)<6),"公司類型"] = np.nan
job_info["公司類型"] = job_info["公司類型"].str[2:-2]
job_info["公司類型"].value_counts()

8)行業(yè)字段的處理

job_info["行業(yè)"] = job_info["行業(yè)"].apply(lambda x:re.sub(",","/",x))
job_info.loc[job_info["行業(yè)"].apply(lambda x:len(x)<6),"行業(yè)"] = np.nan
job_info["行業(yè)"] = job_info["行業(yè)"].str[2:-2].str.split("/").str[0]
job_info["行業(yè)"].value_counts()

9)經(jīng)驗(yàn)與學(xué)歷字段的處理

job_info["學(xué)歷"] = job_info["經(jīng)驗(yàn)與學(xué)歷"].apply(lambda x:re.findall("本科|大專|應(yīng)屆生|在校生|碩士|博士",x)) def func(x): if len(x) == 0: return np.nan
    elif len(x) == 1 or len(x) == 2: return x[0] else: return x[2]
job_info["學(xué)歷"] = job_info["學(xué)歷"].apply(func)
job_info["學(xué)歷"].value_counts()

10)公司規(guī)模字段的處理

def func(x): if x == "['少于50人']": return "<50" elif x == "['50-150人']": return "50-150" elif x == "['150-500人']": return '150-500' elif x == "['500-1000人']": return '500-1000' elif x == "['1000-5000人']": return '1000-5000' elif x == "['5000-10000人']": return '5000-10000' elif x == "['10000人以上']": return ">10000" else: return np.nan
job_info["公司規(guī)模"] = job_info["公司規(guī)模"].apply(func)

11)將處理好的數(shù)據(jù),構(gòu)造新數(shù)據(jù),導(dǎo)出為新的 excel

feature = ["公司名","崗位名","工作地點(diǎn)","工資水平","發(fā)布日期","學(xué)歷","公司類型","公司規(guī)模","行業(yè)","工作描述"]
final_df = job_info[feature]
final_df.to_excel(r"可視化.xlsx",encoding="gbk",index=None)

3、數(shù)據(jù)可視化

1)可視化大屏效果

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?
2)熱門行業(yè)的用人需求 Top10

從招聘行業(yè)的數(shù)據(jù)來(lái)看,計(jì)算機(jī)軟件,計(jì)算機(jī)服務(wù),互聯(lián)網(wǎng),通信行業(yè)用人需求相比其他行業(yè)占比會(huì)高。


3)熱門城市的崗位數(shù)量 Top10

從熱門城市來(lái)看,北上廣深的一線城市,用人崗位數(shù)占比較大,不過這里的異地招聘數(shù)據(jù)及結(jié)合過往經(jīng)驗(yàn),偏外包性質(zhì)的企業(yè)。

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?
4)崗位的省份分布

崗位分布省份,通過最左側(cè)的顏色棒,我們可以看出顏色最深的地區(qū)崗位招聘數(shù)越集中,相反之下,最淺的也就是崗位招聘數(shù)越少的省份。從下圖來(lái)看,廣東省、江蘇省、上海及北京顏色相比其他省份占據(jù)分布會(huì)比較集中些。

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?
5)不同公司規(guī)模的用人情況

行業(yè)的不同,公司規(guī)??隙ㄊ谴嬖谟胁町惖?。公司規(guī)模是指按有關(guān)標(biāo)準(zhǔn)和規(guī)定劃分的公司規(guī)模,一般分為特大型、大型、中型、小型、微型。如下圖,公司規(guī)模人數(shù)在 50-500 范圍內(nèi)占據(jù) 50% 以上,用人需求最高,1000-10000 范圍占據(jù)不到 50 %,不過這樣的公司規(guī)模已經(jīng)是比較大的了。

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?
6)排名前 10 的崗位的平均薪資

根據(jù)我的了解,比如:系統(tǒng)工程師、軟件 / 實(shí)施工程師、運(yùn)維專員 等一系列的崗位其實(shí)也是可以劃分在運(yùn)維領(lǐng)域范疇之內(nèi)的,每家公司對(duì)運(yùn)維工作者的崗位名稱定義有所不同,為了能夠更精準(zhǔn)的篩選分析,把那些崗位占時(shí)去掉了。留下了以下 10 個(gè)崗位名稱(運(yùn)維開發(fā)、運(yùn)維工程師、軟件運(yùn)維、網(wǎng)絡(luò)運(yùn)維、系統(tǒng)運(yùn)維、桌面運(yùn)維、數(shù)據(jù)庫(kù)運(yùn)維、應(yīng)用運(yùn)維、Linux 運(yùn)維、IT 運(yùn)維)這些崗位名稱基本是我見過招聘信息內(nèi)最多的。

排名前 10 的崗位平均薪資,運(yùn)維開發(fā)、應(yīng)用運(yùn)維、數(shù)據(jù)庫(kù)運(yùn)維、Linux 運(yùn)維均在 1W 以上。因此,也可以看出運(yùn)維開發(fā)在運(yùn)維領(lǐng)域的優(yōu)勢(shì),是占據(jù)前沿位置。

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?
7)運(yùn)維崗位的學(xué)歷要求分布

從學(xué)歷要求方面來(lái)看,大專及本科學(xué)歷占比居多。在校生、碩士、博士基本太少了,因此會(huì)有一些我的學(xué)生群體讀者會(huì)問我,對(duì)于一個(gè)應(yīng)屆畢業(yè)生,找運(yùn)維工作好找嗎?站在我個(gè)人的角度,我是不建議你畢業(yè)后去做運(yùn)維的。因?yàn)檫\(yùn)維對(duì)你個(gè)人的技術(shù)水平及工作經(jīng)驗(yàn)有些非常高的要求,而對(duì)于一個(gè)剛畢業(yè)的學(xué)生來(lái)說,沒有過多的實(shí)踐經(jīng)驗(yàn),也不會(huì)有很大的優(yōu)勢(shì),除非是這個(gè)崗位對(duì)你有極大的興趣愛好,但凡你也可以嘗試下。

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?
8)運(yùn)維崗位需求的詞云圖分布

從運(yùn)維崗位招聘需求詞云圖來(lái)看,詞頻最多的主要包括:運(yùn)維、能力、系統(tǒng)、維護(hù)、經(jīng)驗(yàn)等等,因此也可以看出運(yùn)維崗位對(duì)個(gè)人技術(shù)能力以及過往工作經(jīng)驗(yàn)是要求非常高的。當(dāng)然了還有很多其他相關(guān)的詞頻,可通過下圖查看詳情。

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?

總結(jié)

介紹了這么多,相信你也對(duì)運(yùn)維工程師有了初步的認(rèn)識(shí)與了解,通過本篇文章你可以了解到哪些行業(yè)的對(duì)運(yùn)維的用人需求是比較高的?最為招聘運(yùn)維熱門的城市有哪些?運(yùn)維崗位的分布、不同公司規(guī)模對(duì)運(yùn)維工程師的用人情況占比、關(guān)于運(yùn)維相關(guān)崗位的平均薪資、招聘運(yùn)維崗位對(duì)學(xué)歷的要求以及運(yùn)維崗位需求詞云圖包括哪些詞頻最多,通過這一數(shù)據(jù)的分析,相信能對(duì)你在今后的運(yùn)維求職方向、行業(yè)、城市以及公司規(guī)模有所初步的判斷及選擇,希望對(duì)你有所幫助。

特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:


利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?


長(zhǎng)按訂閱更多精彩▼

利用 Python 爬取了 13966 條運(yùn)維招聘信息,我得出了哪些結(jié)論?

如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉