日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用拉勾网爬取的数据查看当前的数据分析岗的市场行情

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用拉勾网爬取的数据查看当前的数据分析岗的市场行情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過拉勾網的數據分析數據分析行情

  • 1、明確需求和目的
  • 2、數據準備
  • 3、數據處理
    • 3.1 數據整合
      • 3.1.1 加載相關的庫包和數據集
      • 3.1.2 數據概覽
    • 3.2 數據清洗
      • 3.2.1 數據挑選與去重
      • 3.2.2 去掉非數據分析崗的數據
  • 4、 數據分析
    • 4.1 各城市對數據分析崗位的需求情況
    • 4.2 不同細分領域對數據分析崗的需求情況
    • 4.3 數據分析崗位的薪資狀況
    • 4.4 工作經驗與薪水的關系
    • 4.5 公司都要求什么掌握什么技能
    • 4.6 崗位的學歷要求高嗎
    • 4.7 不同規模的企業對工資經驗的要求以及提供的薪資水平
    • 4.8 整體總結
  • 總結
    • 參考鏈接

1、明確需求和目的

  • 針對當前形勢下分析數據分析崗位的行情。
  • 選取某一/某些招聘平臺上的招聘數據來進行數據分析。
  • 對于各大城市、各種規模的數據分析需求進行詳細的分析與總結。

2、數據準備

  • 數據來源為某位偉大的貢獻者提供的爬蟲和數據文件,是爬取拉勾網上的招聘數據信息。
  • 數據文件集為"lagou.csv",其中共有3140行數據,52具體特征。

3、數據處理

3.1 數據整合

3.1.1 加載相關的庫包和數據集

  • 其中用到的庫包主要包括pandas、numpy、matplotlib、seaborn和pyecharts
  • 使用的數據集是lagou.csv
# 導入相應的庫包以及設置相應的格式 import pandas as pd import numpy as np import seaborn as sns from pyecharts.charts import Pie from pyecharts import options as opts import matplotlib.pyplot as plt % matplotlib inline sns.set_style('white',{'font.sans-serif': ['simhei', 'Arial']}) # 可以選擇展示最大的行列數 # pd.set_option("display.max_column", None) # pd.set_option("display.max_row", None) # 導入數據集并查看數據中的前3個數據 df = pd.read_csv('./lagou.csv') df.head(3) # 如果想查看最后面的幾個數據可以使用tail() # df.tail(3) # 如果想要隨機檢查幾個數據可以使用sample() # df.sample(3)

3.1.2 數據概覽

  • 我們先看一下數據集的大小(行列情況):
  • df.shape


    2. 接著看一下這個數據集中的列名(特征):

    df.columns

    3.2 數據清洗

    3.2.1 數據挑選與去重

    # 取出我們進行后續分析所需的字段 columns = ["positionName", "companyShortName", "city", "companySize", "education", "financeStage","industryField", "salary", "workYear", "hitags", "companyLabelList", "job_detail"] df = df[columns].drop_duplicates() #去重 # 查看挑選后的數據長度 len(df)

    3.2.2 去掉非數據分析崗的數據

  • 我們的目標只有一點——數據分析崗位,對于其他的數據我們并不需要。
  • # 數據分析相應的崗位數量 cond_1 = df["positionName"].str.contains("數據分析") # 職位名中含有數據分析字眼的 cond_2 = ~df["positionName"].str.contains("實習") # 剔除掉帶實習字眼的 len(df[cond_1 & cond_2]["positionName"])

    # 篩選出我們想要的字段,并剔除positionName df = df[cond_1 & cond_2] df.drop(["positionName"], axis=1, inplace=True) df.reset_index(drop=True, inplace=True)
  • 因為拉勾網爬取下來的薪水是一個區間,這里我們用薪水區間的均值作為相應職位的薪水。
  • # 處理過程 #1、將salary中的字符串均小寫化(因為存在8k-16k和8K-16K) #2、運用正則表達式提取出薪資區間 #3、將提取出來的數字轉化為int型 #4、取區間的平均值 df["salary"] = df["salary"].str.lower()\.str.extract(r'(\d+)[k]-(\d+)k')\.applymap(lambda x:int(x))\.mean(axis=1)

    從job_detail中提取出技能要求
    我們將技能分為以下幾類:

    • Python/R
    • SQL
    • Tableau
    • Excel
      處理方式: 如果job_detail中含有上述四類,則賦值為1,不含有則為0。
    df["job_detail"] = df["job_detail"].str.lower().fillna("") #將字符串小寫化,并將缺失值賦值為空字符串 df["Python/R"] = df["job_detail"].map(lambda x: 1 if ('python' in x) or ('r' in x) else 0) df["SQL"] = df["job_detail"].map(lambda x: 1 if ('sql' in x) or ('hive' in x) else 0) df["Tableau"] = df["job_detail"].map(lambda x: 1 if 'tableau' in x else 0) df["Excel"] = df["job_detail"].map(lambda x: 1 if 'excel' in x else 0) # 我們隨機產看整理過后的數據情況 df.sample(3)


    3. 處理行業信息

    def clean_industry(industry):industry = industry.split(",")if industry[0]=="移動互聯網" and len(industry)>1:return industry[1]else:return industry[0]df["industryField"] = df.industryField.map(clean_industry)

    Tip: 在這一步我們的數據處理工作就初步結束了,因為這里我們整理出來的是我們后續需要的數據,接下來的一步就是最終的數據分析步驟了,請各位小伙伴擦亮自己的雙眼,穩住自己的雙手。Let’s go!

    4、 數據分析

    在此我們需要先明確我們的分析目標,主要是一下7點:

  • 各城市對數據分析崗位的需求情況
  • 不同細分領域對數據分析崗的需求情況
  • 數據分析崗位的薪資狀況
  • 工作經驗與薪水的關系
  • 公司都要求什么掌握什么技能
  • 崗位的學歷要求高嗎
  • 不同規模的企業對工資經驗的要求以及提供的薪資水平
  • 4.1 各城市對數據分析崗位的需求情況

    fig, ax = plt.subplots(figsize=(12,8)) sns.countplot(y="city",order= df["city"].value_counts().index,data=df,color='#3c7f99') plt.box(False) fig.text(x=0.04, y=0.90, s=' 各城市數據分析崗位的需求量 ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783') plt.tick_params(axis='both', which='major', labelsize=16) ax.xaxis.grid(which='both', linewidth=0.5, color='#3c7f99') plt.xlabel('') plt.ylabel('')


    小結: 從這個圖標我們可以看出,在很多著名的一線城市中對于數據分析崗位的需求量是十分巨大的,尤其是北上廣深,從中我們也可以明白數據分析在一線城市的立足之地是比較充沛的,當然競爭也在所難免。

    4.2 不同細分領域對數據分析崗的需求情況

    industry_index = df["industryField"].value_counts()[:10].index industry =df.loc[df["industryField"].isin(industry_index),"industryField"]fig, ax = plt.subplots(figsize=(12,8)) sns.countplot(y=industry.values,order = industry_index,color='#3c7f99') plt.box(False) fig.text(x=0, y=0.90, s=' 細分領域數據分析崗位的需求量(取前十) ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783') plt.tick_params(axis='both', which='major', labelsize=16) ax.xaxis.grid(which='both', linewidth=0.5, color='#3c7f99') plt.xlabel('') plt.ylabel('')


    小結: 在此我們也可以看到,數據分析崗位在各個不同的細分領域中的需求量不低,而且也都是當前的熱門領域,像電商、金融和數據服務等領域中都對數據分析有著極高的需求。

    4.3 數據分析崗位的薪資狀況

    fig,ax = plt.subplots(figsize=(12,8)) city_order = df.groupby("city")["salary"].mean()\.sort_values()\.index.tolist() sns.barplot(x="city", y="salary", order=city_order, data=df, ci=95,palette="RdBu_r") fig.text(x=0.04, y=0.90, s=' 各城市的薪資水平對比 ', fontsize=32, weight='bold', color='white', backgroundcolor='#3c7f99') plt.tick_params(axis="both",labelsize=16,) ax.yaxis.grid(which='both', linewidth=0.5, color='black') ax.set_yticklabels([" ","5k","10k","15k","20k"]) plt.box(False) plt.xlabel('') plt.ylabel('')


    另外我們再來看看一線城市的薪資對比:

    fig,ax = plt.subplots(figsize=(12,8)) fig.text(x=0.04, y=0.90, s=' 一線城市的薪資分布對比 ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783') sns.kdeplot(df[df["city"]=='北京']["salary"],shade=True,label="北京") sns.kdeplot(df[df["city"]=='上海']["salary"],shade=True,label="上海") sns.kdeplot(df[df["city"]=='廣州']["salary"],shade=True,label="廣州") sns.kdeplot(df[df["city"]=='深圳']["salary"],shade=True,label="深圳") plt.tick_params(axis='both', which='major', labelsize=16) plt.box(False) plt.xticks(np.arange(0,61,10), [str(i)+"k" for i in range(0,61,10)]) plt.yticks([]) plt.legend(fontsize = 'xx-large',fancybox=None)

    小結: 從上述圖表上我們可以看到數據分析在個城市的薪資水平,在一線城市中的薪資基本都是10k以上。例如廣州的平均薪資更多集中在10k;北京最高,集中在23k之間;雖然上海和深圳薪資主要集中20k,但是它們的需求非常廣泛。價值源于需求和利益,而且在以后,數據分析崗位或許會越來越熱門。

    4.4 工作經驗與薪水的關系

    corr = df.pivot_table(index="city",columns="workYear",values="salary") corr = corr[["應屆畢業生","1-3年","3-5年","5-10年"]] corr.loc[city_order]

    我們先看一下各大城市對于工作經驗和薪水的數據報表。

    接著我們再進行比較細致的圖表描繪:

    fig,ax = plt.subplots(figsize=(10,8)) sns.heatmap(corr.loc[df["city"].value_counts().index], cmap="RdBu_r", center=20, annot=True, annot_kws={'fontsize':14}) plt.tick_params(axis='x', which='major', labelsize=16) plt.tick_params(axis='y', which='major', labelsize=16,labelrotation=0) plt.xlabel(""),plt.ylabel("")


    小結: 從上述的報表和圖表我們可以看得到,數據分析崗的工作經驗與薪水幾乎是呈線性正相關關系。也就是說隨著工作經驗的增加,薪水也會隨著增加,表面著這并非就是一份年輕的青春飯,有想法的同學們可以考慮一下。

    4.5 公司都要求什么掌握什么技能

    py_rate = df["Python/R"].value_counts(normalize=True).loc[1] sql_rate = df["SQL"].value_counts(normalize=True).loc[1] tableau_rate = df["Tableau"].value_counts(normalize=True).loc[1] excel_rate = df["Excel"].value_counts(normalize=True).loc[1] print("職位技能需求:") print("Python/R:",py_rate) print("SQL:",sql_rate) print("Excel:",excel_rate) print("Tableau:",tableau_rate)

    我們看一下主要的技能要求占比:

    接著我用一張比較直觀的圖表展示,讓大家感受的更加貼切:

    另外補充的一個就是大公司對于技能的要求占比:

    df_skill = df.loc[(df["companySize"]=="2000人以上")&(df.skill!="其他")]["skill"].value_counts(normalize=True)fig, ax = plt.subplots(figsize=(12, 6)) sns.barplot(x=df_skill.index,y=df_skill.values, color='#3c7f99') plt.box(False)fig.text(x=0.08, y=0.9, s=' 大公司對技能的要求占比 ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783') plt.tick_params(axis='both', which='major', labelsize=16) ax.yaxis.grid(which='both', linewidth=0.5, color='#3c7f99')


    最后就是事關未來的發展前景與當前形勢了:

    def get_level(x):if x["Python/R"] == 1:x["skill"] = "Python/R"elif x["SQL"] == 1:x["skill"] = "SQL"elif x["Excel"] == 1:x["skill"] = "Excel"else:x["skill"] = "其他"return xdf = df.apply(get_level,axis=1)fig,ax = plt.subplots(figsize=(12,8)) fig.text(x=0.02, y=0.90, s=' 不同技能的薪資水平對比 ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783') sns.boxplot(y="skill",x="salary",data=df.loc[df.skill!="其他"],palette="husl",order=["Python/R","SQL","Excel"]) plt.tick_params(axis="both",labelsize=16) ax.xaxis.grid(which='both', 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)


    小結: Look! 現如今的市場行情要求要具備的數據分析技能要求就是這樣。占比最大的兩個就是Python/R 以及 SQL ,Excel的含量也挺不錯的,可以看情況使用,而對于Tableau的需求非常低,可以當作額外興趣去學習。對于Python/R,我覺得選取其中一門進行學習就可以,它們的市場占比是非常高的;而對于SQL,我只能說,若想爬的更高,那就必須去學,如果問Why?那就去看看上面那些圖表;Excel我覺得更多的前期過渡,因為Excel對于大量數據目前來看是硬傷。

    4.6 崗位的學歷要求高嗎

    education = df["education"].value_counts(normalize=True)from pyecharts.commons.utils import JsCode def new_label_opts():return opts.LabelOpts(formatter=JsCode("學歷要求")) pie = (Pie().add("",[list(z) for z in zip(education.index, np.round(education.values,4))],center=["50%", "50%"],radius=["50%","75%"],label_opts=new_label_opts()).set_global_opts(title_opts=opts.TitleOpts(title=""),legend_opts=opts.LegendOpts(is_show=False)).set_series_opts(label_opts=opts.LabelOpts(formatter=": ozvdkddzhkzd%")))pie.render_notebook()


    小結: 就目前的形勢來看,本科永遠是占大頭的,因為就各種性價比來看,永遠是本科生最實惠。

    4.7 不同規模的企業對工資經驗的要求以及提供的薪資水平

    最后的這個大家肯定也非常關心,那就讓我們來瞧一瞧吧!

  • 提取數據信息
  • company_size_map = {"2000人以上": 6,"500-2000人": 5,"150-500人": 4,"50-150人": 3,"15-50人": 2,"少于15人": 1 } workYear_map = {"5-10年": 5,"3-5年": 4,"1-3年": 3,"1年以下": 2,"應屆畢業生": 1 } df["company_size"] = df["companySize"].map(company_size_map) df["work_year"] = df["workYear"].map(workYear_map)
  • 構造繪圖的顏色區分
  • df = df.sort_values(by="company_size",ascending=True)df_plot = df.loc[~df.work_year.isna()]color_map = {5:"#ff0000",4:"#ffa500",3:"#c5b783",2:"#3c7f99",1:"#0000cd" } df_plot["color"] = df_plot.work_year.map(color_map) df_plot.reset_index(drop=True,inplace=True)

    3.函數干活,負責最累的活

    def seed_scale_plot():seeds=np.arange(5)+1y=np.zeros(len(seeds),dtype=int)s=seeds*100colors=['#ff0000', '#ffa500', '#c5b783', '#3c7f99', '#0000cd'][::-1] fig,ax=plt.subplots(figsize=(12,1))plt.scatter(seeds,y,s=s,c=colors,alpha=0.3)plt.scatter(seeds,y,c=colors)plt.box(False)plt.grid(False)plt.xticks(ticks=seeds,labels=list(workYear_map.keys())[::-1],fontsize=14)plt.yticks(np.arange(1),labels=[' 經驗:'],fontsize=16)
  • 構圖的基本元素
  • fig, ax = plt.subplots(figsize=(12, 8)) fig.text(x=0.03, y=0.92, s=' 不同規模公司的用人需求差異 ', fontsize=32, weight='bold', color='white', backgroundcolor='#3c7f99') plt.scatter(df_plot.salary, df_plot["companySize"], s=df_plot["work_year"]*100 ,alpha=0.35,c=df_plot["color"]) plt.scatter(df_plot.salary, df_plot["companySize"], c=df_plot["color"].values.tolist()) plt.tick_params(axis='both', which='both', length=0) plt.tick_params(axis='both', which='major', labelsize=16) ax.xaxis.grid(which='both', linewidth=0.75) plt.xticks(np.arange(0,61,10), [str(i)+"k" for i in range(0,61,10)]) plt.xlabel('工資', fontsize=18) plt.box(False) seed_scale_plot()

    萬眾矚目的時刻到了

    小結: 其實總體看來,數據分析崗位在各種規模的公司都是存在的,不過大公司一般招收的各階段的數據分析師都比較多一些,對于工作經驗十足的數據分析師更是十分歡迎的,不過工作經驗少的也可以努力爭取的??傊?#xff0c;加油嘍!

    4.8 整體總結

  • 對數據分析師有較大需求的主要還是一線城市,且主要集中于電商、金融和數據服務領域。
  • 從薪水上看,北、上、深、杭處于薪資第一梯隊,而廣州作為一線城市在薪資上并無優勢。
  • 在工作要求方面,學歷上數據分析崗位對學歷的要求并不高,超過八成崗位僅要求本科學歷即可;技能上超過六成的公司要求會Python/R和SQL, 對大公司而言,大約76%的職位要求掌握Python/R。
  • 對薪水超過30k的職位,工作經驗是一道分水嶺。
  • 總結

    整體來說,這篇文章我是借鑒別的大佬的數據資料來進行分析的,所以在此必須感謝大佬提供的資料。我也是想從事關于數據分析崗位的,這個崗位說實話壓力會很大,競爭力十足,但是也不要立刻放棄,你不試試怎么就知道自己真的不是主角呢?不過如果對于自己沒有試錯機會的人來說,那就慎重一點吧!總之能看到這里的各位都是有耐心的狼滅了,非常感謝大家,謝謝!

    參考鏈接

    大佬的鏈接:https://zhuanlan.zhihu.com/p/96073413

    總結

    以上是生活随笔為你收集整理的利用拉勾网爬取的数据查看当前的数据分析岗的市场行情的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。