php 画像预览上传,职位画像分析(pandas/ matplotlib)

一、数据分析的步骤

863d9c123476020138e83e1370482355.png

二、提出问题

(1) 分析数据分析师主要的技能排名?

(2) 分析数据分析师薪资和岗位地点、学历、工作年限的关系?

(3) 数据分析师的学历需求?

(4) 不同城市数据分析师的需求?(地图展示)

三、获取数据源

选择前程无忧官网

关键词:数据分析师

范围:全国

总记152页信息,共7560条职位信息

cf1c8368148ef285ca0363e90db3563a.png

获取数据方法:

开发工具:pycharm

开发环境:Window 8

开发语言:python

爬虫的主要步骤:

1指定url

2获取requests模块响应对象

3解析数据

获取:名称,地点,薪资(年薪(万)),工作经验,学历和岗位要求

4数据持久化

将名称、地点、薪资、工作经验存入本地51job_data.csv文件,将岗位要求存入本地51job_info.txt文件,将解析的词频数据存入本地51job_skill.csv文件。

注意事项:

(1)先爬取一页数据保存在本地进行数据解析测试以免因直接测试请求过多被网站反爬处理

(2)正式爬取中利用UA池/IP池(反爬处理)、进程池(异步操作提高效率)

(3)对于几十万,上百万数据采用scrapy爬虫框架爬取

四、理解数据

爬取的数据源保存在51job_data.csv文件中

0649731ab8899650d65dc07e8c5d579b.png

共有五个字段:名称,地点,薪资(年薪(万)),工作经验,学历

共有7538条数据

五、数据清洗

719416243dfe1a6ddcfac5a0018fa827.png

本次分析采用Jupyter Notebook分析,数据集为本地excel文件

(1)选择子集

本次分析的有51job_data.csv和51job_skill.csv两个子集,51job_skill.csv共有61条数据,直接用excel进行处理

本次选择51job_data.csv清洗

(2)列表重命名

#列表从命名

f = open('51job_data.csv','r',encoding='GBK',errors='ignore')

data= pd.read_csv(f,sep=',',names=['name','location','salary','workyear','education'])

f.close()

data.head()

d431574c5fb78699b7466044dc59bc1e.png

(3)删除重复值

print('删除重复值前大小',data.shape)#删除重复销售记录

data =data.drop_duplicates()print('删除重复值后大小',data.shape)

7069e781c82da5505247f3e11d741cdd.png

(4)缺失值处理  info也可以查看字段的数据类型

20773149904b195e3883df4619082fb9.png

# 显示没有缺失值

(5)一致化处理

本次不需要处理

(6)数据排序

本次不需要处理

# (7)异常值处理

data.describe()

#描述指标:查看出“salary”值不能小于0

a41f812c72df6a6868c4c58814ad95f5.png

结果显示salary指标正常

六、建立模型

(1)分析数据分析师主要的技能排名

#names=[] 增加列名

job_skill = pd.read_csv('51job_skill.csv',sep=',',names=['skill','count'])

job_skill.head()

9b590ae435beb3d8286cb7faadb335bf.png

#按值进行排序 sort_values()

s = job_skill.sort_values('count',ascending=False)#重命名行名(index):排序后的列索引值是之前的行号,需要修改成从0到N按顺序的索引值

s=s.reset_index(drop=True)

s = s.head(20)

be2597f542863bd27d0c69321b4224a7.png

#柱状图 bar

fig = plt.figure(figsize=(12,5))

plt.bar(s['skill'],s['count'])

plt.xlabel('skill')

plt.ylabel('count')

plt.xticks(rotation=45)

plt.title('数据分析主要技能排名')

caf530e58a20d477a65dd9ae1c24ff51.png

制作词云

#因为在词云中没有显示 r

job_skill.loc[0,'skill']='R语言'#单个字符,无法展示

fig,ax = plt.subplots(figsize=(16,9))

mask= plt.imread('demo6.jpg')#读入背景图片,作为词云图的参数

mycloudword = WordCloud(width=800,height=600,scale=1,margin=2,

background_color='white',

min_font_size=5,#最小文字大小

max_font_size=70,

max_words=200,

mask=mask,

random_state=100,#随机颜色方案,

font_path='C:\windows\Fonts\STZHONGS.TTF'#显示中文字体

).generate(text)#传入一个字符串

ax.imshow(mycloudword)

ax.axis('off')

mycloudword.to_file('skil.jpg')

注:STZHONGS.TTF华文中宋

19817e7421abb0de6700bdd6dfec29c5.png

(2) 分析数据分析师薪资和岗位地点、学历、工作年限的关系?

薪资与地点关系

"""统计不同城市的平均薪资"""data['city']=data['location'].str.extract('(\w+)-?').fillna('未知')

mean_salary= data.groupby('city')['salary'].mean().round(2)#保留两位小数位数

mean_salary = mean_salary.sort_values(ascending=False).head(20)

fig = plt.figure(figsize=(16,9))

plt.bar(mean_salary.index,mean_salary.values)

plt.xticks(rotation=45)

plt.title('数据分析师部分城市薪酬(年薪/万)')

78bbaf45140ea32d2aefdf6913024dab.png

# 薪资和学历关系

data['education']=data['education'].fillna('无')

xl_salary= data.groupby('education')['salary'].mean().round(2)

xl_salary=xl_salary.sort_values()

fig= plt.figure(figsize=(12,5))

plt.bar(xl_salary.index,xl_salary.values)

plt.xlabel('学历')

plt.xticks(rotation=90)

plt.title('数据分析师部学历和薪资(年薪/万)的关系')

6da73ee7181303a22aa1244d0e6e75af.png

# 薪资和工作年限关系

data['workyear'].value_counts()

data['year']=data['workyear'].map({'无工作经验':0,'3-4年经验':3.5,'2年经验':2,'1年经验':1,'5-7年经验':6,'无':0,'8-9年经验':8.5,'10年以上经验':10})

year_salary= data.groupby('year')['salary'].mean().round(2)

fig= plt.figure(figsize=(12,5))

plt.plot(year_salary.index,year_salary.values)

plt.plot(year_salary.index,year_salary.values,'ro')

plt.xlabel('工作年限')

plt.xticks(rotation=90)

plt.title('数据分析师部工作经验和薪资(年薪/万)的关系')

93a274d6e6ac79ed0b352904dc94eaaf.png

# 数据分析师的学历需求

xl_cnt = data.groupby('education')['education'].count()

xl_cnt=xl_cnt.sort_values()

fig= plt.figure(figsize=(12,5))

plt.bar(xl_cnt.index,xl_cnt.values)

plt.xlabel('学历')

plt.xticks(rotation=90)

plt.title('数据分析师部学历需求')

49c8566e9f76e5fbd861cbc42b19207c.png

# 数据分析师人才需求量的地理分布

from pyecharts.charts importMapfrom pyecharts import options as opts

## maptype='china' 只显示全国直辖市和省级#数据只能是省名和直辖市的名称#为了得到城市的省份数据

读取本地省份和城市对应的csv文件

#读取csv文件

city_data=pd.read_csv('province.csv')

city_data.head()

c40ea610975f8acaf76cb977d85f70e2.png

查看文件

city_data.tail()

517d810fc2390ae95c8ed26e629ac8c4.png

city_data.info()

d11b16495ed008142360a2ab94204ced.png

data.loc[data['location']=='西藏']#发现原数据只有一个西藏的

800ec7924dc660e57f4c1610edd5fc4f.png

city_data.loc[city_data['city_name']=='西藏']#city_data中city_name字段中没有西藏#因为provice_data以 data的city字段和city_data的city_name字段进行连接

3186888d36fc73cb5174ff7f3a0a9f45.png

city_data.loc[364]=[364,28,'西藏',28,'西藏']

province_data= pd.merge(data,city_data,how='inner',left_on='city',right_on='city_name')

d= province_data['province'].value_counts()

map_obj=Map()#tolist 功能转化为列表

value =d.values.tolist()

attr=d.index.tolist()

mdata=[list(z) for z inzip(attr,value)]

map_obj.add('职位数',mdata,'china')

map_obj.set_global_opts(title_opts=opts.TitleOpts(title='全国数据分析职位分布图'),

visualmap_opts=opts.VisualMapOpts(max_=1000),

toolbox_opts=opts.ToolboxOpts())

map_obj.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

map_obj.render('test.html')#把图保存到本地

map_obj.render_notebook()#在notebook 中进行展示

740847a306b2bef88573d82f94f430dd.png

七、总结和建议

总结:

(1)数据分析师的主要计能前3是excel、sql,python

(2)数据分析师城市薪资排行前3的是三门峡,广西,和台洲,和常识中的北上广深有出入

(3)数据分析师学历和年薪的关系中,按薪资降序排列,第一名是博士学历,第二是硕士,第三是本科,其中本科和硕士的年薪差别不大

(4)数据分析是工作年限和薪资的关系,从图中看出数据分析师的薪资和薪资成正比关系

(5)数据分析师的学历需求,需求最大的是本科,其次是大专,博士、硕士需求量少

(6)数据分析师人才需求量的地理分布可以看出,数据分析师的人才需求主要集中在北上广地区

建议:

对于求职者:

技能方面主要掌握excel、sql、python就可以满足一般企业需求

学历方面:至少是本科

求职地区:北上广深

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值