python数据分析项目——拉勾网数据分析职位(一)

                本项目的数据来源是2019年拉勾网——上海的数据分析岗位的信息


首先第一步:爬取数据

爬取的代码就不贴上来了,有很多种,本人的爬虫水平仅限于BeautifulSoup库和requests库,更深入的scrapy等并没掌握;注意用requests爬取的话,请求方式是post,get是无法得到页码的

贴上最后爬取到的2019上海拉勾网数据分析岗位的csv文件链接:链接:https://pan.baidu.com/s/1jqYAs1HsBtHVM1BiRiHHqQ;提取码:nfoh

第二步:数据的清洗和重构

先正常导入数据分析需要的库,设置画图可显示中文和负号以及seaborn的主题

读取文件,爬取后的源数据是这样的

然后是去重,inplace=True直接将去重后的结果保存下来。

df.drop_duplicates(subset=['公司全称','职位名称','技能标签'], keep='first', inplace=True)

接下来要判断是否有缺失值,有的话需要处理缺失值

从上图可以看到还是有不少公司地址是带缺失的,我们这里可以填补成“未知”,再用布尔值索引方法看是否处理成功

df[df.fillna('未知').isna().values == True]

看数据发现,我们需要再添加一列薪资列,取薪资范围的中间值,方便之后做数据分析

tmp = df['薪资范围'].str.split('-', expand=True)

def drop_k(x): 

     return re.search('\d+', x).group()

tmp = tmp.applymap(drop_k)

tmp = tmp.apply(pd.to_numeric)

def average_s(x):

    return (x[0] + x[1]) / 2

tmp['平均薪资'] = tmp.apply(average_s, axis=1)

tmp

上述处理过后,可以发现,平均薪资已经出来了,就是薪资范围下限和薪资范围上限的均值

把列的名字改一下,可读性更强

tmp = tmp.rename({0:'最低薪资 单位:k',1:'最高薪资 单位:k','平均薪资':'平均薪资 单位:k'}, axis=1)

然后我们把做好的平均薪资表和原表合并一下

df = df.join(tmp)

现在,我们基本的数据清洗和重构已经完成了,后续就是根据具体要分析的内容来做可视化了

第三步:数据分析

我们先来分析下不同工作经验的岗位数量情况,并用直方图和饼图来可视化

首先去除“不限”这个不确定因素,然后将目前的“所需资历”按照从少到多来排序,增加可读性

tmp = df[df['所需资历'] != '不限']

result = tmp.groupby('所需资历') 

tmp2 = result.size() 

list_custom = ['应届毕业生', '1年以下', '1-3年', '3-5年', '5-10年', '10年以上']

下面自定义两个函数,一个专门进行排序,一个专门获取索引值和列值,后续也会用到

先用seaborn来画Bar状图

可以直观看到,工作经验要求3-5年的最多,1-3年其次,刚毕业或1年以下的经验是比较少的,我们换个饼图来看一下:

from pyecharts import Pie

pie = Pie('上海拉勾网数据分析 工作经验统计')

pie.add('', xindex, vals, is_label_show=True, legend_top='bottom',

                radius=[20,75], rosetype='area')

pie

未完待续,后续继续分析教育背景和薪资间的关系,工作经验和薪资之间的关系,公司行业的分布情况,工作标签分布情况等等

你可能感兴趣的:(python数据分析项目——拉勾网数据分析职位(一))