对西安市计算机相关职位情况的分析

对西安市计算机相关职位情况的分析

报告主题

本报告主要有以下几个目的:

  1. 分析西安市计算机相关职位的需求情况
  2. 分析西安市计算机相关职位的薪酬情况
  3. 分析西安市计算机相关职位的招聘要求
  4. 为广大意向从事计算机行业人群的就业提供借鉴和指导

数据来源

本报告对智联招聘网站进行爬虫,主要采集以下几方面的数据,爬虫代码见作业中代码部分。

  • 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
20
def 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

数据整理

  1. 使用pandas包,将数据组织成DataFrame形式。

    1
    df = pd.DataFrame(datas)
  2. 将日期格式规范化,并对数据进行筛选,对月薪的数据进行筛选,选取格式为“XXXX-XXXX”的信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    df = 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)]
  3. 根据链接作为标志判断爬取的数据是否有重复值,并进行去重工作。

    1
    df_clean_concat = df_clean_concat.drop_duplicates(['link'])

分析职位数量情况

对西安市计算机行业不同职位数量的分布情况进行分析。

  1. 首先以不同职位作为关键词进行分析,并按职位数量进行排序。

    1
    2
    3
    4
    5
    df_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)
  2. 对西安市计算机行业不同职位数量的情况进行分析,以饼图的形式呈现。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    label = 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()

所得饼图如下所示:
Alt text

观察图表,可以看到,传统的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
22
df_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()

所得结果如下所示:
Alt text

观察图表,可以看到,西安市计算机相关职位月薪在3000~12000人民币占据了绝大部分,也有一小部分月薪达到了12000以上,但几乎没有超过20000的。这个月薪水平在西安可以基本达到小康水平。

分析招聘岗位要求

对西安市计算机相关职位招聘岗位要求描述进行词云图分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
brief_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'))

所得结果如下所示:

Alt text

观察图表,可以看到企业在进行招聘时,看重具有相关的开发经验,比较青睐相关专业的人员,学历也占据了相对来说比较重要的地位,另外,也希望应聘人员具有团队合作的能力,具有较好的学习能力。

结论

本分析报告结论如下:

  • Java,C++等开发岗位在西安的计算机相关职位招聘中属于主流,需求较多。
  • 西安市计算机相关职位月薪大多在3000~12000人民币,在西安可以基本达到小康水平。
  • 企业希望应聘人员具有相关的开发经验,比较青睐相关专业的人员,学历也占据了相对来说比较重要的地位。