学习笔记28 MySQL实战 3-30

1 招聘网站岗位数据分析

1.1 案例背景

某线下培训机构预开展数据分析方向课程,需对数据分析岗位的市场需求、就业情况和岗位技能做深入调研

现爬虫组已采集了与数据分析相关的招聘信息,由数据分析组完成分析报告,为企业战略规划提供有力依据。

公司内已开设学科有:游戏,运维

数据分析岗位的各项结果指标应与已有学科进行相对比,例如对比

数据分析、游戏、运维三个行业的招聘需求量、薪资分布等。

数据来源

此次招聘数据来源于来自51job,采集日期:2020-09-15

1.2 问题确认与目标拆解

1.3 问题解决思路

==上面已经指出了要分析的几个点,那么这里就开始进行了。

清洗数据

1. 缺失数据处理(例如:某行数据没有工作名称)

2. 重复数据处理(例如:同一个公司发布多个相同岗位)

3. 限定招聘地区

4. 过滤周边岗位

市场需求量

1. 按城市与岗位进行分组

2. 统计岗位招聘量

就业企业类型分布

1. 对企业类型进行分组

2. 统计每个企业类型的招聘数量与在总招聘量中的占比

岗位薪资

1. 薪资字段规范化(1-2万/月->薪资最小值:10000,薪资最大值:20000,薪资平均值:15000)

2. 按工作年限进行分组,计算每组的薪资均值(即:avg(薪资平均值))

3. 按企业类型进行分组,计算每组的薪资均值

岗位核心技能

1. 建立待评估的岗位技能表

2. 计算各个待评估技能在招聘需求中出现的次数

3. 得到出现次数最高的前30个技能,记为岗位的核心技能

1.4 案例实操

1.4.1 数据导入

==一开始的数据库并不是本地的,而是下载的一个sql文件,那么如何导入数据库呢?需要先在navicat里面建一个同名本地数据库

创建数据库

==这里详细说一下我导入数据库文件的方法,首先在navicat里面新建一个同名数据库,然后上G盘MySQL的安装文件的bin文件夹中(这是我的MySQL安装路径)使用cmd进入终端,然后使用mysql -hlocalhost -uroot -p输入密码进入MySQL,然后使用show databases;来看一下有没有刚刚新建的文件。

然后使用上述代码将sql数据库在本地打开,注意这个d:\test就是文件路径。

然后输入下面代码

终端中:

导入数据库

终端中:

< 后面的recruitment.sql是SQL文件的相对位置

如果提示找不到指定文件,可以在cmd中cd到保存recruitment.sql的父级文件夹,然后再执行导入命令或者用recruitment.sql的绝对地址,例如:mysql -uroot -p recruitment< d:/recruitment.sql

导入数据库是在终端

1.4.2 数据清洗

以"数据分析"招聘岗位数据为例:

缺失数据处理 --> v_data_clean_null

==这里数据清洗利用where来保留无缺失值和空格的字段

重复数据处理 --> v_clean_data_distinct

筛选重复数据,不可以使用:

==因为这条命令要求所有的信息全部一致才会被判定重复,而有些信息其实无关紧要,如下图

故对公司和职位进行去重,保留这个公司在这个职位上发布的最新招聘数据

这里一个公司对一个职位发了两个招聘通知,但是时间不同,我们保留时间更大的。

看上去有点复杂,其实还是很简单的,直接利用排序窗口函数,partition by的参数是公司和职位,order by的参数是时间。这里用的是row_number,这里为什么用这个,而不用rank和dense_rank,因为前者即便结果一样,也会给出不同的排序。

限定招聘地区 --> v_data_clean_workplace

==记住like后面的字符需要用%套上。like就是一个模糊查询

过滤周边岗位 --> v_data_clean_jobname

通过在招聘网站上搜索数据分析,搜索引擎会把在招聘信息中出现“数据分析”关键词的岗位按照一定的顺序列举出来,故得到了很多不是数据分析主方向、但任职要求中提到了数据分析技能的周边岗位

如何过滤周边岗位呢?

工作名称中必须出现指定的关键词,本次筛选的条件是:工作名称中要出现“数据”一词,否则记为周边岗位,过滤掉

对搜索结果的再一次过滤,称为二次检索,大部分的实现方式都是通过包含关键词来判断,而很难一开始就能选择到合适的关键词,所以需要在已有数据中不断尝试,过滤掉太多说明关键词太少、过滤掉太少说明关键词太多或者不准确,找到一个中间值即可

利用这个like模糊匹配来去除周边岗位

最终清洗结果 --> v_data_clean

将v_data_clean_jobname记为当前清洗的结果:

1.4.3 市场需求量

1.4.4 就业企业类型分布

==因为这里的招聘占比需要计算各个企业的招聘量和总的招聘量,一个select是无法完成的,所有这里需要两个select。

这里他将后面两个要查询的字段分别用两个select来写。

这个cast(decimal())感觉完全可以用round来替换

1.4.5 岗位薪资

统计岗位薪资,首先要规范化薪资字段,得到岗位月薪的最大值、最小值、均值

第一步,提取薪资单位

1-5千/月 --> 单位 1000

1-2万/月 --> 单位 10000

40-50万/年 --> 单位 833

                1万/年 --> 10000 / 12 --> 月薪

                10000 / 12 约等于 833

                故40万/年 --> 40 * 833 元/月

==在处理薪资这些单位不统一的信息时,需要先对单位进行统一

第二步 得到工资区间最小值、最大值与均值

==薪资不仅单位不统一,其值还是一个范围,所以还得再处理一下

第三步 按工作年限分组,求各组平均薪资

第四步 按企业类型分组,计算平均薪资

1.4.6 岗位核心技能

在skill_table中预先准备好了63个待评估技能点

第一步,获取前30名高频技能点及其出现频数

1.5 以相同的方式分析“游戏”和“运维”行业

1.6 撰写报告

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容