通过拉勾网的数据分析数据分析行情

  • 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 数据概览

  1. 我们先看一下数据集的大小(行列情况):
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 去掉非数据分析岗的数据

  1. 我们的目标只有一点——数据分析岗位,对于其他的数据我们并不需要。
# 数据分析相应的岗位数量
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. 因为拉勾网爬取下来的薪水是一个区间,这里我们用薪水区间的均值作为相应职位的薪水。
# 处理过程
#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点:

  1. 各城市对数据分析岗位的需求情况
  2. 不同细分领域对数据分析岗的需求情况
  3. 数据分析岗位的薪资状况
  4. 工作经验与薪水的关系
  5. 公司都要求什么掌握什么技能
  6. 岗位的学历要求高吗
  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="{b}: {d}%")))pie.render_notebook()


小结: 就目前的形势来看,本科永远是占大头的,因为就各种性价比来看,永远是本科生最实惠。

4.7 不同规模的企业对工资经验的要求以及提供的薪资水平

最后的这个大家肯定也非常关心,那就让我们来瞧一瞧吧!

  1. 提取数据信息
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)
  1. 构造绘图的颜色区分
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)
  1. 构图的基本元素
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()

万众瞩目的时刻到了

小结: 其实总体看来,数据分析岗位在各种规模的公司都是存在的,不过大公司一般招收的各阶段的数据分析师都比较多一些,对于工作经验十足的数据分析师更是十分欢迎的,不过工作经验少的也可以努力争取的。总之,加油喽!

4.8 整体总结

  1. 对数据分析师有较大需求的主要还是一线城市,且主要集中于电商、金融和数据服务领域。
  2. 从薪水上看,北、上、深、杭处于薪资第一梯队,而广州作为一线城市在薪资上并无优势。
  3. 在工作要求方面,学历上数据分析岗位对学历的要求并不高,超过八成岗位仅要求本科学历即可;技能上超过六成的公司要求会Python/R和SQL, 对大公司而言,大约76%的职位要求掌握Python/R。
  4. 对薪水超过30k的职位,工作经验是一道分水岭。

总结

整体来说,这篇文章我是借鉴别的大佬的数据资料来进行分析的,所以在此必须感谢大佬提供的资料。我也是想从事关于数据分析岗位的,这个岗位说实话压力会很大,竞争力十足,但是也不要立刻放弃,你不试试怎么就知道自己真的不是主角呢?不过如果对于自己没有试错机会的人来说,那就慎重一点吧!总之能看到这里的各位都是有耐心的狼灭了,非常感谢大家,谢谢!

参考链接

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

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

  1. 利用python爬取股票交易数据

    利用python爬取股票交易数据 分析网站 找到返回的url url = https://xueqiu.com/service/v5/stock/screener/quote/list?page={p ...

  2. 爬虫入门:利用爬虫爬取有效数据后录入数据库(一)

    写在前面的话: 博主也是一个初学者,写的可能也不是很详细或者有错误的,希望大家可以多多指正,多多交流学习经验,不胜感激. 一.如何利用python连接数据库 利用pymysql来实现对数据库的连接 # ...

  3. 如何利用python爬取网站数据

    Python是一种非常适合用于网络爬虫的编程语言,以下是Python爬取网站数据的步骤: 1. 确定目标网站和所需数据:首先要找到需要爬取数据的网站,确定你需要爬取的数据是哪一部分. 2. 发送请求: ...

  4. python利用selenium爬取京东数据

    一直以来都是看别人博客学习,这次就自己发个,回馈回馈 先放上成功图,表示可用(末尾有打包的百度云链接供下载测试) 需要的模块,selenium pyquery,pymysql,还需要谷歌浏览器及其ch ...

  5. 如何利用Python爬取网站数据?

    1.基本方法 其实用python爬取网页很简单,只有简单的几句话: 这样就可以获得到页面的内容.接下来再用正则匹配去匹配所需要的内容就行了.但是,真正要做起来,就会有各种各样的细节问题. 2.登录 这 ...

  6. 爬虫实例 利用Ajax爬取微博数据

    随着代理IP技术的普及,爬虫的使用也变得简单起来,许多企业和个人都开始用爬虫技术来抓取数据.那么今天就来分享一个爬虫实例,帮助你们更好的理解爬虫.下面我们用程序模拟Ajax请求,将我的前10页微博全部 ...

  7. python能爬取网站后台数据_如何利用Python爬取网站数据?

    1.基本方法 其实用python爬取网页很简单,只有简单的几句话 这样就可以获得到页面的内容.接下来再用正则匹配去匹配所需要的内容就行了.但是,真正要做起来,就会有各种各样的细节问题. 2.登录 这是 ...

  8. 利用python爬取龙虎榜数据及后续分析

    ##之前已经有很多人写过相关内容,但我之前并未阅读过,这个爬虫也是按照自己的思路写的,可能比较丑陋,请见谅! 本人作为Python爬虫新手和股市韭菜,由于时间原因每晚没办法一个个翻龙虎榜数据,所以希望 ...

  9. 利用Python爬取金融市场数据

    一.写在前面 由于在平时的工作中,需要对某信托网的信托在售和资管在售数据进行统计分析,但是一条一条的输入,显然太过耗时耗力,于是萌生了写个爬虫的想法. 一门计算机语言,可以当做是在模仿人的目的或意图来 ...

最新文章

  1. Devstack — screen 调试工具的使用
  2. mysql err 1118_MySQL ERROR1118报错详解 Row size too large
  3. javascript基础:函数参数与闭包问题
  4. linux 内核恐慌,linux – CentOS 6.5 mdadm Raid 1 – raid数据检查期间的内核恐慌
  5. 如何从一段视频中一次性修整多个片段
  6. python turtle绘图
  7. jni调用dll方法报UnsatisfiedLinkError
  8. PPT表格要怎样让设计秒变高级
  9. Declustered RAID
  10. Android中屏蔽返回键,HOME键以及模拟HOME键返回效果的方法
  11. 离散——在谓词演算的推理过程中为什么要先消去存在量词再消去全称量词
  12. 电子版产品手册如何制作?简单的方法来了
  13. Yii Framework 开发教程(37) Zii组件-Dialog示例
  14. 一篇文章让你从JAVA零基础入门`OOP`编程12.19
  15. 石墨笔记,Ulysses和Effie哪个更适合学生?
  16. 两万字:讲述微信小程序之组件
  17. 摄影镜头调制传输函数MTF解读
  18. 驴途网--技术小结2
  19. 数据可视化神器,深入解读Smartbi自助仪表盘
  20. PDF转PPT怎么转?原来这个方法可以免费转

热门文章

  1. easyUI datagrid 控制列隐藏和显示
  2. 如何从Photoshop中提取笔刷到优动漫
  3. CentOS6.4离线安装mysql5.6.22
  4. 当你对未来迷茫的时候,请打开这个锦囊!
  5. 浅析25/50/100GE高速网络损伤仪的技术诉求
  6. Android双系统之基本问题研究
  7. IDEA查看maven依赖关系的方法
  8. Unity 打包图集
  9. webpack之工欲善其事,必先利其器
  10. 把扫描文件转变为word文档的最实用的四款OCR识别软件