Python教程

Python 爬取3000份数据类的招聘需求,这个岗位竟这么香?

本文主要是介绍Python 爬取3000份数据类的招聘需求,这个岗位竟这么香?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

随着各行各业都在进行数字化转型,数据方面的人才也成为了各家企业招聘的重点对象,不同数据类型的岗位提供的薪资待遇又是如何的? 哪个城市最需要数据方面的人才、未来的发展前景与钱途又是怎么样的?

今天我抓取了某互联网招聘平台上面的招聘信息,来为大家分析分析。 我们大致会讲

  • 数据抓取的流程与步骤

  • 数据清洗的流程与步骤

  • 可视化的结果与分析

干货推荐

  • Python数据分析三剑客真香啊,还有高清思维导图
  • 绝了,这6个精挑细选的机器学习资料简直太香了
  • Python编程从入门到实战,看这一篇足够了

数据抓取的步骤

我们用当中的模块来发送与接收请求,然后用模块也解析返回的数据,代码如下Python``requests``BeautifulSoup

@retry(stop=stop_after_attempt(7))
def make_requests(url):
    response = requests.get(url=url, headers=headers)
    response_1 = BeautifulSoup(response.text, "lxml")
    return response_1

解析数据的代码如下

def process_data(index, job_title, response_text):

    response_2 = response_text.select("div.list__YibNq")

    for resp in response_2[0]:

        if resp.select("div.p-top__1F7CL a"):

            job_titles = resp.select("div.p-top__1F7CL a")[0].get_text()

            job_titles = ""

        if resp.select("span.money__3Lkgq"):

            payments = resp.select("span.money__3Lkgq")[0].get_text()

            payments = ""

然后最后将收集到的数据导出到当中,代码如下excel

df = pd.DataFrame(
        {"职位名称": job_titles_list, "薪资待遇": payments_list, "工作年限": work_years_list, "公司名称": company_name_list,
         "所处行业": industry_list, "岗位简介": job_title_description_list})
 
path = "job_files/"
if not os.path.exists(path):
    os.makedirs(path)
df.to_excel("./job_files/{}_{}.xlsx".format(job_title, index), index = False)

小编这次所抓取的岗位分别有“数据分析师”、“数据挖掘工程师”、“数据产品经理”、“大数据开发工程师”以及“数据运营助理”等等,接下来我们就针对所收集到的数据进行清洗与进一步的处理吧

数据的清洗与处理

我们用到的是模块,首先先导入所有收集到的数据Pandas

df_all = pd.DataFrame(columns=["职位名称", "薪资待遇", "工作年限", "公司名称", "所处行业", "岗位简介"])

for file in os.listdir("./job_files"):

    df = pd.read_excel("./job_files/" + file)

    df_all = df_all.append(df, ignore_index=True)

我们来看一下最终的数据集长什么样子

print(df_all.info())

output

<class 'pandas.core.frame.DataFrame'>

RangeIndex: 2238 entries, 0 to 2237

Data columns (total 6 columns):

 #   Column  Non-Null Count  Dtype 

---  ------  --------------  ----- 

 0   职位名称    2238 non-null   object

 1   薪资待遇    2238 non-null   object

 2   工作年限    2238 non-null   object

 3   公司名称    2238 non-null   object

 4   所处行业    2234 non-null   object

 5   岗位简介    2238 non-null   object
  • 删除重复项

数据集当中或许存在重复的内容,我们用方法来进行重复项的去除drop_duplicates()

df_all_1 = df_all.drop_duplicates()

output

<class 'pandas.core.frame.DataFrame'>

Int64Index: 2207 entries, 0 to 2237

Data columns (total 6 columns):

 #   Column  Non-Null Count  Dtype 

---  ------  --------------  ----- 

 0   职位名称    2207 non-null   object

 1   薪资待遇    2207 non-null   object

 2   工作年限    2207 non-null   object

 3   公司名称    2207 non-null   object

 4   所处行业    2203 non-null   object

 5   岗位简介    2207 non-null   object
  • 删除缺失值
df_all_1 = df_all_1.dropna(axis = 0, how = "any")

output

<class 'pandas.core.frame.DataFrame'>

Int64Index: 2203 entries, 0 to 2237

Data columns (total 6 columns):

 #   Column  Non-Null Count  Dtype 

---  ------  --------------  ----- 

 0   职位名称    2203 non-null   object

 1   薪资待遇    2203 non-null   object

 2   工作年限    2203 non-null   object

 3   公司名称    2203 non-null   object

 4   所处行业    2203 non-null   object

 5   岗位简介    2203 non-null   object
  • 对薪资数据的清洗

接下来为了方便对薪资数据进行统计分析,我们对此也需要进行相对应的处理

df_all_1["薪资待遇"] = df_all_1["薪资待遇"].str.replace("k", "000")

可视化分析结果

  • 薪资的不同

我们先来看薪资上面的差距,根据不同的职位名称来看,例如我们来看“数据产品经理”这个岗位

df_all_1[df_all_1["职位名称"].str.contains("产品经理")]['薪资待遇'].value_counts().head(5)

output

较多的是集中在20K-40K这个范围当中,具体我们可以通过下面这个可视化的结果来看

9f75933d715cb77fde53b442ae4497a9.png

我们可以发现的是整体的市场中“数据产品经理”这个岗位的整体待遇是相对更好一点的,其次便是“数据挖掘工程师”这个岗位,薪资一般也比较容易达到20K-40K之间的区间

  • 哪个城市的需求最多

接下来我们来看一下哪些城市对数据方面的人才需求是最多的,

df_all_1["城市分布"] = df_all_1["职位名称"].apply(lambda x: x.split("[")[1].split("·")[0])

df_all_1["城市分布"].value_counts().head(10)

output

可以看到的是对于数据方面的人才需求最旺盛的仍然是北京,上海排在第二,与此同时呢,杭州在这方面的需求上面已经超过了广州,位列第四,同时在前十名当中成都南京以及武汉与西安都纷纷上榜

ca3bce2f719823e5104922a2e2f0be3f.png

  • 哪个行业所需要的数据岗位最多呢?

接下来我们来看一下哪个行业所需要的数据方面的人才最多,

df_all_1["行业"] = df_all_1["所处行业"].apply(lambda x: x.split("|")[0].split("/")[0])

df_all_1["行业"].value_counts().head(10)

output

从上面的结果中看到,除了“数据服务”行业之外,还有“内容咨询、短视频”领域、“软件服务”、“科技金融”、“电商平台”、“IT技术服务”等领域对于数据方面的人才都有着相当旺盛的需求

9e86254a04214a0fca6fcc9104163594.png

  • 对于学历的要求是什么样的呢?

我们来看一下各家公司对于数据方面的人才,在学历上又有何种要求呢?

df_all_1["学历要求"] = df_all_1["工作年限"].apply(lambda x: x.split("/")[-1])

df_all_1["学历要求"].value_counts()

output

一般来说仅仅是“本科”的学历就可以了,当然还有少数的公司对于学历的要求是局限在硕士之上

  • 岗位的简短介绍

各家公司为了吸引越来越多的人才前往加入公司,也打出了各色各样的标语,小编做了汇总,并且做成词云图,首先我们用模块对文本数据进行分词jieba

word_num = jieba.lcut(text, cut_all = False)

rule = re.compile(r"^[\u4e00-\u9fa5]+$")

word_num_selected = [word for word in word_num if word not in stop_words and

                   re.search(rule, word) and len(word) >= 2]

接着我们使用模块来进行词云图的绘制stylecloud

stylecloud.gen_stylecloud(text=" ".join(review_list), max_words=100, collocations=False,

                          font_path="KAITI.ttf", icon_name="fab fa-apple", size=653,

                          output_name="4.png")

output

4a2a30f13bca662eed42b02843265fe0.png

这篇关于Python 爬取3000份数据类的招聘需求,这个岗位竟这么香?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!