岗位数据分析

分析背景
这是一个用数据说话的时代,也是一个依靠数据竞争的时代,日前生活各处都离不开数据随之数据信息日益增长,需要从数据中搜集、整理、分析,并依据数据做出行业研究、评估和预测为公司提升业绩等,所需职业就是数据分析师。在招聘网站有很多数据分析师的招聘信息,那接下就用数据分析可视化更加直观的分析数据分析师目前的薪资,学历等信息以及公司规模情况。

数据分析思维导图:

最终可视化展示(Power BI)

1.数据信息
数据来源:爬取招聘网站的招聘信息(数据截止20201213)
数据字段说明:
job_name:岗位名称
company_name:公司名称
providesalary:薪资
workarea:工作地点
updatedate:招聘发布时间
companytype:公司类型
companyind:公司行业
companysize:公司规模
education:学历
experience:工作经验

前期了解后就可以愉快的进行撸码数据分析了
2.正文开始
2.1导入需用到的库:

import pymysql
from sqlalchemy import create_engine
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
#画图时显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

2.2连接数据库导入数据:

#建立数据库连接
conn = create_engine('mysql+pymysql://system:123456@localhost:3306/test',encoding='utf8')
#读取数据 忽律薪资为天数的信息
sql = "select job_name,company_name,providesalary,workarea,updatedate,companytype,companyind,companysize,education,experience from job_data where providesalary not like '%%天%%' and job_name like '%%数据分析%%'"
data = pd.read_sql(sql=sql,con=conn)

2.3数据处理
重复数据处理:

#查看重复数据
data.duplicated().sum()
#删除重复数据
data.drop_duplicates(inplace=True)

缺失值处理:

#查看缺失值
data.isnull().sum()
#查看缺失值具体行数 6947,7528
data[data.isnull().T.any()]
#将缺失值赋值并修改原数据
data.fillna('未填写',inplace=True)

数据字段分列:

#处理薪资字段
#增加薪资时间
data['amtdate'] = data['providesalary'].str.split('/').str[1]
#最小薪资
data['min_amt']=data['providesalary'].str.split('-').str[0]
#data['min_amt'].astype('float')
#最大薪资
data['max_amt'] = data['providesalary'].str.split('-').str[1].str.slice(0,4).str.split('万').str[0].str.split('千').str[0]
#城市
data['city'] = data['workarea'].str.split('-').str[0]

清洗加工分列后的数据:

#将缺失值赋值
data.loc[data.amtdate.isnull() , 'amtdate' ] = '面议'
data.loc[data.min_amt=='' , 'min_amt' ] = '0'
data.loc[data.max_amt.isnull() , 'max_amt' ] = '0'
#特殊处理1.5千以下\\/月
data.loc[data['providesalary'].str.contains('以下'),'min_amt'] = '0'
data.loc[data['providesalary'].str.contains('以下'),'max_amt'] = '1.5'
#特殊处理100万以上\/年
data.loc[data['providesalary'].str.contains('以上'),'min_amt'] = '100'
data.loc[data['providesalary'].str.contains('以上'),'max_amt'] = '0'

数据类型转换(为了更好的计算,将薪资单位变成元):

#数据类型转换
data['max_amt'] = data['max_amt'].astype('float')
data.loc[data['providesalary'].str.contains('万'),'max_amt'] = data['max_amt']*10000
data.loc[data['providesalary'].str.contains('千'),'max_amt'] = data['max_amt']*1000data['min_amt'] = data['min_amt'].astype('float')
data.loc[data['providesalary'].str.contains('万'),'min_amt'] = data['min_amt']*10000
data.loc[data['providesalary'].str.contains('千'),'min_amt'] = data['min_amt']*1000

增加字段:

#平均薪资
data['avg_amt'] = (data['min_amt']+data['max_amt'])/2
#平均薪资 年薪转换成月薪
data.loc[data.amtdate=='年','avg_amt'] = (data['avg_amt']/12).round(1)

2.4数据分析(Python绘图展示):
公司分析
岗位需求城市分布TOP10

#岗位需求城市分布(前10)
city_spread = data[data.city!='异地招聘'].groupby('city').nunique()['company_name'].reset_index()
city_spread.columns = ['city','num']
#取需求数量前十的数据
city_spread_top = city_spread.sort_values(by = 'num',ascending = False).head(10)
#绘图直方图展示
plt.bar(city_spread_top.city,city_spread_top.num)
plt.show()


公司类型

#公司类型分析
company_type = data.groupby('companytype').nunique()['company_name'].reset_index()
company_type.columns = ['companytype','num']
#将公司类型为空的赋值未填写
company_type.loc[company_type.companytype=='','companytype'] ='未填写'
#绘图饼图展示
plt.figure(figsize = (20,10))
plt.pie(company_type.num,labels=company_type.companytype,autopct='%.1f%%')
plt.title('公司类型分布')
plt.legend(company_type.companytype,fontsize = 8)
plt.show()


公司领域

#公司领域分析
company_field = data.groupby('companyind').nunique()['job_name'].reset_index()
company_field.columns = ['companyind','num']
#排序
company_field_by = company_field.sort_values(by = 'num',ascending = True)plt.figure(figsize = (20,10))
plt.barh(company_field_by.companyind,company_field_by.num,align='center',height=0.7)
plt.show()


公司人数规模

#公司人数规模分析
company_peo = data.groupby('companysize').nunique()['job_name'].reset_index()
company_peo.columns = ['companysize','num']
company_peo.loc[company_peo.companysize=='','companysize'] ='未填写'plt.figure(figsize = (10,10))
plt.pie(company_peo.num,labels=company_peo.companysize,autopct='%.1f%%')
plt.title('公司人数规模占比')
plt.legend(company_peo.companysize,fontsize = 8)
plt.show()


岗位分析
薪资情况(岗位需求前10 )

#岗位分析
#薪资情况(岗位需求前10 )
#薪资总和
amt_type = data[data.city!='异地招聘'].groupby('city').sum()['avg_amt'].reset_index()
amt_type.columns = ['city','num']
#地区平均薪资=薪资总和/公司数量
amt_spread = pd.merge(city_spread_top,amt_type,how='inner',on='city')
amt_spread.columns = ['city','num','amt']
amt_spread['avg_amt']=amt_spread['amt']/amt_spread['num'].round(1)plt.bar(amt_spread.city,amt_spread.avg_amt)
plt.show()


工作经验

#工作经验
work_exp = data[data['experience'].str.contains('经验')].groupby('experience').nunique()['job_name'].reset_index()
work_exp.columns = ['experience','num']plt.figure(figsize = (20,10))
plt.barh(work_exp.experience,work_exp.num,align='center',height=0.7)
plt.show()


学历

#学历分析
edu = data[~data['education'].str.contains('经验')].groupby('education').nunique()['company_name'].reset_index()
edu.columns = ['education','num']
#空值为不限
edu.loc[edu['education'].str.contains(r' '),'education'] ='不限'plt.figure(figsize = (20,10))
plt.barh(edu.education,edu.num,align='center',height=0.7)
plt.show()


薪资分析
城市经验薪资

#薪资分析
#城市 经验 薪资
type1 = data[data.city!='异地招聘'].groupby(['city','experience']).sum()['avg_amt'].reset_index()
#空值为不限
type1.loc[type1['experience'].str.contains(r' '),'experience'] ='不限'#数量
type1_num =  data[data.city!='异地招聘'].groupby(['city','experience']).nunique()['job_name'].reset_index()
#合并
type1_hb = pd.merge(type1_num,type1,how='inner',on=['city','experience'])
type1_hb.columns = ['city','experience','num','amt']
type1_hb['avg_amt']=type1_hb['amt']/type1_hb['num'].round(1)
#前10城市
type1_hb_top = type1_hb.sort_values(by = 'num',ascending = False).head(30)
del type1_hb_top['amt']
del type1_hb_top['num']#行转列
type1_hb_top2 = type1_hb_top.set_index(['city', 'experience']).unstack(level=1).reset_index()
type1_hb_top2.columns = ['city',"1年经验","2年经验","3-4经验","5-7年经验","在校生应届生","无需经验"]
type1_hb_top2.fillna(0.0,inplace=True)
type1_hb_top2


3.分析总结
以上就是对数据各种维度进行可视化分析可以得出以下结论:
1.从岗位需求来看一般偏向与一线二线大城市,就业方面可以往这些地方发展
2.公司情况大部分为民营公司为主,领域为互联网电子商务/计算机软件行业,所以我觉得电子商务的业务知识还是要多理解比较好
3.学历基本为本科或大专为主次,大部分为本科
4.经验以3-4年工作经验为主,所以刚毕业的小伙伴可以先以学习经验为主

结语:
希望这篇文章可以给再看的小伙伴带来帮助,谢谢

Python数据分析及可视化-招聘网站岗位数据分析相关推荐

  1. SQL 招聘网站岗位数据分析

    数据清洗 1.删除包含空字段的行 create view v_data_clean_null as select * from `data` d where job_href is not null ...

  2. 招聘网站—Hive数据分析

    招聘网站-Hive数据分析 第1关:统计最热门的十种职业(招聘人数最多) #进入hive hive #在hive中创建数据库 mydb create database mydb; #使用数据库 myd ...

  3. python爬取前程无忧招聘网站数据搭建Hadoop、Flume、Kafka、Spark用Hive做数据分析Sqoop存储到Mysql并实现可视化

    文章目录 一.项目总体要求 二.环境搭建 1.安装包准备 2.安装jdk (1)查询是否安装java (2)卸载jdk (3)安装jdk (4)配置jdk环境变量 3.配置ssh免密登录 (1)进入到 ...

  4. Python爬虫+可视化分析技术实现招聘网站岗位数据抓取与分析推荐系统

    程序主要采用Python 爬虫+flask框架+html+javascript实现岗位推荐分析可视化系统,实现工作岗位的实时发现,推荐检索,快速更新以及工作类型的区域分布效果,关键词占比分析等. 程序 ...

  5. 招聘网站岗位职位标签大全(爬虫所用)

    JOB_TYBE = ['', '采煤掘进', '外观结构设计', '轧钢', '岩土工程师', '游戏开发', '医导', '窑炉工程师', '机械', '机电设备', '房地产开发', '农业水利 ...

  6. Python 实战分析某招聘网站数据分析岗位的招聘情况

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~ 今天案例难度指数: ☆☆☆ 准备 环境使用: Anaconda (python3.9) –>识别我们写的代码 开发工具: jupyter notebo ...

  7. 数据分析毕业设计 招聘网站大数据分析与可视化系统 - python flask

    文章目录 0 前言 1 课题背景 2 实现效果 3 Flask框架 4 Echarts 5 爬虫 0 前言

  8. Python毕业设计 大数据招聘网站爬取与数据分析可视化 - flask

    文章目录 0 前言 1 课题背景 2 实现效果 3 Flask框架 4 Echarts 5 爬虫 0 前言

  9. 【Python数据分析及可视化】美国犯罪监禁数据分析与可视化

    文章目录 前言 一.数据描述 二.数据预处理 1.缺失值处理 2.查看数据分布 三.犯罪情况可视化分析 1.州别维度的可视化分析 2.类型维度的可视化分析 3.性别维度的可视化分析 4.年龄维度的可视 ...

  10. python爬虫招聘-Python爬虫-爬取招聘网站信息(一)

    学习内容,来源于百度搜索 工具及环境 1.python版本:python 3.7.3 2.安装工具:beautifulsoup 3.系统环境:Windows10 4.浏览器:chrome 网页分析 i ...

最新文章

  1. 如何成为一名对话系统工程师
  2. android 默认中文时区,修改android默认系统语言为中文和时区
  3. 2020-10-25(个人int误区)
  4. 关于this和base
  5. post发送请求参数注意的问题
  6. 如何在mysql命令窗口获取到程序正在执行的sql语句
  7. java坦克大战思路总结
  8. 如何实现某个软件的单独断网/稳定地解决fluent断网计算中止问题/tecplot联网后打开程序出现报错问题
  9. ADF4351原理图PCB电路设计经验建议
  10. 【JavaWeb学习】14综合案例
  11. 富士施乐3065扫描教程_富士施乐打印机3065怎么连接电脑扫描
  12. P1125 [NOIP2008 提高组] 笨小猴 java
  13. 2021.12.18-参加青少年人工智能编程水平(YCL)测试5级C++(良好通过)
  14. PHP支付宝转账到支付宝账号
  15. Error: Delta RPMs disabled because /usr/bin/applyd
  16. 蛋白质生物学概述(一)
  17. vba自定义函数,设置加载宏,建立自己的excel函数库,代码库
  18. 刘强东的敌与友:嘲讽王健林一亿小目标,性侵案后李国庆说该原谅
  19. 三次握手与四次挥手的爱恨情仇
  20. 吐血推荐珍藏的 Chrome 插件二

热门文章

  1. layUI table表格合并
  2. java options设置_JAVA_TOOL_OPTIONS和_JAVA_OPTIONS
  3. java web代码及展现_抓网页_面包网_javaWeb展示
  4. 定时器的ETR有何功能?
  5. mpeg怎么转换成mp4?
  6. Symantec Endpoint Protection 14.3 RU3 (macOS, Linux, Windows) - 端点安全解决方案
  7. 网页制作html山鸡,做一个简单的html网页
  8. 密码分析(二):线性密码分析
  9. itest手机考试有监控吗_itest机考说明
  10. 会话语义角色标注:Conversational Semantic Role Labeling