确定目标
- 简单分析数据分析相关岗位的薪酬状况及技能要求;
- 尝试数据分析从数据获取到数据分析报告撰写的整个数据分析流程,学习爬虫、数据清洗、数据分析相关技巧。
数据获取
获取的岗位数据来源于某招聘网站,采取爬虫的方式获取,岗位搜索的关键词为:“数据分析”,爬取的信息包括:岗位名称,城市,薪酬,学历要求,经验要求,岗位描述/职责,分五次爬取,爬取了北京、上海、广州、深圳、南京五个城市的岗位数据共1472条
数据清洗
在清洗之前,我已经将爬取的北京、上海、广州、深圳、南京的数据合并为一个excel文件,以下直接读取(使用read_csv时出现错误,可能是因为岗位职责/描述一栏,数据本身就包含逗号的缘故,故使用read_excel),这次数据清洗主要使用pandas库,的清洗工作包括:
- 删除无效的列和行,增加索引列
- 对薪酬列进行分割,分为最低薪酬salary_min和最高薪酬salary_max,去除无关字符
- 工作经验列划分类别:应届毕业生、一年以下、1-3年、3-5年、5-10年、10年以上,去除无关字符
- 学历列划分类别:大专、本科、硕士、博士
- 岗位职责/描述列去除无关字符
数据清洗代码如下:
from pandas import Series,DataFrame
import pandas as pd
#读取文件
parsed = pd.read_excel('C:/Users/King/Desktop/拉勾网数据分析/拉勾网数据.xlsx',
names = ['position','company','salary','city','expe','edu','desc'])
#新增列(后面作为索引),删除‘公司’列
parsed = parsed.reindex(columns = ['seq','position','salary','city','expe','edu','desc'])
#删除无关的行,指定索引列并赋值
parsed = parsed[~(parsed['position'].isin(['职位']))]
parsed['seq'] = range(parsed.iloc[:,0].size)
parsed.set_index(['seq'],inplace=True)
#薪酬列分割为salary_min和salary_max
salary_m = parsed['salary'].str.replace('k','').str.replace('K','').str.split('-', expand = True)
parsed = parsed.drop('salary', axis = 1).join(salary_m)
parsed.rename(columns = {0:'salary_min',1:'salary_max'}, inplace=True)
#经验列统一类别
expe_m = parsed['expe'].str.strip('经验年').str.replace('不限','应届毕业生')
parsed = parsed.drop('expe', axis = 1).join(expe_m)
#学历列统一类别
edu_c = parsed['edu'].str.replace(r'.*不限.*','大专').str.replace(r'及以上.*','')
parsed = parsed.drop('edu', axis = 1).join(edu_c)
#岗位职责列去除无关字符
desc_c = parsed['desc'].str.replace(r'[\n,"岗位职责","职位描述","职责描述","工作职责",":"]','')
parsed = parsed.drop('desc',axis = 1).join(desc_c)
清洗后的数据预览如下图:
数据简单分析
这次采集的数据维度较少,仅进行简单的分析,不涉及高深的统计学理论
基本描述
代码如下:
#获取不同城市的岗位数量
city_num = parsed['city'