<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          利用Python分析數(shù)據(jù)分析師招聘現(xiàn)狀

          共 8718字,需瀏覽 18分鐘

           ·

          2021-04-13 15:47

          作者介紹

          @貓耳朵

          數(shù)據(jù)產(chǎn)品經(jīng)理萌新,

          開發(fā)經(jīng)驗豐富,專注于數(shù)據(jù)產(chǎn)品。


          越來越多的小伙伴想要入行或者轉(zhuǎn)行數(shù)據(jù)分析,作為圈內(nèi)老鳥,將使用 pandas 和 Matplotlib 分析一下數(shù)據(jù)分析師崗位目前現(xiàn)狀,希望可以幫到他們。


          01

          分析目標

          1) 公司都要求掌握什么技能?

          2) 學歷要求高嗎?

          3) 薪資怎么分布?

          4) 不同細分領(lǐng)域?qū)?shù)據(jù)分析的需求情況?

          5) 各大城市對數(shù)據(jù)分析崗位的需求情況?

          6) 工作經(jīng)驗與薪水有什么關(guān)系?

          7) 不同規(guī)模的企業(yè)對經(jīng)驗的要求以及提供薪資的水平是什么?


          02

          數(shù)據(jù)加載

          import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.font_manager import FontManagerfrom matplotlib import gridspec
          jobData = pd.read_csv('zhaopin.csv')jobData.drop_duplicates(inplace = True) # 刪除重復(fù)數(shù)據(jù)jobData

          部分數(shù)據(jù)如下圖所示



          03

          數(shù)據(jù)預(yù)處理

          1)過濾非數(shù)據(jù)分析的崗位

          isTrue = jobData['positionName'].str.contains('數(shù)據(jù)分析') # 職位中是否包含‘數(shù)據(jù)分析’jobData = jobData[isTrue] # 篩選出想要的字段jobData.reset_index(inplace=True) # 重置行索引jobData

          2)用均值作為相應(yīng)職位的薪水

          薪水是一個區(qū)間,所以用薪水區(qū)間的均值作為相應(yīng)職位的薪水

          jobData['salary'] = jobData['salary'].str.lower()\                    .str.extract(r'(\d+)[k]-(\d+)k')\                    .applymap(lambda x:int(x))\                    .mean(axis=1) # 用薪水區(qū)間的均值作為薪水
          jobData

          3)提取技能要求

          將技能分為:Python、SQL、Tableau、Excel、SPSS/SAS、R、數(shù)據(jù)挖掘。如果job_detail中含有這些技能,則賦值為1,否則為0

          jobData['job_detail'] = jobData['job_detail'].str.lower().fillna('') # 將字母小寫,缺失值賦為空字符串jobData['python'] = jobData['job_detail'].map(lambda x:1 if('python' in x) else 0)jobData['SQL'] = jobData['job_detail'].map(lambda x:1 if('sql' in x) or ('hive' in x) else 0)jobData['Tableau'] = jobData['job_detail'].map(lambda x:1 if 'tableau' in x else 0)jobData['Excel'] = jobData['job_detail'].map(lambda x:1 if 'excel' in x else 0)jobData['SPSS/SAS'] = jobData['job_detail'].map(lambda x:1 if ('spss' in x) or ('sas' in x) else 0)jobData['R'] = jobData['job_detail'].map(lambda x:1 if('r' in x) else 0)jobData['數(shù)據(jù)挖掘'] = jobData['job_detail'].map(lambda x:1 if('挖掘') else 0)jobData



          04

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

          1)各城市對數(shù)據(jù)分析師的需求量

          plt.rcParams['font.family'] = 'Heiti TC'plt.figure(figsize=(12, 9))cities = jobData['city'].value_counts()plt.barh(y = cities.index[::-1],        width = cities.values[::-1],        color = '#78a355')plt.box(False) # 不顯示邊框plt.title(label='各城市數(shù)據(jù)分析崗位的需求量',         fontsize = 32, weight = 'bold', color = 'white',         backgroundcolor = '#f47920', pad = 30)plt.tick_params(labelsize = 16)plt.grid(ls = '--', axis = 'x', linewidth = 0.5, color = '#78a355')

          如下圖得知,一線城市數(shù)據(jù)分析師崗位較多,其中北京數(shù)據(jù)分析師崗位需求最多,其次是上海需求緊隨其后。

          2)不同行業(yè)對數(shù)據(jù)分析師的需求量

          industry_index = jobData['industryField'].value_counts()[:10].indexindustry = jobData.loc[jobData['industryField'].isin(industry_index), 'industryField']plt.figure(figsize=(12, 9))plt.barh(y = industry_index[::-1],        width=pd.Series.value_counts(industry.values).values[::-1],        color = '#78a355')plt.box(False) # 不顯示邊框plt.title('不同領(lǐng)域?qū)?shù)據(jù)分析崗位的需求量(前十)',         fontsize = 32, weight = 'bold', color = 'white',         backgroundcolor = '#f47920', pad = 30)plt.tick_params(labelsize = 16)plt.grid(ls = '--', axis = 'x', linewidth = 0.5, color = '#78a355')

          如下圖得知,電商對于數(shù)據(jù)分析師的需求量最大,其次是金融。

          3)各城市薪資狀況

          plt.figure(figsize=(12, 9))city_salary = jobData.groupby('city')['salary'].mean().sort_values(ascending=False)plt.bar(x = city_salary.index, height = city_salary.values,       color = plt.cm.coolwarm_r(np.linspace(0,1,len(city_salary))))plt.title('各大城市的薪資對比',         fontsize = 32, weight = 'bold', color = 'white',         backgroundcolor = '#f47920', pad = 30)plt.tick_params(labelsize = 16)plt.grid(ls = '--', axis = 'y', linewidth = 0.5, color = '#a1a3a6')plt.yticks(ticks=np.arange(0, 25, step=5), labels=['', '5k', '10,', '15k', '20k'])plt.box(False)

          如下圖得知,北京薪資最高,其次上海僅次于杭州。

          4)工作經(jīng)驗與薪水關(guān)系

          work_salary = jobData.pivot_table(index='city', columns='workYear', values='salary')work_salary = work_salary[['應(yīng)屆畢業(yè)生', '1-3年', '3-5年', '5-10年', '10年以上']]\                .sort_values(by='10年以上', ascending=False)data = work_salary.valuesdata = np.repeat(data, 4, axis=1)plt.figure(figsize=(12, 9))# plt.cm.OrRd_rplt.imshow(data, cmap='RdBu_r')plt.yticks(np.arange(13), work_salary.index)plt.xticks(np.array([1.5, 5.5, 9.5, 13.5, 17.5]), work_salary.columns)h, w = data.shapefor x in range(w):    for y in range(h):        if (x%4==0) and (~np.isnan(data[y, x])):            text = plt.text(x+1.5, y, round(data[y, x], 1),                           ha='center', va='center', color='r', fontsize=16)plt.colorbar(shrink=0.72)plt.title('工作經(jīng)驗與薪水關(guān)系',         fontsize = 32, weight = 'bold', color = 'white',         backgroundcolor = '#f47920', pad = 30)plt.tick_params(labelsize = 16)

          如下圖所示,數(shù)據(jù)分析師的工作經(jīng)驗與薪水成正比,北京工作10年以上的年薪是應(yīng)屆畢業(yè)生的5倍。


          5)學歷要求

          education = jobData['education'].value_counts(normalize=True)plt.figure(figsize=(9, 9))plt.pie(education, labels=education.index, autopct='%0.2f%%',       wedgeprops=dict(linewidth=3, width=0.5), pctdistance=0.8,       textprops=dict(fontsize=20))plt.title(label='學歷要求',         fontsize=32, weight='bold',         color='white', backgroundcolor='#f47920')

          如下圖所示,85.36%的數(shù)據(jù)分析師崗位的學歷要求最低是本科,5.22%的崗位要求最低是碩士。

          6)技能要求

          def get_level(x):    if x['python'] == 1:        x['skill'] = 'Python/R'    elif x['R'] == 1:        x['skill'] = 'Python/R'    elif x['SQL'] == 1:        x['skill'] = 'SQL'    elif x['Excel'] == 1:        x['skill'] = 'Excel'    elif x['SPSS/SAS'] == 1:        x['skill'] = 'SPSS/SAS'    else:        x['skill'] = '其他'    return x
          jobData = jobData.apply(get_level, axis=1) # 數(shù)據(jù)轉(zhuǎn)換
          # 獲取主要技能x = jobData.loc[jobData.skill!='其他'][['salary', 'skill']]condition1 = x['skill'] == 'Python/R'condition2 = x['skill'] == 'SQL'condition3 = x['skill'] == 'Excel'condition4 = x['skill'] == 'SPSS/SAS'
          plt.figure(figsize=(12, 8))plt.title(label='不同技能的薪資水平對比', fontsize=32, weight='bold', color='white', backgroundcolor='#f47920', pad=30)
          plt.boxplot(x=[jobData.loc[jobData.skill!='其他']['salary'][condition1], jobData.loc[jobData.skill!='其他']['salary'][condition2], jobData.loc[jobData.skill!='其他']['salary'][condition3], jobData.loc[jobData.skill!='其他']['salary'][condition4]], vert=False, labels=['Python/R', 'SQL', 'Excel', 'SPSS/SAS'])
          plt.tick_params(axis='both', labelsize=16)plt.grid(axis='x', linewidth=0.75)plt.xticks(np.arange(0, 61, 10), [str(i)+'k' for i in range(0, 61, 10)])plt.box(False)plt.xlabel('工資', fontsize=18)plt.ylabel('技能', fontsize=18)

          如下圖所示,Python/R的異常值、中位數(shù)最高,SQL的上限較高,并且上限和下限差別最大。

          7)大公司對技能要求

          job_skills = jobData[jobData['companySize'] == '2000人以上']
          labels = ['Python', 'SQL', 'Tableau', 'Excel', 'SPSS/SAS', '數(shù)據(jù)挖掘']counts =[]counts.append(jobData['python'].sum())counts.append(jobData['SQL'].sum())counts.append(jobData['Tableau'].sum())counts.append(jobData['Excel'].sum())counts.append(jobData['SPSS/SAS'].sum())counts.append(jobData['數(shù)據(jù)挖掘'].sum())
          plt.figure(figsize=(9, 6))
          plt.bar(x=labels, height=counts, width=0.5, color=plt.cm.coolwarm_r(np.linspace(0,1,len(counts))))np.linspace(0,1,len(counts))
          plt.title(label='大公司對技能的要求', fontsize=32, weight='bold', color='white', backgroundcolor='#f47920', pad=30)plt.tick_params(labelsize=16,)plt.grid(axis='y')plt.box(False)

          由下圖得知,大公司要求最多的是數(shù)據(jù)挖掘,其次是SQL、Python。

          8)不同規(guī)模的公司在招人要求上的差異

          color_map = {    5:"#ff0000",    4:"#ffa500",    3:"#c5b783",    2:"#3c7f99",    1:"#0000cd"}
          cond = jobData.workYear.isin({'5-10年':5, '3-5年':4, '1-3年':3, '1年以下':2, '應(yīng)屆畢業(yè)?':1})
          jobData = jobData[cond]
          jobData['workYear'] = jobData.workYear.map(workYear_map)
          # 根據(jù)companySize進?排序,?數(shù)從多到少jobData['companySize'] = jobData['companySize'].astype('category')# list_custom = ['2000?以上', '500-2000?','150-500?','50-150?','15-50?','少于15?']list_custom = ['2000人以上', '500-2000人', '150-500人', '50-150人', '15-50人', '少于15人']# inplace = True,使 recorder_categories生效jobData['companySize'].cat.reorder_categories(list_custom, inplace=True)# inplace = True,使 df生效jobData.sort_values(by = 'companySize',inplace = True,ascending = False)
          plt.figure(figsize=(12,11))gs = gridspec.GridSpec(10,1)plt.subplot(gs[:8])plt.suptitle(t=' 不同規(guī)模公司的??需求差異 ', fontsize=32, weight='bold', color='white', backgroundcolor='#3c7f99')
          # 畫散點圖plt.scatter(jobData.salary,jobData.companySize, c = jobData.workYear.map(color_map), s = (jobData.workYear*100), alpha = 0.35)plt.scatter(jobData.salary,jobData.companySize, c = jobData.workYear.map(color_map))
          plt.grid(axis = 'x')plt.xticks(np.arange(0,61,10), [str(i)+"k" for i in range(0,61,10)])plt.xlabel('?資', fontsize=18)plt.box(False)plt.tick_params(labelsize = 18) # 繪制底部標記plt.subplot(gs[9:])x = np.arange(5)[::-1]y = np.zeros(len(x))s = x*100plt.scatter(x,y,s=s,c=color_map.values(),alpha=0.3)plt.scatter(x,y,c=color_map.values())plt.box(False)plt.xticks(ticks=x,labels=list(workYear_map.keys()),fontsize=14)plt.yticks(np.arange(1),labels=[' 經(jīng)驗:'],fontsize=18)

          由下圖得知,大部分公司對工作經(jīng)驗為3年以上的求職者,需求量大。其中,需求量最大的是中大型公司。


          05

          結(jié)論


          1)北京為數(shù)據(jù)分析師需求量最大的一線城市;

          2)一線城市的數(shù)據(jù)分析師崗位的薪資很有競爭力;

          3)數(shù)據(jù)分析工程師的核心技能:數(shù)據(jù)挖掘、SQL、Python等。

          點分享
          點收藏
          點點贊
          點在看
          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩精品视频一区二区三区 | 中文字幕色站 | 中文字幕成人在线视频 | 色综合久久88色综合天天看泰 | 狠狠操夜夜爽 |