數(shù)據(jù)分析項目-數(shù)據(jù)分析崗位近況分析

數(shù)據(jù)分析崗位近況分析學習總結(jié)
老師指路->http://www.reibang.com/u/1f32f227da5f
B站視頻:https://www.bilibili.com/video/BV1qa4y1J7dS

數(shù)據(jù)讀取
理解數(shù)據(jù)
數(shù)據(jù)清洗
數(shù)據(jù)分析

1祭玉、數(shù)據(jù)讀取

#導(dǎo)入相關(guān)模塊
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import re#正則解析
from wordcloud import WordCloud
import warnings
warnings.filterwarnings('ignore')

#連接mysql
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine
engine=create_engine('mysql://user:password@localhost:3306/frogdata?charset=gbk')

#讀取數(shù)據(jù)
df=pd.read_sql_query('select * from Boss_analyst',con=engine)
數(shù)據(jù)

2闸天、理解數(shù)據(jù)

字段解釋

  • position - 職位
  • salary_range - 薪水區(qū)間
  • work_year - 工作經(jīng)驗
  • city - 城市
  • tag1 - 技能標簽1
  • tag2 - 技能標簽2
  • tag3 - 技能標簽3
  • tag4 - 技能標簽4
  • tag5 - 技能標簽5
  • company_name - 公司名稱
  • text - 未知
  • company_type - 公司類型
  • company_welfare -公司福利

3孩革、數(shù)據(jù)清洗

對表中的position、salary_range勉耀、work_year佩厚、city骤素、text侠鳄、company_welfare字段數(shù)據(jù)進行清洗

#觀察數(shù)據(jù)的整體情況
df.info()

總共有4482條數(shù)據(jù)。tag4送讲、tag5奸笤、company_walfare列的有存在空缺數(shù)據(jù),但空缺不多哼鬓,而且這三個指標不是關(guān)鍵性指標揭保,所以暫不做處理


數(shù)據(jù)整體情況
#考慮到爬取的數(shù)據(jù)可能存在重復(fù)數(shù)據(jù),此處做去重處理
df.drop_duplicates(inplace=True)
df.shape[0]

4435 存在47條重復(fù)數(shù)據(jù)

position 字段清洗
#觀察position字段
df.position.unique()
position

發(fā)現(xiàn)存在異常數(shù)據(jù)魄宏,這里需要對不相關(guān)的職位進行去除

df=df.loc[df.position.str.contains('數(shù)據(jù)|分析|Data|算法|Bi|ETL')]
df.shape[0]

3423
考慮數(shù)據(jù)類的崗位有數(shù)據(jù)運營、數(shù)據(jù)挖掘存筏、商業(yè)分析師宠互、算法工程師、ETL工程師等

salary_range字段清洗
#觀察salary_range字段
df['salary_range'].unique()

數(shù)據(jù)很不規(guī)整椭坚,初步判斷存在以下三種格式:'15-25K·13薪'予跌、'15-25K'、100-150元/天 善茎,打算把這一列的數(shù)據(jù)拆解分為兩列-最低薪水券册、最高薪水

def cut_word(word,types):
    
    #把數(shù)據(jù)規(guī)整為'xx-xx'格式
    position1=word.find('K')
    position2=word.find('元')
    #如果沒有找到該元素,find會返回值-1
    if position1 != -1:  
        salary_range=word[:position1]
    elif position2 != -1:  
        salary_range=word[:position2]
    
    #拆分數(shù)據(jù)-最低薪水垂涯、最高薪水
    position3= salary_range.find('-')
    bottom_salary= salary_range[:position3]
    top_salary= salary_range[position3+1:]
    
    #傳入types參數(shù)烁焙,接收最低薪水、最高薪水的數(shù)據(jù)
    if types == 'bottom':
        return bottom_salary
    else:
        return top_salary

#利用apply函數(shù)進行數(shù)據(jù)轉(zhuǎn)化
df['bottom_salary']=df['salary_range'].apply(cut_word,types='bottom').astype('int')
df['top_salary']=df['salary_range'].apply(cut_word,types='top').astype('int')
salary_range清洗
#新增平均薪水列耕赘,方面后面做統(tǒng)計分析
df['avg_salary']=df.apply(lambda x : (x.bottom_salary+x.top_salary)/2,axis=1)
work_year字段清洗
#觀察work_year字段
df.work_year.unique()

work_year字段中學歷數(shù)據(jù)和工作年限數(shù)據(jù)混雜在了一起骄蝇,需要將其分列

學歷有7種數(shù)據(jù)格式:學歷不限、中專/中技操骡、高中九火、大專赚窃、本科、碩士岔激、博士

工作經(jīng)驗有三種數(shù)據(jù)格式:x-x年勒极、x天/周x個月、經(jīng)驗不限虑鼎。

def cut_word1(word,types):
    #找到學歷不限的學字辱匿,進行切片處理
    position1=word.find('學')
    #找到學歷不限的大字,進行切片處理
    position2=word.find('大')
    position3=word.find('本')
    position4=word.find('碩')
    position5=word.find('博')
    position6=word.find('高')
    position7=word.find('中')
    
    #通過切片把數(shù)據(jù)規(guī)整為學歷和工作經(jīng)驗兩列數(shù)據(jù)
    if position1 != -1:  
        work_year=word[:position1]
        educational_background=word[position1:]
    elif position2 != -1: 
        work_year=word[:position2]
        educational_background=word[position2:]
    elif position3 != -1:
        work_year=word[:position3]
        educational_background=word[position3:]
    elif position4 != -1:
        work_year=word[:position4]
        educational_background=word[position4:]
    elif position5 != -1:
        work_year=word[:position5]
        educational_background=word[position5:]
    elif position6 != -1:
        work_year=word[:position6]
        educational_background=word[position6:]
    else:
        work_year=word[:position5-4]
        educational_background=word[position5-4:]
      
    #傳入types參數(shù)震叙,接收學歷和工作年限的數(shù)據(jù)
    if types == 'education_background':
        return educational_background
    else:
        return work_year
    
#利用apply函數(shù)進行數(shù)據(jù)轉(zhuǎn)化掀鹅,將學歷數(shù)據(jù)新添加到'education_background'列,工作經(jīng)驗數(shù)據(jù)新添加到'work_year'列
df['education_background']=df['work_year'].apply(cut_word1,types='education_background')
df['work_year']=df['work_year'].apply(cut_word1,types='work_year')
work_year清洗

work_year字段已清洗完畢媒楼,轉(zhuǎn)化為work_year和education_background兩列數(shù)據(jù)

#work_year中存在2天/周3個月之類的數(shù)據(jù)乐尊,判斷是實習/兼職職位,這邊把全職和實習的崗位數(shù)據(jù)區(qū)分開來
df_part_time=df.loc[df.work_year.str.contains('天|周|月')]
#全職崗位
df_full_time=df.loc[~df.work_year.str.contains('天|周|月')]
city字段清洗
#觀察city數(shù)據(jù)
df_full_time['city'].unique()

有些值只顯示城市名稱划址,有些細分到了區(qū)扔嵌,這邊把數(shù)據(jù)維度統(tǒng)一規(guī)整到城市名稱

#通過apply函數(shù)和if邏輯判斷,把帶有·點的數(shù)據(jù)的城市地區(qū)維度進行切片截取
df_full_time['city']=df_full_time['city'].apply(lambda x :x[:x.find('·')]  if x.find('·') != -1  else x)
city字段清洗
text字段清洗
#觀察text字段
df_full_time.text.unique()
text

text字段包含了公司融資情況夺颤、公司類型痢缎、公司規(guī)模數(shù)據(jù),需將其轉(zhuǎn)化分列世澜,其中公司類型已存在(company_type)
只需轉(zhuǎn)化為公司融資情況和公司規(guī)模兩列
清洗結(jié)果

text字段

4独旷、數(shù)據(jù)分析

整體思路

  1. 數(shù)據(jù)類崗位整體需求
  2. 城市、學歷寥裂、工作經(jīng)驗對薪水的影響
  3. 不同崗位對應(yīng)的學歷要求嵌洼、薪水分布情況
  4. 公司一般會用什么福利待遇來吸引求職者
  5. 不同崗位要求的關(guān)鍵技能點是什么
1、數(shù)據(jù)類崗位整體需求
plt.figure(figsize=(16,6))

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號

#學歷
plt.subplot(2,3,1)
df_full_time.education_background.value_counts().plot(kind='barh',alpha=0.7)

#工作經(jīng)驗
plt.subplot(2,3,2)
df_full_time.work_year.value_counts().plot(kind='barh',alpha=0.7)

#崗位分布
plt.subplot(2,3,3)
df_full_time.city.value_counts().plot(kind='pie',autopct='%.1f%%')

#公司融資情況
plt.subplot(2,3,4)
df_full_time.company_financing .value_counts().plot(kind='barh',alpha=0.7)


#公司類別
plt.subplot(2,3,5)
df_full_time.company_type.value_counts().head(6).plot(kind='barh',alpha=0.7)

#薪水
plt.subplot(2,3,6)
#對薪水劃分層次封恰,如18K屬于15-10
bins=[0,3,5,10,15,20,30,105]
level=['0-3','3-5','5-10','10-15','15-20','20-30','30+']
df_full_time['avg_salary_level']=pd.cut(df_full_time.avg_salary,bins=bins,labels=level)
df_full_time.avg_salary_level.value_counts().head(6).plot(kind='pie',autopct='%.1f%%')

#調(diào)整子圖的間距
plt.tight_layout()
要求

分析:
學歷要求:大專是最低要求麻养,招高中或中專/中技的極少,最好是本科及以上
工作經(jīng)驗需求:偏向招聘有一定經(jīng)驗的求職者诺舔,尤其3-5年經(jīng)驗的需求最旺盛鳖昌。一般工作3年以上,對于整個職業(yè)的了解會比較深入低飒,技術(shù)趨于成熟许昨,能夠幫助做一些獨立的項目
崗位分布情況:北上廣深杭對其需求都差不多,相對來說北京機會最多褥赊,廣州偏少
公司融資情況:招聘數(shù)據(jù)類崗位的一般都是達到了一定規(guī)模的大型企業(yè)
行業(yè)分布情況:互聯(lián)網(wǎng)行業(yè)需求是最多的车要,包括電商、金融崭倘。還有一些乙方公司也有一定需求翼岁,比如數(shù)據(jù)服務(wù)類类垫、咨詢類
薪資情況:受工作經(jīng)驗影響較大,3年工作經(jīng)驗薪資一般集中在20-30K琅坡,比較可觀

省略234
5悉患、不同崗位要求的關(guān)鍵技能點是什么
#數(shù)據(jù)運營職位相關(guān)技能
list_tag1=df_full_time[df_full_time['position']=='數(shù)據(jù)運營']['tag1'].tolist()
list_tag2=df_full_time[df_full_time['position']=='數(shù)據(jù)運營']['tag2'].tolist()
list_tag3=df_full_time[df_full_time['position']=='數(shù)據(jù)運營']['tag3'].tolist()
list_tag4=df_full_time[df_full_time['position']=='數(shù)據(jù)運營']['tag4'].tolist()
list_tag5=df_full_time[df_full_time['position']=='數(shù)據(jù)運營']['tag5'].tolist()

wordcloud_1=pd.Series(list_tag1+list_tag2+list_tag3+list_tag4+list_tag5).value_counts()

#數(shù)據(jù)分析職位相關(guān)技能
#數(shù)據(jù)挖掘職位相關(guān)技能
崗位要求

分析:
數(shù)據(jù)運營類崗位要求:基本的數(shù)據(jù)分析工具要掌握,熟悉sql,理解業(yè)務(wù)和產(chǎn)品榆俺,會數(shù)據(jù)挖掘和建模更好

數(shù)據(jù)分析類崗位要求:熟悉SQL售躁、 R/Python、hive,掌握基本的數(shù)據(jù)倉庫茴晋、數(shù)據(jù)挖掘陪捷、建模的知識,具備一定的業(yè)務(wù)經(jīng)驗

數(shù)據(jù)挖掘類崗位要求:熟悉Python/R诺擅、Spark市袖、Linux、Hadoop烁涌、SQL苍碟,掌握機器學習算法、數(shù)據(jù)結(jié)構(gòu)等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撮执,一起剝皮案震驚了整個濱河市微峰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抒钱,老刑警劉巖蜓肆,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谋币,居然都是意外死亡仗扬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門瑞信,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人穴豫,你說我怎么就攤上這事凡简。” “怎么了精肃?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵秤涩,是天一觀的道長。 經(jīng)常有香客問我司抱,道長筐眷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任习柠,我火速辦了婚禮匀谣,結(jié)果婚禮上照棋,老公的妹妹穿的比我還像新娘。我一直安慰自己武翎,他們只是感情好烈炭,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宝恶,像睡著了一般符隙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垫毙,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天霹疫,我揣著相機與錄音,去河邊找鬼综芥。 笑死丽蝎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的毫痕。 我是一名探鬼主播征峦,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼消请!你這毒婦竟也來了栏笆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤臊泰,失蹤者是張志新(化名)和其女友劉穎蛉加,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缸逃,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡针饥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了需频。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丁眼。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昭殉,靈堂內(nèi)的尸體忽然破棺而出苞七,到底是詐尸還是另有隱情,我是刑警寧澤挪丢,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布蹂风,位于F島的核電站,受9級特大地震影響乾蓬,放射性物質(zhì)發(fā)生泄漏惠啄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撵渡。 院中可真熱鬧融柬,春花似錦、人聲如沸姥闭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棚品。三九已至靠欢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铜跑,已是汗流浹背门怪。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锅纺,地道東北人掷空。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像囤锉,于是被迫代替她去往敵國和親坦弟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344