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