python數據分析項目——拉勾網數據分析職位(一)

????????????????本項目的數據來源是2019年拉勾網——上海的數據分析崗位的信息


首先第一步:爬取數據

爬取的代碼就不貼上來了,有很多種,本人的爬蟲水平僅限于BeautifulSoup庫和requests庫,更深入的scrapy等并沒掌握;注意用requests爬取的話,請求方式是post,get是無法得到頁碼的

貼上最后爬取到的2019上海拉勾網數據分析崗位的csv文件鏈接:鏈接:https://pan.baidu.com/s/1jqYAs1HsBtHVM1BiRiHHqQ;提取碼:nfoh

第二步:數據的清洗和重構

先正常導入數據分析需要的庫,設置畫圖可顯示中文和負號以及seaborn的主題

讀取文件,爬取后的源數據是這樣的

然后是去重,inplace=True直接將去重后的結果保存下來。

df.drop_duplicates(subset=['公司全稱','職位名稱','技能標簽'], keep='first', inplace=True)

接下來要判斷是否有缺失值,有的話需要處理缺失值

從上圖可以看到還是有不少公司地址是帶缺失的,我們這里可以填補成“未知”,再用布爾值索引方法看是否處理成功

df[df.fillna('未知').isna().values == True]

看數據發現,我們需要再添加一列薪資列,取薪資范圍的中間值,方便之后做數據分析

tmp = df['薪資范圍'].str.split('-', expand=True)

def drop_k(x):?

? ?? return re.search('\d+', x).group()

tmp = tmp.applymap(drop_k)

tmp = tmp.apply(pd.to_numeric)

def average_s(x):

????return (x[0] + x[1]) / 2

tmp['平均薪資'] = tmp.apply(average_s, axis=1)

tmp

上述處理過后,可以發現,平均薪資已經出來了,就是薪資范圍下限和薪資范圍上限的均值

把列的名字改一下,可讀性更強

tmp = tmp.rename({0:'最低薪資 單位:k',1:'最高薪資 單位:k','平均薪資':'平均薪資 單位:k'}, axis=1)

然后我們把做好的平均薪資表和原表合并一下

df = df.join(tmp)

現在,我們基本的數據清洗和重構已經完成了,后續就是根據具體要分析的內容來做可視化了

第三步:數據分析

我們先來分析下不同工作經驗的崗位數量情況,并用直方圖和餅圖來可視化

首先去除“不限”這個不確定因素,然后將目前的“所需資歷”按照從少到多來排序,增加可讀性

tmp = df[df['所需資歷'] != '不限']

result = tmp.groupby('所需資歷')?

tmp2 = result.size()?

list_custom = ['應屆畢業生', '1年以下', '1-3年', '3-5年', '5-10年', '10年以上']

下面自定義兩個函數,一個專門進行排序,一個專門獲取索引值和列值,后續也會用到

先用seaborn來畫Bar狀圖

可以直觀看到,工作經驗要求3-5年的最多,1-3年其次,剛畢業或1年以下的經驗是比較少的,我們換個餅圖來看一下:

from pyecharts import Pie

pie = Pie('上海拉勾網數據分析 工作經驗統計')

pie.add('', xindex, vals, is_label_show=True, legend_top='bottom',

? ??????????????radius=[20,75], rosetype='area')

pie

未完待續,后續繼續分析教育背景和薪資間的關系,工作經驗和薪資之間的關系,公司行業的分布情況,工作標簽分布情況等等

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容