1. 程式人生 > >2018年 資料分析師 市場需求現狀分析報告 基於獵聘網

2018年 資料分析師 市場需求現狀分析報告 基於獵聘網

背景

最近幾個月學了資料分析相關知識,到現在也算學了不少內容,接下來打算慢慢開始找工作了。本專案打算著重複習 python 相關的知識。首先用requests、BeautifulSoup、pandas庫對<獵聘網>現有的資料分析招聘資訊進行爬取和儲存,然後利用numpy, pandas 和 matplotlib庫對爬取到的資料進行資料抽取、資料清洗以及視覺化呈現:

目的

主要是希望通過實際的資料來解答針對資料分析崗位的一些疑惑。具體來說,主要針對以下幾個問題:

  1. 資料分析師崗位需求的地域性分佈;
  2. 不同城市資料分析師的薪酬情況是怎樣的;
  3. 該崗位對於工作經驗的要求是怎樣的;

資料爬取:

import requests
import 
pandas as pd from bs4 import BeautifulSoup #在獵聘網全國範圍搜尋,得到100頁結果,下面一行程式碼是這100頁連結 url_list=['https://www.liepin.com/zhaopin/?init={}&imscid=R000000058&d_sfrom=search_fp_bar&key=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90'.format(pages) for pages in range(0,100)] def detail(url): result=requests.get(url) #獲取本頁面內容
soup=BeautifulSoup(result.text,'lxml') job_info=soup.find_all('div',class_='job-info')        #頁面審查元素->找到所需資訊的位置->通過位置獲取 job = pd.DataFrame(columns=[['position', 'salary', 'city', 'edu-background', 'experience']])#需要的欄位:職位、年薪、城市、教育背景、經驗 job['position']=[div.h3.get('title') for div in
job_info] job['salary'] = [div.p.get('title').split('_')[0] for div in job_info] job['city'] = [div.p.get('title').split('_')[1][:2] for div in job_info] job['edu-background'] = [div.p.get('title').split('_')[2] for div in job_info] job['experience'] = [div.p.get('title').split('_')[3] for div in job_info] return job job_ = pd.DataFrame(columns=[['position', 'salary', 'city', 'edu-background', 'experience']]) for i in range(0,100): job_=job_.append(detail(url_list[i]))    #迴圈獲取100頁的所有需要的資訊 job_.to_excel('../lagou/data0.xls')    #資料儲存

資料處理、視覺化:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#因爬取的時候確認過資料的完整性,所以就不需要再次確認了
input='../lagou/data.xls'       #檔案路徑
data=pd.read_excel(input)       #獲取檔案
data_city=data.groupby(by='city')['position'].count().sort_values(ascending=False)      #按城市降序排列
fig=plt.figure()
ax1=plt.subplot()
rect=ax1.bar(np.arange(len(data_city)),data_city.values,width=0.5)

def auto_xtricks(rects,xticks):         #X軸刻度標籤
x=[]
    for rect in rects:
        x.append(rect.get_x()+rect.get_width()/2)
    x=tuple(x)
    plt.xticks(x,xticks)

def auto_tag(rects,data=None,offset=[0,0]):          #資料標籤
for rect in rects:
        try:
            height=rect.get_height()
            plt.text(rect.get_x()+rect.get_width()/2.4,1.01*height,'%s'%int(height))
        except AttributeError:
            x=range(len(data))
            y=data.values
            for i in range(len(x)):
                plt.text(x[i]+offset[0],y[i]+0.05+offset[1],y[i])

auto_tag(rect,offset=[-1,0])
auto_xtricks(rect,data_city.index)
ax1.set_xticklabels(data_city.index)
plt.show()

結果如下:


(上面圖裂X軸的漢字顯示需要先處理下,不然只顯示兩個框,詳見:https://segmentfault.com/a/1190000005144275)

在獵聘網上,全國有7個城市的企業郵資料分析師的人才需求,其中1/3需求在北京市,排名第一。排名分別是:北京、上海、深圳、廣州、杭州-成都、福州

結論:目前,對大資料分析的需求主要集中在北上廣深,其次是杭州、成都、福州,其它城市目前的需求量較小(考慮到獵聘網上的招聘不能代表所有,所有不能說其它城市沒有需求)

data1=data[data['salary']!='面議']            #去掉薪酬為面議的
data1.index=range(len(data1))           #重設索引
def avg_salary(salary):         #因年薪是區間,此處處理是通過平均值得方式把區間轉換成一個數
s_list=salary.split(u'萬')       #去掉‘萬’字
s_list=s_list[0].split('-')        #以‘-’為分隔符,把區間拆成兩個數 
s_min=int(s_list[0])
    s_max=int(s_list[1])
    s_avg=float(s_max+s_min)/2          #求平均值
return s_avg

data1['avg_salary']=data1['salary'].apply(avg_salary)       

count_by_city_salary=data1.groupby(['city'])['avg_salary']      #把薪水按城市分組
top_data_by_city=data_city

df=[]

for group in top_data_by_city.index:
    v=count_by_city_salary.get_group(group).values
    df.append(v)

fig=plt.figure()
ax3=plt.subplot()
rect=ax3.boxplot(df)

ax3.set_xticklabels(top_data_by_city.index)
ax3.set_title(u'不同城市薪酬分佈')
ax3.set_ylabel(u'薪酬k/月')
plt.show()

可以看出,北上深廣的待遇是和城市發達程度很相關的(北-上-深-廣),杭州和程度算是得意與阿里巴巴和騰訊,才會有比較高的待遇,但是需求量不多。

count_by_exp=data1.groupby(['experience'])['position'].count().sort_values(ascending=False)
print(count_by_exp.index)
fig=plt.figure()
ax4=plt.subplot()
rect=ax4.bar(range(len(count_by_exp)),count_by_exp.values,width=0.5)

ax4.set_xticklabels(['','3年以上', '2年以上', '經驗不限', '1年以上', '5年以上'])
ax4.set_title(u'工作經驗分佈')

plt.show()

可以看出:主要需求是集中在2~3年工作經驗的,無經驗要求的非常少,所以對於轉行或者應屆生來說,入行的第一份工作還是比較難找的,所以正處在這個階段的朋友可以不用焦慮,不是你不行,這是由市場需求決定的,多點耐心就好。

總結

對於資料分析師技能的分析是比較簡陋的,在本次分析過程中,僅針對工具型的技能進行了分析。但其實,資料分析師所需要具備的素質遠不止這些,還需要有紮實的數學、統計學基礎,良好的資料敏感度,開拓但嚴謹的思維等。如果要對這些內容進行深入挖掘的話,應該會更加有趣。不過,需要掌握大量中文分詞、關鍵字提取等方面的知識和技能,難度也會更高。時間所限,在這裡不再進一步展開了。