“数据分析师”岗位分析

项目背景:

在互联网技术不断升级的今天,数据获取变的越来越容易,大数据行业越来越火,基于海量数据进行分析的数据分析人才逐渐成为各大企业追逐的宠儿。大数据推动起数据的深度分析与挖掘,使得研究结果更加客观,并且多维。
本文将以数据分析的方式对这个行业展开研究,尽可能让正在从事或有兴趣想加入这个行业的小伙伴们对于当前大数据行业的就业环境有更深入的了解和认识。

项目流程:

1.数据获取:访问前程无忧官网,找出需用作数据分析的数据并进行获取;
2.数据预处理:对获取数据进行去重、缺失值处理等一系列数据清洗操作;
3.数据可视化:文文字不如数据,数据不如图片,可视化是对于数据最好的展现方式,让人一目了然;
4.深入分析:对于数据深入分析,寻找不同因素与薪资之间的关系。

项目实施:

Part one:数据获取

在搜索数据的时候,岗位关键词我选择的是数据分析师(图1-1),这是因为其他的岗位关键词匹配度过低,搜索结果包含大量无效数据,而数据分析师匹配度高。地点选择了全国,是因为我想分析全国不同城市对于数据分析师岗位的需求量以及薪资水平。


1-1

在爬取的时候,我选择从二级页面爬取,目的是为了获得更多的信息(图1-2),以便后续能从更多的维度进行分析。抓取维度为:公司名字、类型、规模、行业、地点、福利;职位信息(职责、学历、技能、经验、薪资)。


1-2

最后一共获取8076条数据(图1-3)。
1-3

爬取数据源代码如下:

#获取165页网页链接,并将网页地址保存至data文件
import requests
from lxml import etree


get_dict = {
    "lang": "c",
    "stype": "1",
    "postchannel": "0000",
    "workyear": "99",
    "cotype": "99",
    "degreefrom": "99",
    "jobterm": "99",
    "companysize": "99",
    "lonlat": "0,0",
    "radius": "-1",
    "ord_field": "0",
    "confirmdate": "9",
    "fromType": "",
    "dibiaoid": "0",
    "address": "",
    "line": "",
    "specialarea": "00",
    "from": "",
    "welfare": ""
}
header_dict = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}


url = "https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,{}.html"

f = open("data.text","w",encoding="utf-8")

for current_page in range(1,165):
    new_url = url.format(current_page)
    # print(new_url)
    r1 = requests.get(url=new_url, params=get_dict, headers=header_dict)
    r1.encoding = r1.apparent_encoding
    html = etree.HTML(r1.text)
    a_tag_list = html.xpath("//div[@class='el']/p/span/a/@href")
    for a_tag in a_tag_list:
        f.write(a_tag+"\n")
        f.flush()
f.close()
#获取各维度数据,并写入Excel文件
import requests
from lxml import etree
import openpyxl

row_count = 1
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = "sheet1"

book_name_xlsx = '数据.xlsx'
header_dict = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"}


def format_data(new_url):
    r1 = requests.get(url=new_url, headers=header_dict)
    r1.encoding = r1.apparent_encoding

    html = etree.HTML(r1.text)
    # print(r1.text)
    # print(new_url)
    # 标题
    title = html.xpath("//div[@class='cn']/h1/text()")[0]
    # print(title)

    # 岗位信息inbox
    job_msg = html.xpath("//div[contains(@class,'bmsg') and contains(@class,'job_msg')]//text()")
    job_msg = "\n".join(job_msg)
    # print(job_msg)

    # 上班地址
    workplace = html.xpath("//div[contains(@class,'bmsg') and contains(@class,'inbox')]/p[@class='fp']//text()")
    workplace = "".join(workplace)

    # 地址,经验要求,学历要求,发布日期
    ltype = html.xpath("//p[contains(@class,'msg') and contains(@class,'ltype')]//text()")
    ltype = "".join(ltype)
    # print("".join(ltype))

    # 福利
    jtag = html.xpath("//div[@class='t1']//text()")
    jtag = "|".join(jtag)
    # print("|".join(jtag))

    # 公司名称

    com_name = html.xpath("//a[contains(@class,'com_name') and contains(@class,'himg')]/p//text()")
    if not com_name:
        com_name = html.xpath("//a[@class='com_name ']/p//text()")
    com_name = com_name[0]
    # print(com_name)

    # 公司类型
    com_tag = html.xpath("//div[@class='com_tag']//text()")
    i_flag, i_people, *i_trade = [com for com in com_tag if com.strip() != '']
    i_trades = " ".join(i_trade) if isinstance(i_trade, list) else i_trade
    # print(i_flag)
    # print(i_people)
    # print(i_trades)

    # 工资
    salary = html.xpath("//div[@class='cn']/strong//text()")
    if not salary:
        salary = ["",]
    salary = salary[0]
    # print(salary)
    res = [new_url, title, job_msg, workplace, ltype, jtag, com_name, i_flag, i_people, i_trades, salary]
    return [val.strip() for val in res]
    # return res


def write_excel_xlsx(value):
    global row_count

    for col in range(len(value)):
        sheet.cell(row=row_count, column=col + 1, value=str(value[col]))

    workbook.save(book_name_xlsx)
    row_count += 1


if __name__ == '__main__':
    f_error = open("error.txt","w",encoding="utf-8")
    f_info = open("data.txt", "r", encoding="utf-8")

    for row in f_info:
        try:
            url = row.strip()
            res = format_data(url)
            write_excel_xlsx(res)
            print(f"{row}插入excle成功")
        except Exception as e:
            f_error.write(row)

    f_info.close()
    f_error.close()
Part Two:数据预处理

1.因部分数据内容与数据分析岗位无任何关系,故将不匹配数据剔除。我的判定方式是将工作名称中包含"数据"、"分析"、"Data"、"Analyst"中任何一个关键词的保留,四个关键词一次都没有出现的则剔除。共剔除1261条与数据分析无关的数据(图2-1、2-2)。


2-1

2-2

2.由于有部分的数据内容存在重复(图2-3),故选出其中岗位描述相似度较高的数据,将这些数据直接剔除。共剔除567条重复数据。


2-3

3.爬取的时候要求字段里包含工作地点、工作经验、学历、招聘人数以及招聘日期等数据,将数据分列,并保留工作地点、工作经验、经历三个字段,删除招聘人数以及招聘日期字段。

分列完成后有1000余条数据并未明确学历要求,但在岗位描述中有提及相应学历要求,我找出了这些数据,并完善了约600条余条数据。另外有2000余条数据对于工作经验无要求,但部分数据在岗位描述中对于经验要求有所提及,操作方法与前者类似,完善了500余条数据。

处理前数据(图2-4):


2-4

处理后数据(图2-5):


2-5

4.由于福利字段内包含较多数据,故将数据进行分列,并用数据透视表的方式将相关福利字段内相应福利出现的频数进行统计,方便后期可视化的时候绘制词云。

处理前数据(图2-6):


2-6

处理后数据(图2-7):


2-7

5.行业类型的字段内包含多个行业,不利于后期对于行业的分析,故我只选择选取每条数据的第一级的行业类型,并将多余数据进行剔除。

处理前数据(图2-8):


2-8

处理后数据(图2-9):


2-9

6.工资字段内的数据是一个收入的区间值,时间单位有小时、天、月、年,计价单位有千和万,我选择把收入下区间与收入上区间进行拆分,并将不同的时间单位与计价单位进行单位统一,数据统一为"XXXX"元/月的格式。另外,我把收入按照从高到低的方式进行划分、归类并增加平均工资的字段,方便后期可视化操作。

处理前数据(图2-10):


2-10

处理后数据(图2-11):


2-11

7.对要求中需要用到的相关数据分析的技能进行统计,以方便后期观察各岗位对于技能树的要求。处理结果如下图所示(图2-12,其中1代表需要,0代表不需要)。
2-12

至此,数据预处理工作基本完成,清洗后数据共计6060条。

Part Three:数据可视化

1.薪资分布情况
从分布情况(图3-1)可以看出,数据分析师岗位的月薪集中在5000-8000元/月以及8000-12000元/月这两个区间段,从12000元/月-25000元/月中间的这三个区间段也是数据比较集中的区域,说明这个行业具有一定的发展空间和潜力。


3-1

2.各城市岗位数量分布情况
从如下两图(图3-2、图3-3)可以看出,数据分析师的工作机会最多的城市是上海、广州、北京、深圳这四个超一线城市,杭州、成都、武汉、南京等一线城市紧随其后。


3-2

3-3

3.学历要求情况
从下图(图3-4)看出,数据分析师岗位对于学历要求最多的是本科和大专,这两个学历的比重占到了全部数据的85.39%,可以看出数据分析师对于学历的要求比较宽松,当然如果是硕士甚至是博士学历会意味着你会有更多的选择,更好的机会和更高的收入。
3-4

4.工作经验要求情况
从下图(图3-5)看出,数据分析师岗位对于工作经验要求最多的是1年经验、2年经验以及3-4年经验,1-4年的工作经验要求占到了所有数据的91.11%。近些年科学技术的突飞猛进,得益于互联网和智能手机的发展,数据分析、大数据和人工智能行业逐渐兴起,因兴起时间较短,所以数据分析师岗位对于工作经验的要求比较友好。


3-5

5.技能要求情况
从下图(图3-6)看出,数据分析师对于从业者有一定的技能的要求,除去大家比较熟悉的excel之外,掌握数据库语言(sql)也是必备的技能。编程语言也是数据分析师需要点亮的技能树之一,其中以Python、R和Sas最为常见。当然如果你会挖掘、算法或者模型,无疑则是锦上添花。
3-6

6.行业分布情况
从下图(图3-7)看出,对于数据分析师需求量最多的三个行业分别是互联网、计算机以及金融,而服装、通信以及快消等传统行业紧随其后。
3-7

7.行业分布情况
从下图(图3-8)中看出,对于数据分析师需求最多是民营企业,占比到达了63.66%。另外国企、上市公司、合资公司以及外资企业对于数据分析师的需求度平分秋色,各占10%左右。
3-8

8.公司规模分布情况
从下图(图3-9)可以看出,需求数据分析师的公司规模集中在50人-500人左右,这些公司大多以民营公司或者创业公司为主。
3-9

9.企业福利情况
企业福利情况也是各位求职的小伙伴非常关心的要素之一,这么多福利中有没有哪些是让你非常心动的呢?


3-10
Part Four:深入分析
数据说明

我所关心的因变量Y是数据分析师收入水平(元/月)。数据分析师的收入水平是多种因素综合作用的结果,我共收集了前程无忧网站的6060条与数据分析相关的数据,想对于数据分析师收入水平的相关影响因素进行更加深入的研究。

数据包括工作地点、学历、工作经验等5个变量,数据说明如下图(图4-1)所示。


4-1
工资收入

从如下直方图可以看出,工资收入呈现右偏态分布,工资收入的均值为12008元/月,中位数为10000元/月。这一现象符合我们对于工资的基本认知,即存在少数高收入工作,从而拉高了工资的平均水平。


4-2

4-3

在本案例中,工资收入的最小值为1300元/月,所对应的工作是南京数据分析实习员;最大值为85000元/月,所对应的工作是杭州的高级数据分析师。

描述性分析

首先看学历因素以及工作经验因素,从分组箱线图(图4-4)中可以看出,学历以及工作经验对于工资收入的影响明显,存在一定的正相关。


4-4

再看公司类型因素,从分组箱线图(图4-5)可以看出,除去事业单位的工资收入水平明显偏高之外,其他公司类型的工资收入都比较接近。


4-5

接着来看行业类型以及工作地点因素,从分组箱线图(图4-6、4-7)可以看出,不同行业类型之间的工资收入水平比较接近,而在工作地点方面,上海、北京以及深圳的工资收入水平偏高。
4-6

4-7

综上所述,通过对数据的描述性分析,可以得出结论:对工资收入产生影响较大的因素包括学历、工作经验和工作地点。

项目总结:

通过这次对于“数据分析师”岗位的分析,相信各位小伙伴对于这个行业有了一些不同的了解和认识。虽然数据分析岗位的门槛比较友好,但是想要在这个行业有一个长远的发展,想要成为一名合格乃至优秀的数据分析师,除了需要不断积累、学习各种技能和知识以外,还要多思考,多总结,不断培养自己的数据思维以及分析能力,只有这样才能让自己在众人之中能够脱颖而出。漫漫长路,砥砺前行!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容