項(xiàng)目 基于大數(shù)據(jù)人才崗位數(shù)據(jù)分析)
文章目錄1 前言1. 數(shù)據(jù)集說明2. 數(shù)據(jù)處理2.1 數(shù)據(jù)清洗2.2 數(shù)據(jù)導(dǎo)入3. 數(shù)據(jù)分析可視化3.1 整體情況招聘企業(yè)數(shù)、崗位數(shù)、招聘人數(shù)、平均工資3.2 企業(yè)主題行業(yè)情況公司類型最缺人的公司 TOP平均薪資最高的公司 TOP工作時(shí)間工作地點(diǎn)福利詞云3.3 崗位主題工作經(jīng)驗(yàn)要求學(xué)歷要求性別要求年齡要求語言要求編程語言要求4. 模型預(yù)測(cè)1 前言這里是畢設(shè)分享系列學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目今天要分享的是基于大數(shù)據(jù)人才崗位數(shù)據(jù)分析項(xiàng)目運(yùn)行效果畢業(yè)設(shè)計(jì) 基于大數(shù)據(jù)人才崗位數(shù)據(jù)分析項(xiàng)目分享見主頁任意置頂文章1. 數(shù)據(jù)集說明這是一份來自廈門人才網(wǎng)的企業(yè)招聘數(shù)據(jù)采集日期為 2021-01-14總計(jì) 100,077 條記錄大小為 122 M包含 19 個(gè)字段。2. 數(shù)據(jù)處理2.1 數(shù)據(jù)清洗使用 pandas 對(duì)數(shù)據(jù)進(jìn)行清洗主要包括去重、缺失值填充、格式化、計(jì)算冗余字段。# 數(shù)據(jù)重復(fù)處理: 刪除重復(fù)值# print(data[data.duplicated()])data.drop_duplicates(inplaceTrue)data.reset_index(dropTrue,inplaceTrue)# 缺失值查看、處理data.isnull().sum()# 招聘人數(shù)處理缺失值填 1 一般是一人; 若干人當(dāng)成 3人data[num].unique()data[num].fillna(1,inplaceTrue)data[num].replace(若干,3,inplaceTrue)# 年齡要求缺失值填 無限格式化data[age].unique()data[age].fillna(不限,inplaceTrue)data[age]data[age].apply(lambdax:x.replace(歲至,-).replace(歲,))# 語言要求: 忽視精通程度格式化data[lang].unique()data[lang].fillna(不限,inplaceTrue)data[lang]data[lang].apply(lambdax:x.split(水平)[0])data[lang].replace(其他,不限,inplaceTrue)# 月薪: 格式化。根據(jù)一般經(jīng)驗(yàn)取低值比如 5000-6000, 取 5000data[salary].unique()data[salary]data[salary].apply(lambdax:x.replace(參考月薪 ,)if參考月薪 instr(x)elsex)data[salary]data[salary].apply(lambdax:x.split(-,1)[0]if-instr(x)elsex)data[salary].fillna(0,inplaceTrue)# 其它崗位說明缺失值填無data.fillna(其他,inplaceTrue)# 工作年限格式化defjobage_clean(x):ifxin[應(yīng)屆生,不限]:returnxelifre.findall(\d年,x):returnre.findall((\d)年,x)[0]elif年inx:xre.findall(\S{1,2}年,x)[0]xre.sub(廠|驗(yàn)|年|,,x)digit_map{一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10,十一:11,十二:12,十三:13,十四:14,十五:15,十六:16,兩:2}returndigit_map.get(x,x)return其它工作經(jīng)驗(yàn)data[jobage].unique()data[jobage]data[jobage].apply(jobage_clean)# 性別格式化data[sex].unique()data[sex].replace(無,不限,inplaceTrue)# 工作類型格式化data[job_type].unique()data[job_type].replace(畢業(yè)生見習(xí),實(shí)習(xí),inplaceTrue)# 學(xué)歷格式化data[education].unique()data[education]data[education].apply(lambdax:x[:2])# 公司類型 格式化defcompany_type_clean(x):iflen(x)100or其他inx:return其他elifre.findall(私營|民營,x):return民營/私營elifre.findall(外資|外企代表處,x):return外資elifre.findall(合資,x):return合資returnx data[company_type].unique()data[company_type]data[company_type].apply(company_type_clean)# 行業(yè) 格式化。多個(gè)行業(yè)取第一個(gè)并簡(jiǎn)單歸類defindustry_clean(x):iflen(x)100or其他inx:return其他industry_map{IT互聯(lián)網(wǎng):互聯(lián)網(wǎng)|計(jì)算機(jī)|網(wǎng)絡(luò)游戲,房地產(chǎn):房地產(chǎn),電子技術(shù):電子技術(shù),建筑:建筑|裝潢,教育培訓(xùn):教育|培訓(xùn),批發(fā)零售:批發(fā)|零售,金融:金融|銀行|保險(xiǎn),住宿餐飲:餐飲|酒店|食品,農(nóng)林牧漁:農(nóng)|林|牧|漁,影視文娛:影視|媒體|藝術(shù)|廣告|公關(guān)|辦公|娛樂,醫(yī)療保健:醫(yī)療|美容|制藥,物流運(yùn)輸:物流|運(yùn)輸,電信通信:電信|通信,生活服務(wù):人力|中介}forindustry,keywordinindustry_map.items():ifre.findall(keyword,x):returnindustryreturnx.split(、)[0].replace(/,)data[industry].unique()data[industry]data[industry].apply(industry_clean)# 工作時(shí)間格式化data[worktime].unique()data[worktime_day]data[worktime].apply(lambdax:x.split(小時(shí))[0]if小時(shí)inxelse0)data[worktime_week]data[worktime].apply(lambdax:re.findall(\S*周,x)[0]if周inxelse0)# 從工作要求中正則解析出技能要求data[skill]data[require].apply(lambdax:、.join(re.findall([a-zA-Z],x)))2.2 數(shù)據(jù)導(dǎo)入將清洗后的數(shù)據(jù)導(dǎo)入到 hiveCREATETABLEjob(positionstringCOMMENT職位,numstringCOMMENT招聘人數(shù),companystringCOMMENT公司,job_typestringCOMMENT職位類型,jobagestringCOMMENT工作年限,langstringCOMMENT語言,agestringCOMMENT年齡,sexstringCOMMENT性別,educationstringCOMMENT學(xué)歷,workplacestringCOMMENT工作地點(diǎn),worktimestringCOMMENT工作時(shí)間,salarystringCOMMENT薪資,welfarestringCOMMENT福利待遇,hrstringCOMMENT招聘人,phonestringCOMMENT聯(lián)系電話,addressstringCOMMENT聯(lián)系地址,company_typestringCOMMENT公司類型,industrystringCOMMENT行業(yè),requirestringCOMMENT崗位要求,worktime_daystringCOMMENT工作時(shí)間(每天),worktime_weekstringCOMMENT工作時(shí)間(每周),skillstringCOMMENT技能要求)rowformat delimitedfieldsterminatedby,linesterminatedby\n;-- 加載數(shù)據(jù)LOADDATAINPATH/tmp/job.csvOVERWRITEINTOTABLEjob;通過 hue 查看一下數(shù)據(jù)[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-MvFQy0xU-1660662177250)(https://gitee.com/TurboWay/blogimg/raw/master/img/image-20210121195311442.png)]然后隨便點(diǎn)擊一條數(shù)據(jù)可以看到經(jīng)過前面的清洗現(xiàn)在的字段已經(jīng)很好看了后續(xù)的分析也會(huì)變得簡(jiǎn)單許多。3. 數(shù)據(jù)分析可視化3.1 整體情況招聘企業(yè)數(shù)、崗位數(shù)、招聘人數(shù)、平均工資招聘企業(yè)數(shù)為 10093在招的崗位數(shù)有 10 萬個(gè)總的招聘人數(shù)為 26 萬人平均工資為 5576 元。3.2 企業(yè)主題行業(yè)情況各行業(yè)的招聘人數(shù)排行 TOP10 如下可以看到 IT 互聯(lián)網(wǎng)最缺人。由于數(shù)據(jù)源的行業(yè)分類比較草率很多公司的分類其實(shí)并不是很準(zhǔn)確所以這個(gè)結(jié)果僅供參考。公司類型從招聘人數(shù)上來看民營/私營的企業(yè)最缺人事業(yè)單位的招聘人數(shù)最少。從薪資待遇來看上市公司平均薪資最高 5983 元而臺(tái)資/港資則最少 4723 元。最缺人的公司 TOP最缺人的公司果然是人力資源公司總的要招聘 2000 多個(gè)人從詳情來看大多是代招一些流水線崗位。平均薪資最高的公司 TOP平均薪資最高的公司上海美萊投資管理有限公司居然有 5 萬多一驚之下查了下這家公司的招聘信息可以看到該公司在招的都是高級(jí)崗比如 集團(tuán)片區(qū)總經(jīng)理副總裁級(jí)這個(gè)崗位人數(shù)達(dá)到 20 人崗位月薪 6 萬所以直接把平均薪資拉高了而且工作地點(diǎn)也不在廈門。由以上分析可以得知根據(jù)招聘信息來推算平均工資其實(shí)誤差還是比較大的僅供參考。工作時(shí)間從每天工作時(shí)間占比 TOP 10 來看大部分職位是 8 小時(shí)工作制緊接著是 7.5 小時(shí) 和 7小時(shí)。還有一些每天上班時(shí)間要達(dá)到 12 小時(shí)主要是 保安 和 普工 這類崗位。每周工作天數(shù)占比來看大部分還是 5天/周的雙休制不過 6 天/周、5.5 天/周、大小周的占比也是相當(dāng)高。工作地點(diǎn)崗位數(shù)量的分布圖顏色越深代表數(shù)量越大可以看到思明區(qū)的工作機(jī)會(huì)最多其次是湖里、集美、同安、海滄、翔安。福利詞云3.3 崗位主題工作經(jīng)驗(yàn)要求從崗位數(shù)量來看一半以上的崗位對(duì)工作經(jīng)驗(yàn)是沒有要求的。在有經(jīng)驗(yàn)要求的崗位里面1-3 年工作經(jīng)驗(yàn)的市場(chǎng)需求是最大的。從平均工資來看符合一般認(rèn)知。工作經(jīng)驗(yàn)越多工資也越高10 年以上的工作經(jīng)驗(yàn)最高平均工資為 13666 元應(yīng)屆生最低平均工資為 4587 元。學(xué)歷要求從崗位數(shù)來看大部分崗位的學(xué)歷要求為大專以上換言之在廈門只要大專學(xué)歷就很好找工作了。從平均工資來看學(xué)歷越高工資越高這也符合一般認(rèn)知誰說的讀書無用論來著。有趣的是不限學(xué)歷的平均工資居然排在了高中的前面或許這是 九年義務(wù)教育的普及與大學(xué)擴(kuò)招帶來的內(nèi)卷在招聘方眼里只有兩大類上過大學(xué)和沒上過大學(xué)從而導(dǎo)致大專以下的學(xué)歷優(yōu)勢(shì)不再明顯。性別要求崗位數(shù)方面有 6974 個(gè)崗位明確要求性別為 女僅有 575 個(gè)崗位要求性別為 男。平均工資方面女性崗位的平均工資為 5246 元而男性則為 4454 元。雖然絕大多數(shù)崗位都是不限制性別的但是不管是從崗位數(shù)量還是平均工資來看在廈門女性比男性似乎有更多的職場(chǎng)優(yōu)勢(shì)。年齡要求年齡要求一般有一個(gè)上限和下限現(xiàn)在只考慮上限并通過上限來分析一下所謂 35 歲的危機(jī)。崗位數(shù)量上來看大多數(shù)崗位是不限制年齡的有限制年齡的崗位里面35 歲以后的崗位有 7327 個(gè)35 歲及以下的崗位有 32967 個(gè)崗位數(shù)量上確實(shí)少了非常多。從平均工資來看35 歲以后的崗位 5095 元35歲及以下的崗位 5489 元薪資上少了 394 元。所以單單考慮崗位的年齡上限那么 35 歲以后的市場(chǎng)需求確實(shí)會(huì)變少。但是為什么會(huì)是這樣的情況呢個(gè)人認(rèn)為有可能是 35 歲 以后的職場(chǎng)人士沉淀更多進(jìn)入了更高級(jí)的職位更穩(wěn)定所以流動(dòng)性比較低自然市場(chǎng)上空出來的需求也會(huì)變少了更不用說還有一部分人變成了創(chuàng)業(yè)者。語言要求大部分崗位沒有語言要求在有語言要求的崗位里面英語妥妥的是第一位。值得一提的是這邊還有個(gè)閩南語因?yàn)閺B門地處閩南本地的方言就是閩南語。編程語言要求比較流行的編程語言里面被崗位要求提到的次數(shù)排行如下 ??梢钥吹紺 語言被提及的次數(shù)遠(yuǎn)大于其它語言不虧是排行榜常年第一的語言。比較驚訝的是如今大火的 python 被提及的次數(shù)卻很少排在倒二。[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-0f2WXrN9-1660662177260)(https://gitee.com/TurboWay/blogimg/raw/master/img/image-20210122172459174.png)]這些語言的平均薪資排行Python 最高為 8732 元。4. 模型預(yù)測(cè)我們知道影響工資待遇的因素有很多學(xué)歷、工作經(jīng)驗(yàn)、年齡、招聘方的緊急程度、技能的稀缺性、行業(yè)的發(fā)展情況。。。等等。所以為了簡(jiǎn)化模型就學(xué)歷和工作經(jīng)驗(yàn)兩個(gè)維度進(jìn)行模型訓(xùn)練嘗試做工資預(yù)測(cè)。importpandasaspdfromsklearn.linear_modelimportLinearRegressiondefpredict(data,education): :param data: 訓(xùn)練數(shù)據(jù) :param education: 學(xué)歷 :return: 模型得分10年工作預(yù)測(cè) traindata[data[education]education].to_numpy()xtrain[:,1:2]ytrain[:,2]# model 訓(xùn)練modelLinearRegression()model.fit(x,y)# model 預(yù)測(cè)X[[i]foriinrange(11)]returnmodel.score(x,y),model.predict(X)education_list[小學(xué),初中,中專,高中,大專,本科,碩士,博士]datapd.read_csv(train.csv)scores,values[],[]foreducationineducation_list:score,ypredict(data,education)scores.append(score)values.append(y)resultpd.DataFrame()result[學(xué)歷]education_list result[模型得分]scores result[(1年經(jīng)驗(yàn))平均工資][value[1]forvalueinvalues]result[(3年經(jīng)驗(yàn))平均工資][value[2]forvalueinvalues]result[(5年經(jīng)驗(yàn))平均工資][value[4]forvalueinvalues]result[(10年經(jīng)驗(yàn))平均工資][value[10]forvalueinvalues]print(result)使用線性回歸模型分學(xué)歷進(jìn)行預(yù)測(cè)預(yù)測(cè)結(jié)果如下。項(xiàng)目運(yùn)行效果畢業(yè)設(shè)計(jì) 基于大數(shù)據(jù)人才崗位數(shù)據(jù)分析項(xiàng)目分享見主頁任意置頂文章