对西安市计算机相关职位情况的分析
报告主题
本报告主要有以下几个目的:
- 分析西安市计算机相关职位的需求情况
- 分析西安市计算机相关职位的薪酬情况
- 分析西安市计算机相关职位的招聘要求
- 为广大意向从事计算机行业人群的就业提供借鉴和指导
数据来源
本报告对智联招聘
网站进行爬虫,主要采集以下几方面的数据,爬虫代码见作业中代码
部分。
- Java相关职位
- C++相关职位
- Python相关职位
- C#相关职位
- Ruby相关职位
- PHP相关职位
- .NET相关职位
- Swift相关职位
- Go相关职位
- Scala相关职位
分析思路
分析思路主要包含以下几步。
- 数据读取
- 数据整理
- 分析职位数量情况
- 分析职位月薪情况
- 分析招聘岗位要求
计算过程
以下是数据分析和数据挖掘过程
数据读取
将通过爬虫爬取的数据通过Python按行读取,去除不符合规则的数据,进而转换为字典,存在列表里面。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20def read_data():
lists=[]
try:
f = open('r.txt','r',encoding='utf-8')
tmp_list = f.readline()
lists.append(tmp_list)
while tmp_list:
tmp_list = f.readline()
lists.append(tmp_list)
except:
print('error:',tmp_list)
finally:
f.close()
datas = []
for item in lists:
if(not item.startswith('{\'')):
continue
dic = eval(item)
datas.append(dic)
return datas
数据整理
使用pandas包,将数据组织成DataFrame形式。
1
df = pd.DataFrame(datas)
将日期格式规范化,并对数据进行筛选,对月薪的数据进行筛选,选取格式为“XXXX-XXXX”的信息。
1
2
3
4
5
6
7
8
9
10
11
12
13df = pd.DataFrame(datas)
df['save_date'] = pd.to_datetime(df['save_date'])
df_clean = df[['position_name',
'feedback',
'company_name',
'salary',
'place',
'time',
'brief',
'link',
'save_date',
'keyword']]
df_clean = df_clean[df_clean['salary'].str.contains('\d+-\d+', regex=True)]根据链接作为标志判断爬取的数据是否有重复值,并进行去重工作。
1
df_clean_concat = df_clean_concat.drop_duplicates(['link'])
分析职位数量情况
对西安市计算机行业不同职位数量的分布情况进行分析。
首先以不同职位作为关键词进行分析,并按职位数量进行排序。
1
2
3
4
5df_key_main = df_city[df_city['keyword'].isin(KEYWORDS)]
df_key_main_count = df_key_main.groupby('keyword')['position_name','company_name'].count()
df_key_main_count['company_name'] = df_key_main_count['company_name']/(df_key_main_count['company_name'].sum())
df_key_main_count.columns = ['number', 'percentage']
df_key_main_count.sort_values(by='number', ascending=False, inplace=True)对西安市计算机行业不同职位数量的情况进行分析,以饼图的形式呈现。
1
2
3
4
5
6
7
8
9
10
11
12
13
14label = df_key_main_count['label']
sizes = df_key_main_count['number']
# 设置绘图区域大小
fig, axes = plt.subplots(figsize=(10,6),ncols=2)
ax1, ax2 = axes.ravel()
colors = ["blue","red","coral","green","yellow","orange"]
patches, texts = ax1.pie(sizes,labels=None, shadow=False, startangle=0, colors=colors)
ax1.axis('equal')
ax1.set_title('职位数量分布', loc='center')
# ax2 只显示图例(legend)
ax2.axis('off')
ax2.legend(patches, label, loc='center left', fontsize=9)
plt.savefig('job_pie.jpg')
plt.show()
所得饼图如下所示:
观察图表,可以看到,传统的Java和C++开发职位占据所有职位数量的半壁江山,此外,.NET,PHP,Python也占据了一部分,而像Scala,Swift等新出现的语言相关的职位则几乎没有。所以,像Java,C++在西安的计算机相关职位招聘中还是属于主流。
分析职位月薪情况
对西安市的职位月薪情况进行分析。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22df_salary_adjust = df_clean_concat[df_clean_concat['salary_min']<=20000]
fig, (ax1, ax2) = plt.subplots(figsize=(10,8), nrows=2)
x_pos = list(range(df_salary_adjust.shape[0]))
y1 = df_salary_adjust['salary_min']
ax1.plot(x_pos, y1)
ax1.set_title('西安计算机相关职位月薪趋势图', size=14)
ax1.set_xticklabels('')
ax1.set_ylabel('最低月薪(RMB)')
bins = [3000,6000, 9000, 12000, 15000, 18000, 21000]
counts, bins, patches = ax2.hist(y1, bins, normed=1, histtype='bar', facecolor='g', rwidth=0.8)
ax2.set_title('西安计算机相关职位月薪直方图', size=14)
ax2.set_yticklabels('')
ax2.set_xticks(bins)
ax2.set_xticklabels(bins, rotation=-90)
# Label the raw counts and the percentages below the x-axis...
bin_centers = 0.5 * np.diff(bins) + bins[:-1]
for count, x in zip(counts, bin_centers):
percent = '%0.0f%%' % (100 * float(count) / counts.sum())
ax2.annotate(percent, xy=(x, 0), xycoords=('data', 'axes fraction'),
xytext=(0, -40), textcoords='offset points', va='top', ha='center', rotation=-90, color='b', size=14)
fig.savefig('salary_inXian.jpg')
fig.show()
所得结果如下所示:
观察图表,可以看到,西安市计算机相关职位月薪在3000~12000人民币占据了绝大部分,也有一小部分月薪达到了12000以上,但几乎没有超过20000的。这个月薪水平在西安可以基本达到小康水平。
分析招聘岗位要求
对西安市计算机相关职位招聘岗位要求描述进行词云图分析1
2
3
4
5
6
7
8
9
10
11
12
13
14
15brief_list = list(df_clean_concat['brief'])
brief_str = ''.join(brief_list)
# 首先使用 jieba 中文分词工具进行分词
wordlist = jieba.cut(brief_str, cut_all=False)
# cut_all, True为全模式,False为精确模式
wordlist_space_split = ' '.join(wordlist)
my_wordcloud = WordCloud( max_words=100, font_path="simhei.ttf",background_color="white",
max_font_size=300, random_state=42).generate(wordlist_space_split)
plt.imshow(my_wordcloud) # 以图片的形式显示词云
plt.axis('off') # 关闭坐标轴
plt.show()
my_wordcloud.to_file(os.path.join( 'brief_cloud.png'))
所得结果如下所示:
观察图表,可以看到企业在进行招聘时,看重具有相关的开发经验,比较青睐相关专业的人员,学历也占据了相对来说比较重要的地位,另外,也希望应聘人员具有团队合作的能力,具有较好的学习能力。
结论
本分析报告结论如下:
- Java,C++等开发岗位在西安的计算机相关职位招聘中属于主流,需求较多。
- 西安市计算机相关职位月薪大多在3000~12000人民币,在西安可以基本达到小康水平。
- 企业希望应聘人员具有相关的开发经验,比较青睐相关专业的人员,学历也占据了相对来说比较重要的地位。