mysqldatareader获取整行数据给datarow_基于拉钩数据分析岗的数据分析

本文介绍了如何通过爬虫获取拉钩网数据分析职位数据,进行数据清洗、处理和分析。主要涵盖了职位分布、薪资水平、工作经验与薪酬关系、福利待遇以及技能需求。结果显示,一线城市如北京、上海对数据分析师需求旺盛,平均薪资高,且金融、文娱、移动互联网等行业是热门领域。此外,SQL和Python等技术、用户增长和运营知识为必备技能。
摘要由CSDN通过智能技术生成

408157dc77916ca4f5b3981a6b97b8de.png

打工人,打工魂,打工都是人上人!年底了,打工人又又又准备换工作啦,准备找什么样工作呢?游泳健身…啊不,数据分析了解一下?送你一份最新出炉的数据分析师求职大礼包!

接下来开始我们的分析之旅吧!

一.分析思路

206ec299a00d23abb0e040ec99bbca53.png

二.获取并理解数据

利用爬虫爬取拉钩11月某天挂出的数据分析相关职位。拉钩爬虫相对比较简单,网上也有较多思路可以借鉴。代码详情如下:

import requests 
import json 
import xlwt
import time
import random

headers = { 
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
'Accept-Encoding': 'gzip, deflate, sdch', 
'Accept-Language': 'zh-CN,zh;q=0.8', 
'Upgrade-Insecure-Requests': '1',
'Referer':'https://www.lagou.com/jobs/list_java?labelWords=&fromSearch=true&suginput=&labelWords=hot',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4' } 


total_list = []

#页数; 一般默认上限是30页, 其实后面还可以继续请求
for page_num in range(0, 10000):

    print("requst page: ", page_num)

    #假如ip被封可以选择走ip代理
    proxies={ "http":"219.157.145.68:8118", "http":"120.83.110.86:9999", "http":"125.105.109.62:3128", "http":"171.221.35.32:8118", "http":"122.193.245.108:9999", } 

    #发送Get请求更新cookie 
    session = requests.session() 
    session.get('https://www.lagou.com/jobs/list_java?labelWords=&fromSearch=true&suginput=&labelWords=hot',headers=headers)

    #使用更新后的hsession请求Ajax json 
    data = { 'first':'true', 'pn':page_num, 'kd':'数据分析' } 

    #去页面抓包,然后获取那个url填进来(页面,kd 这些是自己填的;其他过滤条件去页面抓)
    rep = session.post('https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false',headers=headers,data=data)
    #只关心返回结果中的职位信息
    result_json = rep.json()
    position_json = result_json["content"]["positionResult"]["result"]
    
    if not position_json:
        print("get result is null... continue....break")
        print(result_json)
        time.sleep(random.randint(1,5))
        break

    total_list.append(list(position_json))

    #随机等个1-5s再发请求
    time.sleep(random.randint(1,5))

#开始写excel
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')

print("get total page: ", len(total_list))

row_nums = 1
for page_idx in range(0, len(total_list)):
    for idx in range(0, len(total_list[page_idx])):
        
        dict_item = total_list[page_idx][idx]

        #第一页第一条要写表头
        if (page_idx == 0) and (idx == 0):
            label_nums = 0
            for key in dict_item:
                worksheet.write(page_idx, label_nums, label=key)
                label_nums = label_nums + 1

        label_nums = 0
        for key in dict_item:
            worksheet.write(row_nums, label_nums, dict_item[key])
            label_nums = label_nums + 1

        row_nums = row_nums + 1

print("write total nums: ",row_nums)
workbook.save('全国数据分析职位.xls')

爬虫运行结果会直接保存到Excel,打开之后部分数据截图如下:

2826542b130e61bae9e6fa6114ce5c1a.png

三.数据清洗

接下来我们按步骤对数据进行清洗:

1.选择子集

根据我们的问题,我们只需要

e9252e03bcd5b8b77e2af49a981120f5.png

这12列,其他的列我们可以隐藏或删除(数据清洗一般是建立副表);

2.删除重复值

选择“数据→删除重复值→positionid→确定”,进行删除;

3.缺失值处理

postitionid和city两列都是2661行数据,说明无数据缺失。在其他项目中若有数据缺失,将缺失数据整行删除;

4.一致化处理

把salary这一列进行处理,增加minsalary、maxsalary、avgsalary三列数据,分别双击+向下填充;

5b2e6170485ee85e6d596fd458c8f7e1.png

788b6571fc699035f61d3ea90ae608f4.png

ec8f4ab4b659d2a30e985acf191ae114.png

5.数据排序

按照avgsalary这一列降序排序,选中avgsalary一整列,点击“开始→排序与筛选→扩展选定区域→排序”;

6.异常值处理

表格有一行异常值“#VALUE!,将异常值整行删除。

四.构建模型与分析

1.招聘需求分析

1) 职位集中于一线城市,北京、上海占据总量的近56%;

2)北上深广四个1线城市占据前四位,而北京、上海分别以1031个职位,38.77%的占比和453个职位、17.04%的占比遥遥领先,所以想要找数据方面的工作,去北京和上海找到工作的概率会大一些;

83e70a6534744fec0616512558e8596f.png

3)行业-职位数占比表明,职位的行业主要集中在金融、文娱|内容、移动互联网、电商,消费生活(TOP5占比56.5%),求职时应重点考虑占比排名靠前的行业;

0b1158b955f8e714bf115b1dcca3c739.png

4)规模越大的公司需求量最大,2000人以上规模的公司的需求数量最大;

5)从公司融资阶段来看,上市公司和不需要融资占比大,共占比51%。占比最少的是天使轮的2%。原因可能在于,天使轮的公司大都是初创型企业,除非它是做数据服务的,不然,这个阶段的公司重点可能会更偏向产品的研发或者其他,而不是数据分析。

d1aa74d0d65bbc5ccfffdf5dce72c15d.png

2.薪酬与福利

1)根据描述分析统计,数据分析职位平均薪水是19.59k,众数30k,平均薪水还是很高的。按照平均薪水的降序排列,制图如下,平均薪水前5名的分别是北京、上海、杭州、深圳、厦门。这个和按照职位招聘数量排名前5名的城市有4个相同;

580c22920d918a8713f20bc0145a2ea9.png

2)根据不同的工作年限要求,职位数于薪资变化情况如下图所示:

b5f095062cac95a2b1bf68729193c8ac.png

企业职位中10年以上的职位数据较少,可能和中国大数据刚起步不久,行业内大多数从业者的工作经验很少有十年以上有关;

3)对工作经验的薪酬进行分析,从1-3年,3-5年,5-10年10年以上,每一段工作经验相较之前都有一个比较明显增长,可以看出工作经验对薪资提升的帮助是很大的。而且从图中可以看出工资的谈价空间很大,应聘者可以根据实际情况争取比较满意的薪酬;

4438ae22467da6d35dcbd8092b35f2ba.png

4)福利水平较高,工作氛围较好,社保、氛围与发展空间相关词出现最频繁。

对职位标签进行分词统计,获得词云图,并对TOP 10标签进行了统计:五险一金,带薪年假,发展空间大,绩效奖金,岗位晋升,弹性工作,节日福利,下午茶,扁平管理。

7634add87721f9faef721d005f027314.png

3.技能需求

对数据分析岗位描述进行聚合并分词,获得词云。由词云可以看出,职位的技能需求侧重业务与技术相结合,大体上业务侧重于用户增长、运营等,技术侧重于SQL和python等,具体需求因公司而异。在求职准备时,可以根据自身情况,选择职业类型,并根据所需技能进行重点的准备。

904124b17385f4c38963c7407c798708.png

最后总结一下:从城市需求、行业分布、公司规模、工作年限等几个方面对数据分析岗位做了相关解析,相信大家对这个岗位基本情况也有了初步认识,不过实际选择会更加困难。不同的城市竞争是不一样的,房贷压力、幸福指数、城市未来发展潜力都不一样,希望各位大家都能找到自己满意的职位~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值