大數據火了這麼多年,行外只聞其名,行內恐怕也有部分同學不明其意。我個人的理解總結為八個字是“知識發現,輔助決策”,當然市場決定供需關係,我們看看公司們是怎麼定義的。
數據介紹
這裡爬取了Boss和拉鉤,兩個我覺得實際體驗不錯的口碑招聘平臺,範圍為國內主要城市。數據運營共1201條數據,數據分析5166條,數據挖掘2162條。
維度基本都覆蓋到了(成年人不做選擇,我都要)
先放結論,處理過程下文會提到
描述統計
1、學歷
首先看看三個崗位的學歷要求:
數據挖掘要求最高,基本就是本碩以上,碩士佔比最大。
其次是數據分析,學歷要求專本以上。
三個崗位對學歷的要求分佈還是很有區分性的。
(其實挖掘崗位本科也近要求為985,211名校)..這個維度我我我,忘了。。。
2、技能工具(TOP10)
提取了崗位要求裡的技能工具統計的頻率,佔比為頻率/樣本數。
數據運營:統計工具主要為Excel,菜單操作,簡單易懂。四分之一的企業需要會有一定的Sql語言能力,有一定的ppt編寫能力,會讓你更如魚得水。
數據分析:Sql是你的必備技能,主流分析工具需要任選掌握(Pyhon、R、Spss、Sas)。除了關係型數據庫和分析工具,也要具備一些ppt展示技能哦!
數據挖掘:企業都很認可Python,熟練Java和C也沒問題,大數據框架(Spark和Hadoop等)是要熟悉的。
三個崗位在技能工具上也是區分明顯吶,從數據運營的統計工具到數據挖掘的數據框架更像是一種映射,由低維到高維,由業務線到車間結構。
3、薪酬
注:數據為北京地區職位薪水
這裡只取了工資區間最小值,畢竟能談到區間最大值的人不會太多。招聘的職位信息裡有實習生也有總監、主管職位,我們主要箱線圖箱體即可,不同崗位對比它們上下四分位數之間50%的數據分佈。對應崗位薪酬區間為:
數據挖掘 15-25k ,數據分析 10-20k,數據運營 9-15k
4、專業和行業
說完它們不一樣的,再來說說一樣的,三個崗位對專業的需求,和職位所在的行業。
從上圖來看,崗位間所需專業要求差不多,主要為統計、數學、計算機。
數據挖掘更側重於計算機專業,技能工具裡編程語言和數據框架都需要的一定計算機知識,也驗證了這一點。
對行業進行統計選了top50歸類
思路為:對有二級節點的採用二級節點,沒有二級節點採用一級節點,如“移動互聯網,社交網絡”則採用社交網絡為類別,對只有一級節點的知名公司,做二級節點填補。
互聯網時代,很多行業都能打上互聯網+。移動互聯網這個節點,太泛化了,不取用。
(ps:以上的歸類依據,源於我個人理解和搜索,準確性就…)
綜上:電子商務,企業服務,軟件應用,文化娛樂,互聯網金融這五個行業需求量最大。
這五個行業覆蓋了大部分生活所需,用戶基數大、數據量大。這時就需要技術的快速迭代,策略的調整分析。
5、相關性
統計了福利數量和崗位職責說明長度是想看看和其他變量有沒有一些關係。
城市、職位、經驗、學歷都改為了有序變量進行分析。
和工資相關性大的變量分別是經驗、城市、職位(三個崗位)。
(ps:簡單說一下相關係數的適用性
Pearson (皮爾遜相關係數)適用於連續變量,
Kendall Rank(肯德爾相關係數)適用有序變量,
Spearman(斯皮爾曼相關係數)適用於混合變量)
可視化
1、詞雲圖
首先是崗位職責:
(1)
(2)
(3)
猜一猜分別對應的崗位吧。
在清洗數據的過程中,我又發現了些好玩的公司福利,就順便做了如下圖。
嗯,左上角的週末雙休赫然在目。數據是我三月末抓取的,不算蹭熱度,不算蹭熱度。
2、熱力圖(北京地區)
既然都抓取工作地點了,’憋’浪費,多少也要做點分析。
注:為了方便觀測, 我把工資進行了歸一化處理。
數據運營:比較集中的位置工資不是很高顏色都很淺,高亮的那三坨是北京著名的(西二旗、中關村、望京)工資高些理所當然嘛。
數據分析:對比數據運營,除了三大企業“聖地”其他位置薪酬待遇有明顯變化(左上角,用友科技在北清路可謂是‘一枝獨秀’)
數據挖掘:東城區明顯稀疏了很多 ,招聘的企業集中在聖地 然後有小部分零散的分佈在東城區,西邊幾乎沒有了身影。
注:熱力圖Html代碼出處為"thinkando"博主的簡書,感謝分享。
最後:之所以選擇這三個崗位是因為在我這裡它們的定義是有層次感的,背後的結論更需要展開發現。
比如說數據挖掘獅工作內容會離不開大量的編程和優化。
數據運營更多的是運營的轉型,為更好的提升效率,在方法上加入算法和分析的思維,離不開業務。
數據分析呢就介於挖掘和運營中間,更具有靈活性,或許說“不明確”更合適,確實數據分析的帽子比較大,導致企業定義和標準可能都不同。提出問題,解決問題(方法論不限,工具不限,只要分析報告是具有可接受的置信度)找到了關係還需要去解釋因果,離不開算法,離不開業務。
它們三個的關係大概就是LV1 2 3的區別吧。
還有很多領域,比如量化、人工智能 、深度學習 等這些都是互通的 。這篇文章就是希望轉行的朋友,學習的朋友,找能到自己的方向去學習,選擇喜歡的道路走。
正文完,下面會說一些技巧遇到的坑之類
-----我是分割線-----
爬蟲
Boss
首先看看Boss的url
<code>https://www.zhipin.com/c101010100/?query=數據分析&page=2 /<code>
城市代碼+職位+頁數拼接boss的城市代碼與通用代碼稍有不同,boss尾數全為0 ,通用代碼則有著某種神秘的規律。
爬出boss有的城市與通用城市代碼匹配就好了,我這裡抓取的是國內主要部分城市。
拉鉤
拉鉤的爬取就稍複雜,首先我選擇爬取移動端(一般來說移動端的要比pc端更容易,更好找到參數)。
完整headers信息:
<code>headers = {'Accept': 'application/json',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Host': 'm.lagou.com',
'Referer': 'https://m.lagou.com/search.html',
'User-Agent': 'JUC (Linux; U; 2.3.5; zh-cn; MEIZU MX; 640*960) UCWEB8.5.1.179/145/33232',
'X-Requested-With': 'XMLHttpRequest'}/<code>
cookies: 時間戳驗證
這裡觀測到有兩個時間戳,後面ID中的參數需要動態獲取。
<code>#時間戳
import time
timeStamp = int(time.time())/<code>
cookies: ID驗證:cookies中分別有’'LGRID“,”LGSID“,”LGUID“三個ID需要更新,每次需要先從登錄界面解析出’'LGRID“然後賦值給上面三個參數。
<code>#每次解析前先獲取cookie
response= requests.get('https://m.lagou.com/search.html',headers = headers) #首頁獲取獲取cookies信息
r = requests.utils.dict_from_cookiejar(response.cookies) # 獲取cookies
LGRID = r["LGRID"]
#完整cookies
cookies = {
'_ga': 'GA1.2.282698421.1552439781',
'user_trace_token': '20190313091621-9cbdb4ea-452d-11e9-bf8c-525400f775ce',
'LGUID': LGRID,
'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%22169749f7b0940f-000e01346be29b-43450521-1049088-169749f7b0a722%22%2C%22%24device_id%22%3A%22169749f7b0940f-000e01346be29b-43450521-1049088-169749f7b0a722%22%7D',
'gate_login_token': '54263b8e7f0637ea58e0d3c8a6d748ea421373b97485b507d5879e03110ed09a',
'index_location_city': '%E5%B9%BF%E5%B7%9E',
'_ga': 'GA1.3.282698421.1552439781',
'_gid': 'GA1.2.594275610.1552873769',
'JSESSIONID': 'ABAAABAAAFDABFG7AFF23EC905A057624DE2DA9F2C5A670',
'LG_LOGIN_USER_ID': '3d801e74ee69688bcba8956dbc229f04bc903785911f14bed37f73ea58f7b9ae',
'_putrc': '9BCD3BCD35C44FB8123F89F2B170EADC',
'login': 'true',
'unick': '%E6%9D%A8%E5%B8%86',
'X_MIDDLE_TOKEN': '43e31cab4df733eb0fb2d6e747a2194a',
'Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6': '1553052524,1553054164,1553054251,1553054686',
'LGSID': LGRID,
'_gat': '1',
'LGRID': LGRID,
'Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6': timeStamp #時間戳
}/<code>
大概思路就是:訪問首頁獲取cookies信息-訪問職位頁面獲取職位id-獲取詳情頁
在拉鉤的抓取上也是廢了些時間,主要就是找到上面那些關鍵點。最好,要記得文明抓取啊…
分詞
使用庫:jieba 停留詞表:除通用停留詞,還添加了“幾種”,”至少“,“常用”等詞。自定義詞典:添加部分工具名詞,部分專業名詞等。
熱力圖
百度地圖開放平臺進行免費註冊使用方法:
<code>http://api.map.baidu.com/geocoder/v2/?address=‘待解析地址’&output=json&ak=‘用戶ak’ak&callback=showLocation //GET請求/<code>
每天可以免費解析6000次哦,詳情平臺文檔都有。
解析後為
試一下精確度,在地址正確的情況下 經緯度轉化還是比較精確的。地址比較泛解析效果就不太好了。
數據清洗處理
大部分的時間都花在了這裡,對各個維度進行處理轉換。簡單說一下做了哪些處理:
1.缺失值的填充,連續變量用中位數,分類變量用眾數。
2.工資的異常值處理,用分位數縮尾(主要去除那些搗蛋的數據)。
3.工作地點經緯度換算。
4.其他福利的統計和崗位信息的一系列文本處理。一份報告的置信度,一個模型的準確率,對算法的選擇和調參優化都是有上限的。
數據處理的好壞更大部分影響了結果,所以這是個耐心活,得慢~慢~來。
閱讀更多 觀瀾知事 的文章