数据分析师岗位分析

 前言

这是一个用数据说话的时代,也是一个依靠数据竞争的时代。世界500强企业中,有90%以上都建立了数据分析部门。IBM、微软、Google等知名公司都积极投资数据业务,建立数据部门,培养数据分析团队。各国*和越来越多的企业意识到数据和信息已经成为企业的智力资产和资源,数据的分析和处理能力正在成为日益倚重的技术手段。利用matpIotlib创建散点图以及静态或交互式的可视化结果。

数据来源

拉勾网

导包

import numpy as np
import pandas as pd
import seaborn as sns
import jieba
import jieba.analyse
import re
from wordcloud import WordCloud
from matplotlib import pyplot as plt
from matplotlib import style
style.use(ggplot)
# from matplotlib.font_manager import FontProperties
import pprint
# 让图表直接在jupyter中展示出来
%matplotlib inline
# 解决中文乱码问题
plt.rcParams["font.sans-serif"] = SimHei
# 解决负号无法正常显示问题
plt.rcParams[axes.unicode_minus] = False
# import matplotlib as mpl
# 关闭警告信息
import warnings
warnings.filterwarnings(ignore)

 读取查看数据

 

data = pd.read_csv(./lagou.csv)
数据分析师岗位分析

 

 数据清洗

data.info()
运行截图

  数据分析师岗位分析

data.describe()

  数据分析师岗位分析

 

 

 数据可视化

不同区域数据分析师职位的需求情况

plt.figure(figsize = (8,6))
data[address].value_counts().sort_values(ascending=False).plot.bar(width = 0.8,color = steelblue)
plt.ylabel(职位数量)
plt.xlabel(区域)
plt.title(不同区域的职位分布)
plt.grid(False)

  数据分析师岗位分析

plt.figure(figsize = (8,6))
data[address].value_counts().sort_values(ascending = False).plot.bar(width = 0.8,color = blue)
plt.xlabel(区域)
plt.ylabel(职位数量)
plt.title(不同区域数据分析师职位数量)
plt.grid(False)

 数据分析师岗位分析

不同行业数据分析师岗位的需求情况

# 存在多个行业,只取第一个
clean_foursquare = [str(i.split(,)[0]) for i in data.foursquare]
data[foursquare] = clean_foursquare
plt.figure(figsize = (8,6))
data[foursquare].value_counts().sort_values(ascending = True).plot.barh(width = 0.8,color = red)
plt.xlabel(职位数量)
plt.ylabel(职位名称)
plt.title(不同行业数据分析师职位数量)
plt.grid(False)

 数据分析师岗位分析

数据分析师对应聘者工作年限的要求

plt.figure(figsize = (8,6))
data[experience].value_counts().plot.barh(width = 0.6,color = orange)
plt.xlabel(职位数量)
plt.ylabel(工作经验)
plt.title(数据分析对求职者工作经验的要求,loc = "center")
plt.grid(False)

  数据分析师岗位分析

数据分析师对求职者学历的要求

education_count = data[education].value_counts()
labels=本科及以上,学历不限,硕士及以上,大专及以上
colors=[ lightskyblue, gold,yellowgreen, lightcoral]
explode=(0.1,0.1,0.1,0.1)
plt.axis(equal)
plt.title(数据分析师对求职者学历的要求,size = 15)
plt.pie(education_count,explode=explode,labels=labels,colors=colors,autopct=%1.1f%%,
        shadow=True,labeldistance=1.1,startangle=60,radius=1.2)

  数据分析师岗位分析

数据分析师的薪酬范围分布

 # 去除字段中‘k‘或‘K‘字符
clean_salary = [re.sub([k|K],‘‘,i) for i in data.salary]

# 将salary数据转换为DataFrame格式
salary = pd.DataFrame(clean_salary,columns = [salary])
salary_s = pd.DataFrame((x.split(-) for x in salary[salary]),columns = [bottomSalary,topSalary])
# 更改字段格式
salary_s[bottomSalary]=salary_s[bottomSalary].astype(np.int)
salary_s[topSalary]=salary_s[topSalary].astype(np.int)

# 计算平均值
salary_avg = [(salary_s[bottomSalary][i] + salary_s[topSalary][i])/2 for i in range(len(salary_s))]
salary_s[avgSalary] = salary_avg
# for i in range(len(salary_s)):
#     avg.append((salary_s[‘bottomSalary‘][i]+salary_s[‘topSalary‘][i])/2)
# salary_s[‘avgSalary‘]=avg

# 将salary_s表与原表进行拼接
data = pd.merge(data,salary_s,right_index=True,left_index=True)
data.head()

数据分析师岗位分析

plt.figure(figsize = (8,6))
plt.hist(data[avgSalary],bins=16,color=green)
plt.axis(tight) 
plt.title(薪酬分布)
plt.xlabel(每月薪酬(单位:K/月))
plt.ylabel(职位数量)
plt.grid(False)

  数据分析师岗位分析

公司规模与薪酬之间的关系

data[figure] = data[figure].map(str.strip)
data.groupby([figure]).count()

size1=data.loc[data[figure] == 15-50人,[figure,avgSalary]]
size2=data.loc[data[figure] == 50-150人,[figure,avgSalary]]
size3=data.loc[data[figure] == 150-500人,[figure,avgSalary]]
size4=data.loc[data[figure] == 500-2000人,[figure,avgSalary]]
size5=data.loc[data[figure] == 2000人以上,[figure,avgSalary]]

plt.figure(figsize = (20,8))
plt.xlabel(公司规模)
plt.ylabel(平均薪酬(K/月))
plt.title(公司规模与平均薪酬)
plt.grid(False)
plt.boxplot((size1[avgSalary],size2[avgSalary],size3[avgSalary],size4[avgSalary],size5[avgSalary]),
            labels=(15-50人,50-150人,150-500人,500-2000人,2000人以上))
# plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=0.8,axis=‘y‘,alpha=0.4)

数据分析师岗位分析

data[experience] = data[experience].map(str.strip)

# 把经验应届毕业生和经验不限归为经验1年以下
for i in range(len(data[experience])):
    if data[experience][i] in [经验应届毕业生,经验不限]:
        data[experience][i]=经验1年以下
# data[‘experience‘]
year1=data.loc[data[experience] == 经验1年以下,[experience,avgSalary]]
year2=data.loc[data[experience] == 经验1-3年,[experience,avgSalary]]
year3=data.loc[data[experience] == 经验3-5年,[experience,avgSalary]]
year4=data.loc[data[experience] == 经验5-10年,[experience,avgSalary]]

plt.figure(figsize = (20,8))
plt.xlabel(工作年限)
plt.ylabel(薪酬(K/月))
plt.title(工作年限与平均薪酬)
plt.grid(False)
# plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=0.8,axis=‘y‘,alpha=0.4)
plt.boxplot((year1[avgSalary],year2[avgSalary],year3[avgSalary],year4[avgSalary]),
            labels=(经验1年以下,经验1-3年,经验3-5年,经验5-10年))

数据分析师岗位分析

学历对薪酬的影响

data[education]=data[education].map(str.strip)
 
edu1=data.loc[data[education] == 学历不限,[education,avgSalary]]
edu2=data.loc[data[education] == 大专及以上,[education,avgSalary]]
edu3=data.loc[data[education] == 本科及以上,[education,avgSalary]]
edu4=data.loc[data[education] == 硕士及以上,[education,avgSalary]]

plt.figure(figsize = (20,8))
plt.xlabel(学历)
plt.ylabel(薪酬(K/月))
plt.title(学历与平均薪酬)
plt.grid(False)
# plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=0.8,axis=‘y‘,alpha=0.4)
plt.boxplot((edu1[avgSalary],edu2[avgSalary],edu3[avgSalary],edu4[avgSalary]),labels=(学历不限,大专及以上,本科及以上,硕士及以上))

数据分析师岗位分析

职业技能关键词

 

# 把每个岗位描述连接起来保存在文件中
description_text =  .join([i for i in data[description]])

with open(des.txt,w,encoding = utf-8) as f:
    f.write(description_text)
    f.close()

 

text = open(des.txt, r,encoding=utf-8).read()
stop_word = [岗位职责,任职要求,工作职责,岗位要求,任职资格,本科及以上学历,本科以上学历,职位描述,
             工作职责,岗位职责1,职位诱惑,职位要求,任职要求1,工作职责1,职位职责,计算机,数据分析,
             and,to,with,the,in,for,of]
wordcloud = WordCloud(font_path="./SimHei.ttf",
                      stopwords=stop_word,  # 去掉停用词
                      max_words=100,
                      width=2000,
                      height=1200).generate(text)
# 保存词云
wordcloud.to_file(DT.jpg)
# 显示词云文件
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

数据分析师岗位分析

 

 

 完整代码

  1 #导包
  2 import numpy as np
  3 import pandas as pd
  4 import seaborn as sns
  5 import jieba
  6 import jieba.analyse
  7 import re
  8 from wordcloud import WordCloud
  9 from matplotlib import pyplot as plt
 10 from matplotlib import style
 11 style.use(ggplot)
 12 # from matplotlib.font_manager import FontProperties
 13 import pprint
 14 # 让图表直接在jupyter中展示出来
 15 %matplotlib inline
 16 # 解决中文乱码问题
 17 plt.rcParams["font.sans-serif"] = SimHei
 18 # 解决负号无法正常显示问题
 19 plt.rcParams[axes.unicode_minus] = False
 20 # import matplotlib as mpl
 21 # 关闭警告信息
 22 import warnings
 23 warnings.filterwarnings(ignore)
 24 #读取查看数据
 25 data = pd.read_csv(./lagou.csv)
 26 data.head()
 27 #数据清洗
 28 data.info()
 29 data.describe()
 30 #不同区域数据分析师职位的需求情况
 31 #不同区域的职位分布
 32 plt.figure(figsize = (8,6))
 33 data[address].value_counts().sort_values(ascending=False).plot.bar(width = 0.8,color = steelblue)
 34 plt.ylabel(职位数量)
 35 plt.xlabel(区域)
 36 plt.title(不同区域的职位分布)
 37 plt.grid(False)
 38 #不同区域数据分析师职位数量
 39 plt.figure(figsize = (8,6))
 40 data[address].value_counts().sort_values(ascending = False).plot.bar(width = 0.8,color = blue)
 41 plt.xlabel(区域)
 42 plt.ylabel(职位数量)
 43 plt.title(不同区域数据分析师职位数量)
 44 plt.grid(False)
 45 #不同行业数据分析师岗位的需求情况
 46 # 存在多个行业,只取第一个
 47 clean_foursquare = [str(i.split(,)[0]) for i in data.foursquare]
 48 data[foursquare] = clean_foursquare
 49 plt.figure(figsize = (8,6))
 50 data[foursquare].value_counts().sort_values(ascending = True).plot.barh(width = 0.8,color = red)
 51 plt.xlabel(职位数量)
 52 plt.ylabel(职位名称)
 53 plt.title(不同行业数据分析师职位数量)
 54 plt.grid(False)
 55 #数据分析师对应聘者工作年限的要求
 56 plt.figure(figsize = (8,6))
 57 data[experience].value_counts().plot.barh(width = 0.6,color = orange)
 58 plt.xlabel(职位数量)
 59 plt.ylabel(工作经验)
 60 plt.title(数据分析对求职者工作经验的要求,loc = "center")
 61 plt.grid(False)
 62 #数据分析师对求职者学历的要求
 63 education_count = data[education].value_counts()
 64 labels=本科及以上,学历不限,硕士及以上,大专及以上
 65 colors=[ lightskyblue, gold,yellowgreen, lightcoral]
 66 explode=(0.1,0.1,0.1,0.1)
 67 plt.axis(equal)
 68 plt.title(数据分析师对求职者学历的要求,size = 15)
 69 plt.pie(education_count,explode=explode,labels=labels,colors=colors,autopct=%1.1f%%,
 70         shadow=True,labeldistance=1.1,startangle=60,radius=1.2)
 71 #数据分析师的薪酬范围分布
 72 # 去除字段中‘k‘或‘K‘字符
 73 clean_salary = [re.sub([k|K],‘‘,i) for i in data.salary]
 74 
 75 # 将salary数据转换为DataFrame格式
 76 salary = pd.DataFrame(clean_salary,columns = [salary])
 77 salary_s = pd.DataFrame((x.split(-) for x in salary[salary]),columns = [bottomSalary,topSalary])
 78 # 更改字段格式
 79 salary_s[bottomSalary]=salary_s[bottomSalary].astype(np.int)
 80 salary_s[topSalary]=salary_s[topSalary].astype(np.int)
 81 
 82 # 计算平均值
 83 salary_avg = [(salary_s[bottomSalary][i] + salary_s[topSalary][i])/2 for i in range(len(salary_s))]
 84 salary_s[avgSalary] = salary_avg
 85 # for i in range(len(salary_s)):
 86 #     avg.append((salary_s[‘bottomSalary‘][i]+salary_s[‘topSalary‘][i])/2)
 87 # salary_s[‘avgSalary‘]=avg
 88 
 89 # 将salary_s表与原表进行拼接
 90 data = pd.merge(data,salary_s,right_index=True,left_index=True)
 91 data.head()
 92 #薪酬分布
 93 plt.figure(figsize = (8,6))
 94 plt.hist(data[avgSalary],bins=16,color=green)
 95 plt.axis(tight) 
 96 plt.title(薪酬分布)
 97 plt.xlabel(每月薪酬(单位:K/月))
 98 plt.ylabel(职位数量)
 99 plt.grid(False)
100 #公司规模与薪酬之间的关系
101 data[figure] = data[figure].map(str.strip)
102 data.groupby([figure]).count()
103 
104 size1=data.loc[data[figure] == 15-50人,[figure,avgSalary]]
105 size2=data.loc[data[figure] == 50-150人,[figure,avgSalary]]
106 size3=data.loc[data[figure] == 150-500人,[figure,avgSalary]]
107 size4=data.loc[data[figure] == 500-2000人,[figure,avgSalary]]
108 size5=data.loc[data[figure] == 2000人以上,[figure,avgSalary]]
109 
110 plt.figure(figsize = (20,8))
111 plt.xlabel(公司规模)
112 plt.ylabel(平均薪酬(K/月))
113 plt.title(公司规模与平均薪酬)
114 plt.grid(False)
115 plt.boxplot((size1[avgSalary],size2[avgSalary],size3[avgSalary],size4[avgSalary],size5[avgSalary]),
116             labels=(15-50人,50-150人,150-500人,500-2000人,2000人以上))
117 # plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=0.8,axis=‘y‘,alpha=0.4)
118 #工作经验与薪酬的关系
119 data[experience] = data[experience].map(str.strip)
120 
121 # 把经验应届毕业生和经验不限归为经验1年以下
122 for i in range(len(data[experience])):
123     if data[experience][i] in [经验应届毕业生,经验不限]:
124         data[experience][i]=经验1年以下
125 # data[‘experience‘]
126 year1=data.loc[data[experience] == 经验1年以下,[experience,avgSalary]]
127 year2=data.loc[data[experience] == 经验1-3年,[experience,avgSalary]]
128 year3=data.loc[data[experience] == 经验3-5年,[experience,avgSalary]]
129 year4=data.loc[data[experience] == 经验5-10年,[experience,avgSalary]]
130 
131 plt.figure(figsize = (20,8))
132 plt.xlabel(工作年限)
133 plt.ylabel(薪酬(K/月))
134 plt.title(工作年限与平均薪酬)
135 plt.grid(False)
136 # plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=0.8,axis=‘y‘,alpha=0.4)
137 plt.boxplot((year1[avgSalary],year2[avgSalary],year3[avgSalary],year4[avgSalary]),
138             labels=(经验1年以下,经验1-3年,经验3-5年,经验5-10年))
139 #学历对薪酬的影响
140 data[education]=data[education].map(str.strip)
141  
142 edu1=data.loc[data[education] == 学历不限,[education,avgSalary]]
143 edu2=data.loc[data[education] == 大专及以上,[education,avgSalary]]
144 edu3=data.loc[data[education] == 本科及以上,[education,avgSalary]]
145 edu4=data.loc[data[education] == 硕士及以上,[education,avgSalary]]
146 
147 plt.figure(figsize = (20,8))
148 plt.xlabel(学历)
149 plt.ylabel(薪酬(K/月))
150 plt.title(学历与平均薪酬)
151 plt.grid(False)
152 # plt.grid(color=‘#95a5a6‘,linestyle=‘--‘,linewidth=0.8,axis=‘y‘,alpha=0.4)
153 plt.boxplot((edu1[avgSalary],edu2[avgSalary],edu3[avgSalary],edu4[avgSalary]),labels=(学历不限,大专及以上,本科及以上,硕士及以上))
154 #职业技能关键词
155 # 把每个岗位描述连接起来保存在文件中
156 description_text =  .join([i for i in data[description]])
157 
158 with open(des.txt,w,encoding = utf-8) as f:
159     f.write(description_text)
160     f.close()
161 text = open(des.txt, r,encoding=utf-8).read()
162 stop_word = [岗位职责,任职要求,工作职责,岗位要求,任职资格,本科及以上学历,本科以上学历,职位描述,
163              工作职责,岗位职责1,职位诱惑,职位要求,任职要求1,工作职责1,职位职责,计算机,数据分析,
164              and,to,with,the,in,for,of]
165 wordcloud = WordCloud(font_path="./SimHei.ttf",
166                       stopwords=stop_word,  # 去掉停用词
167                       max_words=100,
168                       width=2000,
169                       height=1200).generate(text)
170 # 保存词云
171 wordcloud.to_file(DT.jpg)
172 # 显示词云文件
173 plt.imshow(wordcloud)
174 plt.axis("off")
175 plt.show()

总结

1.在深圳数据分析师岗位需求主要集中在南山、福田,即互联网聚集地,总体待遇较高(基本上在8K以上),学历要求不是特别高(本科以上),大厂需求量较大,大量的工作经验需求集中在1-3年。

2.数据分析师分布的行业领域主要是移动互联网行业,不过也开始向传统行业(例如金融、教育)渗透。

3.数据分析师技能具备的频率排在前列的有:SQL,Python,数学统计,对数据敏感,Excel, SAS,SPSS, Hadoop,机器学习等,其中数学统计、SQL、Python、Excel是必备技能。

 

 

数据分析师岗位分析

上一篇:【575】连续卷积层


下一篇:【Flink源码】四、YarnJobClusterEntrypoint