欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于Python|“数据分析岗位”招聘情况分析!

程序员文章站 2022-04-27 17:54:30
...

基于Python|“数据分析岗位”招聘情况分析!

基于Python|“数据分析岗位”招聘情况分析!

◆ ◆ ◆  ◆ 

前言

数据分析岗位,的确是最近两年最火爆、话题度最高的岗位。

根据从业经验、技能要求的不同,可细分为数据分析工程师、数据分析师、数据专员。

小编我特别荣幸于2017年7月份开始逐步在工作中接触到数据分析,并且运用数据分析得到的结果来指导业务,增进业绩,实现了公司数据化运营的短期目标。

可以说,我转行转的特别轻松,我是幸运的;

也可以说,我转行转的着实被动,我是*的。嘿嘿,看到这里,有没有想打死我的冲动?!

不管怎么说,小编我现在非常热爱数据分析师这份职业,也希望尽自己的一份努力与辛苦,帮助更多仍在迷茫中前行的萌新。

今天,给大家带来的是:基于Python——“数据分析岗位”招聘情况分析!

数据分析实战

今天,我们将用网络爬虫爬取过来的1193847条数据进行深度数据分析,剖析一下到底值不值得放弃现有的工作、成就毅然决然地转行数据分析呢?!

  • 数据处理

          异常值处理

          重复值处理

          空值处理

          类型转换

  • 数据分析

          岗位数量、招聘人数

          所处行业、工作地点

          学历要求、薪资水平

  • 分析报告

一、导包、读取数据

import pandas as pd


import warnings
import numpy as np
warnings.simplefilter(action='ignore', category=FutureWarning)
warnings.simplefilter(action='ignore', category=UserWarning)


import matplotlib as mlt
import matplotlib.pyplot as plt


%matplotlib inline


# 读取txt格式的数据
dataset = pd.read_table(r'C:/Users/Administrator/Desktop/recruits.txt',low_memory = False)


dataset.info()# 全览数据可以发现:数据缺少字段名


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1193846 entries, 0 to 1193845
Data columns (total 13 columns):
940864          1193846 non-null int64
UI              1193846 non-null object
用户界面(UI)设计      1193846 non-null object
8001-10000      1193846 non-null object
3-5             1193846 non-null object
本科              1193846 non-null object
全职              1193846 non-null object
2017-11-15      1193846 non-null object
1               1193846 non-null object
杭州****技术有限公司    1193846 non-null object
计算机软件           1193690 non-null object
20-99           1193669 non-null object
杭州              1193801 non-null object
dtypes: int64(1), object(12)
memory usage: 118.4+ MB


# 自定义字段名
data = pd.read_table(r'C:/Users/Administrator/Desktop/recruits.txt',header = None,index_col = '序号',low_memory = False,
    names =['序号','岗位职责','岗位名称','薪资','工作时长','学历','职业类型','发布时间','招聘人数','公司名称','所处行业','公司规模','工作地点'])
data.head()


基于Python|“数据分析岗位”招聘情况分析!

# 自定义字段名添加成功
data.info()


# result
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1193847 entries, 940864 to 926760
Data columns (total 12 columns):
岗位职责    1193847 non-null object
岗位名称    1193847 non-null object
薪资      1193847 non-null object
工作时长    1193847 non-null object
学历      1193847 non-null object
职业类型    1193847 non-null object
发布时间    1193847 non-null object
招聘人数    1193847 non-null object
公司名称    1193847 non-null object
所处行业    1193691 non-null object
公司规模    1193670 non-null object
工作地点    1193802 non-null object
dtypes: object(12)
memory usage: 118.4+ MB
None


# 重置索引
data = data.reset_index()
data.tail()


基于Python|“数据分析岗位”招聘情况分析!

# 获取数据集的列名data.columns
# resultIndex(['岗位职责', '岗位名称', '薪资', '工作时长', '学历', '职业类型', '发布时间', '招聘人数', '所处行业',       '公司规模', '工作地点'],      dtype='object')

      

# 转换数据集,去掉序号,去掉公司名称(脱敏)
data = data[['岗位职责', '岗位名称', '薪资', '工作时长', '学历', '职业类型', '发布时间', '招聘人数','所处行业', '公司规模', '工作地点']]
data.info()


# result
data = data[['岗位职责', '岗位名称', '薪资', '工作时长', '学历', '职业类型', '发布时间', '招聘人数','所处行业', '公司规模', '工作地点']]


data.info()


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1193847 entries, 0 to 1193846
Data columns (total 11 columns):
岗位职责    1193847 non-null object
岗位名称    1193847 non-null object
薪资      1193847 non-null object
工作时长    1193847 non-null object
学历      1193847 non-null object
职业类型    1193847 non-null object
发布时间    1193847 non-null object
招聘人数    1193847 non-null object
所处行业    1193691 non-null object
公司规模    1193670 non-null object
工作地点    1193802 non-null object
dtypes: object(11)
memory usage: 100.2+ MB


data.head(10)

基于Python|“数据分析岗位”招聘情况分析!

二、数据处理

# 查看数据集是否存在异常值print('最早发布时间:',data['发布时间'].unique().min(),',最晚发布时间:',data['发布时间'].unique().max())
# 可以发现:发布时间异常最早发布时间:1970-01-01 ,最晚发布时间:2017-11-23
# 查看异常数据data[(data['发布时间']<'2017-01-01')]

基于Python|“数据分析岗位”招聘情况分析!

# 仅保留17年及以后的招聘信息
data = data[(data['发布时间']>='2017-01-01')]


# 重复值统计
data.duplicated().sum()


# result
35950


# 去重
data.drop_duplicates(inplace=True)


# 再次查看数据集情况,发现存在空值
data.info()


# result
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1157827 entries, 0 to 1193846
Data columns (total 11 columns):
岗位职责    1157827 non-null object
岗位名称    1157827 non-null object
薪资      1157827 non-null object
工作时长    1157827 non-null object
学历      1157827 non-null object
职业类型    1157827 non-null object
发布时间    1157827 non-null object
招聘人数    1157827 non-null object
所处行业    1157674 non-null object
公司规模    1157667 non-null object
工作地点    1157796 non-null object
dtypes: object(11)
memory usage: 106.0+ MB


# 空值处理:统计空值数量
data.isnull().sum()


# result
岗位职责      0
岗位名称      0
薪资        0
工作时长      0
学历        0
职业类型      0
发布时间      0
招聘人数      0
所处行业    153
公司规模    160
工作地点     31
dtype: int64


# 公司规模列空值较多,可具体查看
data[data['公司规模'].isnull()]

基于Python|“数据分析岗位”招聘情况分析!

# 删除空值data.dropna(inplace=True)
# 再次查看,发现所有数据都处理完毕data.info()
# result<class 'pandas.core.frame.DataFrame'>Int64Index: 1157647 entries, 0 to 1193846Data columns (total 11 columns):岗位职责    1157647 non-null object岗位名称    1157647 non-null object薪资      1157647 non-null object工作时长    1157647 non-null object学历      1157647 non-null object职业类型    1157647 non-null object发布时间    1157647 non-null object招聘人数    1157647 non-null object所处行业    1157647 non-null object公司规模    1157647 non-null object工作地点    1157647 non-null objectdtypes: object(11)memory usage: 106.0+ MB

三、数据分析

# 仅选择数据分析师岗位进行分析,大家还可以进行数据分析专员等分析data_da = data[data['岗位名称']=='数据分析师'].copy() # 不加copy()容易警告:SettingWithCopyWarningdata_da[ data_da['招聘人数']=='若干']    # 为了分析的方便,去掉“若干”情况

基于Python|“数据分析岗位”招聘情况分析!

# 数据处理,重新赋值
data_da.loc[ data_da['招聘人数']=='若干','招聘人数'] = 0
data_da['招聘人数'].value_counts()


# result1     
35313      9575      
9492      9346      
7224      4328      
2427      16210     
14512      7830      
719       2920      
1518      1415       
760       40        
225       116       
113       1
Name: 招聘人数, dtype: int64


# 查看招聘人数
data_da['招聘人数'] = data_da['招聘人数'].astype(int)
grb = data_da.groupby(['工作地点']).agg({'岗位名称':'count','招聘人数':sum}).sort_values(by = '岗位名称',ascending = False).head(10)
grb

基于Python|“数据分析岗位”招聘情况分析!

四、可视化

# 绘图说明不同城市对数据分析师的需求数量
grb.plot(kind = 'bar',figsize=(10,5),fontsize=12)


plt.legend(['岗位数量','招聘人数'])


plt.xlabel('工作地点',fontsize=15)
plt.show()

基于Python|“数据分析岗位”招聘情况分析!

# 查看所处行业情况
data['所处行业'].value_counts().head(10)


# result
互联网/电子商务               267519
计算机软件                  261188
IT服务(系统/数据/维护)          95320
教育/培训/院校                94988
专业服务/咨询(财会/法律/力资源等)     52931
媒体/出版/影视/文化传播           49300
基金/证券/期货/投资             32005
电子技术/半导体/集成电路           28652
房地产/建筑/建材/工程            25118
通信/电信/网络设备              24828
Name: 所处行业, dtype: int64


# 筛选出北京地区互联网公司数据分析师招聘数据
subdata = data[data['所处行业'].isin(['互联网/电子商务'])][(data['岗位名称']=='数据分析师')&(data['工作地点']=='北京')]
subdata.iloc[:20,:]

基于Python|“数据分析岗位”招聘情况分析!

# 学历因素subdata['学历'].value_counts(normalize = True)
# result本科    0.568910硕士    0.174679大专    0.142628不限    0.113782Name: 学历, dtype: float64
# 其他城市可能会用到-- subdata[subdata['学历'].isin(['中专','中技'])]-- subdata.loc[(subdata['学历']=='中专')|(subdata['学历']=='中技'),'学历'] = '不限'
# 绘图说明数据分析师对学历的要求subdata['学历'].value_counts(normalize = True)plt.pie(subdata['学历'].value_counts(normalize = True),labels = ['本科','硕士','大专','不限'],autopct='%.1f%%',startangle=180)plt.show()plt.close()

基于Python|“数据分析岗位”招聘情况分析!

# 薪资情况subdata.groupby(['学历','工作时长'])[['薪资']].describe()

基于Python|“数据分析岗位”招聘情况分析!

分析报告

1.本次共计处理元数据1193847条,来源于某著名求职类APP,可用于分析的数据为1157647条,所有数据发布时间均在17年,所以此分析报告代表17年数据分析师岗位情况,不过对19年、甚至20年求职的萌新具有现实指导意义。

2.由文中条形图可以看出,数据分析师岗位集中在一线城市,如北京、上海、深圳、广州;另外,西安对数据分析师的需求量是事先没有预料到的。

3.北京地区互联网行业对数据分析师的需求量最为旺盛,其次为计算机软件、IT服务业等。

4.北京地区互联网行业对数据分析师的学历要求本科占五成多,说明学历依然是筛选人才的门槛,不过大专学历也可以从事数据分析,需要更多的技能加持,良好的机遇。

5.北京地区互联网行业的数据分析师,相同工作年限本科、专科学历的薪资水平相差不大,对于刚转行的薪资水平基本处于8k-12k。

---------------------------------------- END ------------------------------------

读者朋友,如果您能认认真真地将文章看完,记得一定要帮严小样儿点点在看,就在文章右下角。

记得扫描二维码关注我哦,“转行数据分析,关注我就会特别简单”!

对您有帮助的话,记得转发、分享朋友圈,转行更顺利~

基于Python|“数据分析岗位”招聘情况分析!

(交流群二维码,记得“在看”后加群学习)

基于Python|“数据分析岗位”招聘情况分析!

在看”的永远18岁~

基于Python|“数据分析岗位”招聘情况分析!