作者找工作中

开发环境

4.3【开发平台及环境】
Windons 10 教育版
Python 3.7
IntelliJ IDEA 2018.2.1 / PyCharm
Googe Chrome
数据清洗 分析模块pandas,numpy
可视化模块pyecharts

下期更新flask可项目视化项目
python,MySQL,Echarts,js

一:数据采集

招聘信息采集:使用爬虫采集技术,采集字段如下:
公司名称,职位,职位亮点,ID,规模,城市,学历,工作经验,公司类型,公司网站,求职网址,编号,城市ID

项目开发时间2019-10-10到10-16期间,爬虫代码随时间变化可能无效

import requests
from lxml import etree
import re
import json
import csv
import time
header = {'Accept': 'application/json, text/plain, */*','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3732.400 QQBrowser/10.5.3819.400',"cookie":"x-zp-client-id=e2f8492a-39c6-44f1-f181-3408dfc4c651; urlfrom2=121114583; adfcid2=www.baidu.com; adfbid2=0; sts_deviceid=1""6d66515ef32a9-00a0ecf38d6864-34564a75-2073600-16d66515ef5900; sou_experiment=capi; sensorsdata2015jssdkcross=%7B%22distin""ct_id%22%3A%2216d66515f058fe-0a7bf2d03b44ab-34564a75-2073600-16d66515f062a6%22%2C%22%24device_id%22%3A%2216d66515f058fe-0a7""bf2d03b44ab-34564a75-2073600-16d66515f062a6%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E""%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%2C%22%24latest_search""_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%7D%7D; acw_tc=276082061571053""5124757507e7f855599045d70c3a3baead7cb13244f9ce1; dywea=95841923.3929760379540693000.1569379672.1569379672.1571054618.2; dywez""=95841923.1571054618.2.2.dywecsr=jobs.zhaopin.com|dyweccn=(referral)|dywecmd=referral|dywectr=undefined|dywecct=/cc224037312""j00240379404.htm; Hm_lvt_38ba284938d5eddca645bb5e02a02006=1569379672,1571054618; __utma=269921210.106900723.1569379672.156937""9672.1571054618.2; __utmz=269921210.1571054618.2.2.utmcsr=jobs.zhaopin.com|utmccn=(referral)|utmcmd=referral|utmcct=/CC2240373""12J00240379404.htm; LastCity%5Fid=749; ZP_OLD_FLAG=false; POSSPORTLOGIN=0; CANCELALL=0; LastCity=%E9%95%BF%E6%A0%AA%E6%BD%AD; ""sts_sg=1; sts_chnlsid=Unknown; zp_src_url=http%3A%2F%2Fjobs.zhaopin.com%2FCC879864350J00334868004.htm; jobRiskWarning=true; acw""_sc__v2=5da57cb5b3223856c3fb768be55c39bec99b9b33; ZL_REPORT_GLOBAL={%22jobs%22:{%22recommandActionidShare%22:%22f4ec2b1a-bbe2-41""ba-b0fc-14c426ffd63b-job%22%2C%22funczoneShare%22:%22dtl_best_for_you%22}}; sts_sid=16dce6f31656d-0cee0282bd8b1b-34564a75-2073600-16dce6f31666cf; sts_evtseq=2"
}
def get_context(number):url = "https://fe-api.zhaopin.com/c/i/similar-positions?number="+numberurll='https://jobs.zhaopin.com/'+number+'.htm'html = requests.get(url=url, headers=header)# print(html.json()['data']['data']['list'])companyName,companyNumber,companySize,salary60,workCity,education,\workingExp,property,companyUrl,positionURL,name,welfareLabel,number,cityId,cityDistrict,applyType,score,tag="","","","","","","","","","","","","","","","","",""try:for i in html.json()['data']['data']['list']:companyName = i['companyName']  # 公司companyNumber = i['companyNumber']  # IDcompanySize = i['companySize']  # 规模salary60 = i['salary60']  # 薪水workCity = i['workCity']  # 城市education = i['education']  # 学历workingExp = i['workingExp']  # 工作经验property = i['property']  #企业性质companyUrl = i['companyUrl']  # 公司网址positionURL = i['positionURL']  # 求职网址name = i['name']  # 职位名称# welfareLabel = i['welfareLabel']  # 福利number = i['number']  # 编号cityId = i['cityId']  # 城市idcityDistrict = i['cityDistrict']  # 城市区域applyType = i['applyType']  # 公司类型score = i['score']  # 公司分数tag=[] #标签for j in i['welfareLabel']:tag.append(j['value'])tag="/".join(tag)except:passhtml = requests.get(url=urll,headers=header)html_xpath = etree.HTML(html.text)# miaosu = re.findall('<div class="describtion__detail-content">(.*?)</div></div><div class="job-address clearfix">', html.text)miaosu = html_xpath.xpath('string(//*[@class="describtion__detail-content"])')      # 提取子标签所有文本print("----------------------"+miaosu)miaosu = ''.join(miaosu)# time.sleep(1)fp = open('智联招聘_大数据.csv', 'a', newline='')write = csv.writer(fp)row = (companyName,name, tag ,companyNumber ,companySize, salary60,workCity,education,workingExp,property,companyUrl,positionURL,name,number,cityId,cityDistrict,applyType,score,miaosu)write.writerow(row)print('正在写入----'+workCity+'----的职位数据'+'----------'+name)fp.close()# Web前端def get_url(city):key = '大数据'      # 搜索关键字url = 'https://fe-api.zhaopin.com/c/i/sou?pageSize=4000&cityId='+city+'&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1' \'&kw='+key+'&kt=3&lastUrlQuery=%7B%22pageSize%22:%2260%22,%22jl%22:%22489%22,%22kw%22:%22%E5%A4%A7%E6%95%B0%E6%8D%AE%22,%22kt%22:%223%22%7D'number  = ''url_head = 'https://jobs.zhaopin.com/'html = requests.get(url = url, headers = header)try:for i in html.json()['data']['results']:print("-----------"+i['number'])get_context(i['number'])          # 内容爬虫开始---/except:passurl = 'https://sou.zhaopin.com/?jl=852&sf=0&st=0&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&kt=3'
html = requests.get(url = url, headers = header).text
data =re.findall('<script>__INITIAL_STATE__=(.*?)</script>',html)
datas = json.loads(data[0])
try:for i in datas["basic"]["dict"]["location"]["province"]:get_url(i["code"])
except:pass

采集的数据保存为csv格式

关于python访问MySQL数据,使用matplotlib(复杂)可视化的简单例子访问:点击查看项目

简介:众多的招聘岗位中,大数据岗位分布在全国各个城市,岗位与企业之间又有着错综复杂的联系,企业类型多样,不同的企业有着各自不同的文化,对应聘者也有着不同约束。应聘者不同经验获得的薪资也不一样,找到符合自己的职位,需要考虑招聘者发布的基本要求,如:经验,学历等各方面的需求。应聘者也会考查企业性质和类型。以下我们对发布求职公司进行分析。

大数据岗位基本分析

1 统计出公司类型的数量

数据量不大,为了节省开发时间,使用了pandas,可视化使用的是pyecharts,也可以使用将数据导入MySQL,可视化使用 Echarts,后端我常使用flask / node.js,选其一即可,下一个项目介绍flask为依托的可视化项目

# 公司类型的数量
import pandas as pd
from pyecharts import Bar, Pie# # 显示所有列
# pd.set_option('display.max_columns', None)
# # 显示所有行
# pd.set_option('display.max_rows', None)
# # 设置value的显示长度为100,默认为50
# pd.set_option('max_colwidth', 100)# 引擎,去空(只有有一个字段为空就删除整行数据),根据ID字段去重,保留第一个
data = pd.read_csv('../File/智联招聘_数据分析师.csv',engine='python').dropna().drop_duplicates('ID','first')# 分组,求数量,排序(倒叙),# conpany = data[['ID','公司类型']].groupby(by='公司类型',as_index=False).count()company = data[['ID','公司类型']].groupby(by='公司类型',as_index=False).count().sort_index(by='ID',ascending=False)# company.to_csv('text.csv')bar = Bar(width=2000, height=1000)
bar.add("公司类型", company['公司类型'], company['ID'],bar_category_gap="50%",  # 柱状大小减少一半is_label_show=True,  # 显示柱子值xaxis_label_textsize=15,  # x轴 柱子text的大小yaxis_label_textsize=25,  #y轴xaxis_rotate=30,        #x轴字体旋转legend_text_size=25)   #title大小
bar.render("2.1公司类型的数量.html")
# #
pie = Pie(height=850, width=1800)
pie.add("公司类型", company['公司类型'], company['公司名称'],is_label_show=True)
pie.render("2.1公司类型的数量占比.html")

可视化图表

分析:
在数量前10的公司类型中,民营类型稳居榜首,占总体比例57%。民营企业在我国已经经历了20多年的发展和改革,民营经济已经克服了先天性不足和自身基础薄弱等劣势,已经成为了我国国民经济的重要组成部分。
股份制企业榜二,占总体比例14.68%。股份制企业最早诞生在欧洲国家,是企业为了征集民间参与企业发展的一种战略,发行股票,一方借以取得股息,另一方面又能让人们参与企业经营和管理。
上市公司榜三,占比7.42%。在美国500家大企业有96%是上市公司,是一种公开发行股票需要经过国务院或者国务院授权的一种公司,上市公司可以在证券交易所自由交易个人股份的以一种公司。
国企,合资企业等其他类型的公司在招聘中并不是很突出,在另外一面也可以反应对大数据岗位需求不多,国企,合资企业发展相对稳定,成熟,普遍不属于互联网企业。

小结:
根据上述分析,我们可以了解,大数据分析师岗位,民营企业,股份制企业招聘数量相对较多,国家鼓励大众创业,创新,推动国民经济发展,IT互联网企业更多的是属于创新类企业,新型企业。国企,合资企业成熟,但是却没有引入太多互联网大数据技术。在面向求职这一方向,IT大数据分析师应该更多的考虑民营企业和股份制企业。

统计大数据职位经验要求的数量

同理上述

data = pd.read_csv('../File/智联招聘_数据分析师.csv',engine='python').dropna().drop_duplicates('ID',inplace=False)
undergo = data[['职位','工作经验']]\.groupby('工作经验',as_index=False)\.count()\.sort_index(by='职位',ascending=False)

可视化图表

分析:
大数据岗位工作要求类数量最多的是“不限”,其次是1-3年,3-5年相比榜一,榜二已减少一般,由此我们可以看出,大数据岗位属于新兴职业,求贤若渴,“不限”岗位最多,比较java开发岗位经验要求,我们可以从侧面反应企业对招聘大数据岗位降低了要求。

小结:
根据上述Java开发,python开发和大数据分析师,三个职业对比,我们可以看到IT互联网岗位要求各不相同,我国IT互联网公司多岗位一直处于空缺,尤其是新兴职业,大数据,云计算,人工智能,才人严重匮乏。

统计企业规模及企业数量

# 3.统计出公司规模及数量
import pandas as pd
from pyecharts import Bar# 引擎,去空(只有有一个字段为空就删除整行数据),根据ID字段去重,保留第一个
data = pd.read_csv('../File/智联招聘_数据分析师.csv', engine='python').dropna()
data.drop_duplicates('ID', 'first', inplace=False)
company = data[['城市ID', '规模']].groupby('规模', as_index=False).count()
company = company.sort_index(by='城市ID', ascending=False)
company.to_csv('text2.csv')
# # 柱状大小减少一半, 显示柱子值,x轴 柱子text的大小,y轴,x轴字体旋转,title大小
bar = Bar(width=2000, height=1000)
bar.add("公司规模", company['规模'], company['城市ID'],bar_category_gap="50%",is_label_show=True,xaxis_label_textsize=15,yaxis_label_textsize=25,xaxis_rotate=30,legend_text_size=25)
bar.render("2.3公司规模及数量.html")

可视化图表

分析:
在数量前10的公司规律中,100-499类型稳居榜首。IT互联网公司人员招聘大数据就岗位的也基本稳定在这个层级。
榜二20-99人,数据在某方面可能存在一定的争议性。招聘公司五花八门,类型繁多,有培训机构,有猎头公司,有数据外包等小型公司等等一些小规模创业公司。
榜三1000-9999人,属于中大型企业。

小结:
根据上述分析,我们得到一个信息,招聘大数据岗位的IT互联网企业人数规模适中,大中小企业都有对大数据分析师招聘。在某一方面也反映了大数据岗位受到了大中小企业的追捧。

统计全国招聘大数据职位薪资1w到2w的企业占总体的百分比

# 1w到2w高薪的公司在总体数据的百分百
import pandas as pd
from pyecharts import Pie# 显示所有列
pd.set_option('display.max_columns', None)
# 显示所有行
pd.set_option('display.max_rows', None)
# 设置value的显示长度为100,默认为50
pd.set_option('max_colwidth', 100)data = pd.read_csv('../File/智联招聘_数据分析师.csv',engine='python').dropna().drop_duplicates('ID','first',inplace=False)
money = data[['公司名称','薪资']]
money_sum_number = data[['公司名称','薪资']].groupby('薪资',as_index=False).count()
money_sum_number = money_sum_number['公司名称'].sum()
# #将数据分割(8千-1.4万)分成起薪8千,最高薪1.4万,最后我们只取最高薪
first_money = money['薪资'].str.split('-').str[0].dropna()
last_money= money['薪资'].str.split('-').str[1].dropna()# #将他转类型,不然不能用contains()函数
a = pd.DataFrame(last_money)
# #这是包含了 8千 和 2.5w,所以我们要匹配含有万的,能去掉8千,2.5W的不能
money_1w_n = a[a['薪资'].str.contains('万')]['薪资']
# print(money_1w_n)
money_1_2w_num = []
#将数组循环,replace将“万”替换掉,再转float类型,匹配<=2万的,存入数组money_1w_2w
[money_1_2w_num.append(float(j.replace('万', ''))) for j in money_1w_n if float(j.replace('万', '')) <=2]
print(money_1_2w_num)data_money_pie = []
data_money_pie.append(float(money_sum_number))
data_money_pie.append(float(len(money_1_2w_num)))
x = ['全部占比','1w-2w占比']
print(data_money_pie)
# pie = Pie("全国天气类型比例", '2018-4-16')
pie = Pie(width=2000,height=1000)
pie.add("",x,data_money_pie,is_label_show=True,legend_text_size=25,)
pie.render("2.4统计薪资1w-2w的占比.html")

可视化图表

分析:
本次计算的薪资是平均薪资,我们根据薪资分布统计出平均薪资,大数据分析师1w - 2w薪资占比27.06%,数量230,总职位:620.0(后面我们分析了不同经验的平均薪资,和不同学历的平均薪资等等)

统计全国大数据职位数量,即在哪些城市容易找到大数据职位

# 1.分析不同城市对于大数据岗位的需求,即在该城市是否容易找到大数据的岗位,求出不同城市“bigdata”的数量(需求量)
import pandas as pd
from pyecharts import Bar,WordCloud
data = pd.read_csv('../File/智联招聘_数据分析师.csv',engine='python').dropna().drop_duplicates('ID',inplace=False)
city_bigdata = data[['职位','城市']].groupby('城市',as_index=False).count().sort_index(by='职位',ascending=False)[:30]
city_word = data[['职位','城市']].groupby('城市',as_index=False).count().sort_index(by='职位',ascending=False)
# city_bigdata.to_csv('text3.csv')
bar = Bar(width=2000,height=1000)
bar.add("大数据岗位前20的城市",city_bigdata["城市"],city_bigdata["职位"],is_label_show=True,xaxis_label_textsize=15,yaxis_label_textsize=20,xaxis_rotate=50,legend_text_size=20)
bar.render('3.1各城市岗位需求柱状图.html')word = WordCloud(width=2000,height=1000)
word.add("前10岗位",city_word["城市"],city_word["职位"])
word.render('3.1前10岗位词云图.html')
# print(list(city_bigdata['城市']))

可视化图表

分析:
在数量前15的城市中,北京稳居榜首,数据展示了城市与大数据岗位分布情况,给应聘者提供方向。
北京,互联网公司总部所在地,在北京市有近50家大型互联网公司,稳居全国榜一,北京互联网公司占据了全国半边江山,也可以看出北京的综合实力。

分析:
在数量前15的城市中,北京稳居榜首,数据展示了城市与大数据岗位分布情况,给应聘者提供方向。
北京,互联网公司总部所在地,在北京市有近50家大型互联网公司,稳居全国榜一,北京互联网公司占据了全国半边江山,也可以看出北京的综合实力。

统计全国各大数据职位薪资分布情况

# 1.分析不同城市对于大数据岗位的需求,即在该城市是否容易找到大数据的岗位,求出不同城市“bigdata”的数量(需求量)
import pandas as pd
from pyecharts import Bar,WordCloud
data = pd.read_csv('../File/智联招聘_数据分析师.csv',engine='python').dropna().drop_duplicates('ID',inplace=False)
city_bigdata = data[['职位','城市']].groupby('城市',as_index=False).count().sort_index(by='职位',ascending=False)[:30]
city_word = data[['职位','城市']].groupby('城市',as_index=False).count().sort_index(by='职位',ascending=False)
# city_bigdata.to_csv('text3.csv')
bar = Bar(width=2000,height=1000)
bar.add("大数据岗位前20的城市",city_bigdata["城市"],city_bigdata["职位"],is_label_show=True,xaxis_label_textsize=15,yaxis_label_textsize=20,xaxis_rotate=50,legend_text_size=20)
bar.render('3.1各城市岗位需求柱状图.html')word = WordCloud(width=2000,height=1000)
word.add("前10岗位",city_word["城市"],city_word["职位"])
word.render('3.1前10岗位词云图.html')
# print(list(city_bigdata['城市']))

分析:
在数量前15的城市中,北京稳居榜首,数据展示了城市与大数据岗位分布情况,给应聘者提供方向。
北京,互联网公司总部所在地,在北京市有近50家大型互联网公司,稳居全国榜一,北京互联网公司占据了全国半边江山,也可以看出北京的综合实力。

统计全国各大数据职位薪资分布情况

注意:数据清洗涉及到了一个中文薪资问题,
格式如下:
5千-8千 ,7千-1.4万,面议,1万-2万,1.2万-2.4万 …等
我们需要分析的是全国各省的薪资分布情况(细品)
1.数据清洗,将薪资转成float
2.将面议等清洗掉或者缺失值填充
3.求出各省的The average salary

# 不同城市的大数据岗位薪资的分布
import pandas as pd
import numpy as np
from pyecharts import Bar, WordCloud, Linepd.set_option('display.max_columns', None)
# 显示所有行
pd.set_option('display.max_rows', None)
# 设置value的显示长度为100,默认为50
pd.set_option('max_colwidth', 100)data = pd.read_csv('../File/智联招聘_Java开发.csv', engine='python').dropna().drop_duplicates('ID', 'first', inplace=False)
city_bigdata = data[['职位', '城市', '薪资']]
print(city_bigdata)
def price_str(x):# index key_0 薪资_x 薪资_y  x  y 字段名,x带表当前行,可以通过下标进行索引if (x['x'] > 0):x['薪资_x'] = float(x['薪资_x'][:x['x']]) * 10000if (x['x'] < 0):x['薪资_x'] = float(x['薪资_x'][:x['x']]) * 1000if (x['y'] > 0):x['薪资_y'] = float(x['薪资_y'][:x['y']]) * 10000if (x['y'] < 0):x['薪资_y'] = float(x['薪资_y'][:x['y']]) * 1000return xfirst_qian = pd.DataFrame(city_bigdata['薪资'].str.split('-').str[0])
last_qian = pd.DataFrame(city_bigdata['薪资'].str.split('-').str[1])
# 很多“面议”岗位,前面split之后分成了“面议”和“NaN”,不容易发现,使用numpy.nan获取NaN将他替换
first_qian = pd.DataFrame(first_qian['薪资'].replace('面议', '1千'))
last_qian = pd.DataFrame(last_qian['薪资'].replace(np.nan, '1千'))a = pd.merge(first_qian, last_qian, on=first_qian.index)
# a.字段名,类型,寻找 “万”
a['x'] = a.薪资_x.str.find('万')
a['y'] = a.薪资_y.str.find('万')
city_price = a.apply(price_str, axis=1)
# 删除 x  y  key_0 字段,按照列
city_price = city_price.drop(['x', 'y', 'key_0'], axis=1)# sum  = city_price.eval('薪资_x+薪资_y',inplace=True)
# 两列求出平均值
city_price['薪资'] = city_price.mean(axis=1)
print(city_price)
city = data[['职位', '城市']]
city = city.reset_index(drop=True)
city_price_avg = pd.merge(city, city_price, on=city.index).drop(['key_0'], axis=1)
city_price_avg_word = city_price_avg.groupby('城市', as_index=False).mean().sort_index(by='薪资', ascending=False)
city_price_avg_line_bar = city_price_avg.groupby('城市', as_index=False).mean().sort_index(by='薪资', ascending=False)[:10]
city_price_avg_line_bar.to_csv("text4.csv")

可视化

作者为什么做两个图?
作者的回应是:‘多做又不要你的钱,还能更充分的表达数据的意思’

word = WordCloud(width=1500, height=700)
word.add("", city_price_avg_word['城市'], city_price_avg_word['薪资'], word_size_range=[30, 100], )
word.show_config()
word.render("3.2城市薪资词云图.html")line = Line(width=2000, height=1000)
line.add("城市", city_price_avg_line_bar['城市'], city_price_avg_line_bar['薪资'],is_label_show=True,xaxis_rotate=20,xaxis_label_textsize=20,legend_text_size=30,yaxis_label_textsize=20,is_smooth=True,mark_point=['average'])
line.render("3.2各城市平均薪资分布曲线.html")bar = Bar(width=2000, height=1000)
bar.add('城市', city_price_avg_line_bar['城市'], city_price_avg_line_bar['薪资'],xaxis_rotate=80,is_label_show=True,xaxis_label_textsize=15,label_text_size=10,legend_text_size=25)
bar.show_config()
bar.render("3.2各城市大数据平均薪资柱状图.html")


分析“大数据分析师和算法工程师”不同学历数量与平均薪资分布曲线情况

# 不同学历的平均薪资#
import pandas as pd
import numpy as np
from pyecharts import Bar, Pie, WordCloud, Line,Overlappd.set_option('display.max_columns', None)
# 显示所有行
pd.set_option('display.max_rows', None)
# 设置value的显示长度为100,默认为50
pd.set_option('max_colwidth', 100)
# 算法工程师
data = pd.read_csv('../File/智联招聘_数据分析师.csv', engine='python').dropna().drop_duplicates('ID', inplace=False)
education_text = data[['学历', '薪资']]education_text['起薪'] = education_text['薪资'].str.split('-').str[0].replace('面议', '1千')
education_text['尾薪'] = education_text['薪资'].str.split('-').str[1].replace(np.nan, '1千')
education_text = education_text.drop(['薪资'], axis=1)
def price_str(x):if x['x'] > 0:x['x'] = float(x['起薪'][:x['x']]) * 10000if x['x'] < 0:x['x'] = float(x['起薪'][:x['x']]) * 1000if x['y'] > 0:x['y'] = float(x['尾薪'][:x['y']]) * 10000if x['y'] < 0:x['y'] = float(x['尾薪'][:x['y']]) * 1000return xeducation_text['x'] = education_text.起薪.str.find('万')
education_text['y'] = education_text.尾薪.str.find('万')
education_text = education_text.apply(price_str, axis=1)
education_text = education_text.drop(['起薪', '尾薪'], axis=1)
education_text['avg_price'] = education_text[['x', 'y']].mean(axis=1)
education_text = education_text.drop(['x', 'y'], axis=1)
education_price = education_text[['学历', 'avg_price']].groupby('学历', as_index=False).mean().sort_index(by='学历',ascending=False)
xueli = education_text[['学历', 'avg_price']].groupby('学历', as_index=False).count().sort_index(by='学历',ascending=False)
# education_price.to_csv("text55.csv")

统计职位不同经验薪资分布情况

import pandas as pd
import numpy as np
from pyecharts import Bar, Pie, WordCloud, Line,Overlappd.set_option('display.max_columns', None)
# 显示所有行
pd.set_option('display.max_rows', None)
# 设置value的显示长度为100,默认为50
pd.set_option('max_colwidth', 100)data = pd.read_csv('../File/智联招聘_数据分析师.csv', engine='python').dropna().drop_duplicates('ID', inplace=False)
education_text = data[['职位','工作经验', '薪资']]education_text['起薪'] = education_text['薪资'].str.split('-').str[0].replace('面议', '1千')
education_text['尾薪'] = education_text['薪资'].str.split('-').str[1].replace(np.nan, '1千')
education_text = education_text.drop(['薪资'], axis=1)def price_str(x):if x['x'] > 0:x['x'] = float(x['起薪'][:x['x']]) * 10000if x['x'] < 0:x['x'] = float(x['起薪'][:x['x']]) * 1000if x['y'] > 0:x['y'] = float(x['尾薪'][:x['y']]) * 10000if x['y'] < 0:x['y'] = float(x['尾薪'][:x['y']]) * 1000return xeducation_text['x'] = education_text.起薪.str.find('万')
education_text['y'] = education_text.尾薪.str.find('万')
education_text = education_text.apply(price_str, axis=1)
education_text = education_text.drop(['起薪', '尾薪'], axis=1)
education_text['avg_price'] = education_text[['x', 'y']].mean(axis=1)
education_text = education_text.drop(['x', 'y'], axis=1)
education_price = education_text[['工作经验', 'avg_price']].groupby('工作经验', as_index=False).mean()
undergo = education_text[['职位','工作经验']].groupby('工作经验',as_index=False).count()# 可视化  折线图   柱状图
# education_price.to_csv('text6.csv')
line = Line(height=850, width=1800)
line.add("工作经验的平均薪资", education_price['工作经验'], education_price['avg_price'],line_color='black')bar = Bar(height=850, width=1800)
bar.add("工作经验的平均薪资", undergo['工作经验'], undergo['职位'],is_label_show=True)over = Overlap()
over.add(line)
over.add(bar,yaxis_index=1,is_add_yaxis=True)
over.render("3.4不同工作经验的数量于平均薪资子图.html")
print(undergo)
print(education_price)

大数据职位描述要求分析

使用结巴分词模块将bigdata文件中的“岗位描述.csv”进行分词,清洗出“岗位描述”中涉及到的关键技术名称,并将技术名称进行词频统计

使用结巴分词技术,结果保存为csv

#使用分词技术对 “职位描述” 进行分词,提取关键  技术名词 #
import pandas as pd
import jieba
data = pd.read_csv('../File/大数据全国职位_描述.csv',engine='python')
#DataFrom转array
data = data[['职位描述']].values
#结巴分词
text = []
for i in data:text.append(i[0])
jieba_text = jieba.cut(str(text),cut_all=True)
a = list(jieba_text)#过滤中文,保留技术名词
declare = []
for i in a:if  (i.islower()==True) | (i.istitle()==True):declare.append(i)
#文件操作
text = pd.DataFrame(declare,columns=['name'])
text =text.to_csv("技术名词.csv")

读取分词好的csv文件

import jieba
import pandas as pd
from pyecharts import WordCloud, Bardata = pd.read_csv('技术名词.csv', engine='python')
data = data[['index', 'name']].groupby('name', as_index=False).count().sort_index(by='index', ascending=False)
data['name'] = [i.lower() for i in data['name']]
data_bar = data[['name', 'index']].groupby(['name'], as_index=False).sum().sort_index(by='index', ascending=False)[:20]
data_word = data[['name', 'index']].groupby(['name'], as_index=False).sum().sort_index(by='index', ascending=False)
print(data)
# 可视化展示  词云图和柱状图
work = WordCloud(height=850, width=1800)
work.add("大数据岗位技术名词统计", data_word['name'], data_word['index'], word_size_range=[20, 100])
work.render('4.1大数据岗位技术名词统计词云图.html')bar = Bar(width=2000, height=1000)
bar.add('大数据岗位技术名词统计', data_bar['name'], data_bar['index'], xaxis_rotate=30, is_label_show=True,xaxis_label_textsize=15,yaxis_label_textsize=15, label_text_size=15, legend_text_size=25)
bar.render("4.1大数据岗位技术名词统计柱状图.html")data_bar.to_csv('text7.csv')

结论:
结合上述数据显示,大数据分析师岗位资历越长,薪资越高。
综合上述数据可得,大数据分析师岗位入职基本信息。
普遍学历门槛为大专和本科,工作经验1-5年发展空间较大,5-10年为瓶颈期。
工作城市北京,广东,深圳,武汉,合肥,天津,重庆,郑州,沈阳,西安,成都,厦门,上海,南京,济南等一二线大型城市。
公司类型民营,股份制企业较多。
公司规模为小型,中大型互联网公司。
发展倾向:
专科,本科工作经验有3-5年,平均薪资12k以上
专科,本科工作经验有1-3年,平均薪资7k- 10k上下
专科,本科工作经验1年以下平均薪资在6K以下。
工作城市的选择也很重要,结合报表5 城市岗位数量及平均薪资报表,可得,杭州,广东,深圳属于高薪多岗位城市,北京,厦门,上海,济南是最理想的就业城市之一。
大数据分析师各大企业招聘所需要的技术为spark,hadoop,Java,hive,python ,linux,storm,kafka,bhase,shell等技术。

喜欢的话点赞转载加收藏

Python数据分析之智联招聘职位分析完整项目(数据爬取,数据分析,数据可视化)相关推荐

  1. 智联招聘职位信息爬取并写入xls表中

    环境:python2.7 1.cmd命令行下载第三方资源包:pip install xlwt(用于往表格中写入数据) 主要代码 #coding: utf-8 import requests impor ...

  2. Python网络爬虫爬取智联招聘职位

    观察网站结构. 打开智联招聘网页,搜索数据分析师,出来很多招聘岗位,限定全国范围,从下图看出有12354个职位,一共有90页,看最后一页职位已经只是和数据分析师相关而已. 看看最后一页搜索结果 PS: ...

  3. python爬取智联招聘职位信息(单进程)

    我们先通过百度搜索智联招聘,进入智联招聘官网,一看,傻眼了,需要登录才能查看招聘信息 没办法,用账号登录进去,登录后的网页如下: 输入职位名称点击搜索,显示如下网页: 把这个URL:https://s ...

  4. Python爬取智联招聘职位信息

    这是一次失败的尝试 , 事情是这样的-- 1.起因 前段时间刚刚学完爬虫,于是准备找个项目练练手.因为想要了解一下"数据挖掘"的职位招聘现状,所以我打算对'智联招聘'下手了.网上当 ...

  5. Python爬虫爬取智联招聘职位信息

    目的:输入要爬取的职位名称,五个意向城市,爬取智联招聘上的该信息,并打印进表格中 #coding:utf-8 import urllib2 import re import xlwtclass ZLZ ...

  6. 【Python爬虫案例学习20】Python爬虫爬取智联招聘职位信息

    目的:输入要爬取的职位名称,五个意向城市,爬取智联招聘上的该信息,并打印进表格中 ####基本环境配置: Python版本:2.7 开发工具:pycharm 系统:win10 ####相关模块: im ...

  7. 智联招聘python岗位_Python爬虫爬取智联招聘职位信息

    import urllib2 import re import xlwt '''遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!''' cl ...

  8. 爬虫练习二:爬取智联招聘职位信息

    1. 简介 因为想要找到一个数据分析的工作,能够了解到市面上现有的职位招聘信息也会对找工作有所帮助. 今天就来爬取一下智联招聘上数据分析师的招聘信息,并存入本地的MySQL. 2. 页面分析 2.1 ...

  9. python爬虫获取智联招聘信息

    智联招聘的页面信息是jsonp传输的数据,所以抓包或者正常爬取内容不可能的是,下面我将分享分析出来的数据并整体操作步骤.用谷歌浏览器打开网址,并打开检查,里面有network选项,包含这个网页的请求响 ...

  10. pythton爬取智联招聘职位信息

    前言 在智联招聘https://sou.zhaopin.com/时,发现无法直接去解析获得的html文本,它的数据是用js动态加载的,数据内容存储在json文件中,所以不能用以前的方法使用xpath. ...

最新文章

  1. iOS获取键盘的高度
  2. MySQL存储过程简介
  3. 什么是Internet
  4. jstat gc各参数含义
  5. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)
  6. git 源代码自动检查_Visual Studio中Git的简单使用
  7. Python实现TCP协议套接字多路复用
  8. js控制文件拖拽,获取拖拽内容。
  9. vue 监听浏览器页面关闭_前方高能,这是最新的一波Vue实战技巧,不用则已,一用惊人...
  10. JAVA基础-XML的解析
  11. 【瑕疵检测】基于matlab GUI OTSU织物疵点检测【含Matlab源码 860期】
  12. charles V4.2.1版本 破解码
  13. 使用Petalinux定制自己的linux系统
  14. 思维模型 后天天赋(盖洛普天赋分析)
  15. 计算机找不到链接打印机主机,添加打印机找不到任何端口,怎么办
  16. USACO2018JAN Gold
  17. 大疆哪吒飞控naza-m等无法解锁的问题遥控无法启动电机不转解决疑难杂症。
  18. Linux 之父是个果粉:给自用 M2 Mac 装上 Fedora Linux,除图形加速和 Chrome 都搞定了...
  19. 数据库工程师常见面试题
  20. PHP intval 与 floatval

热门文章

  1. 进制转换: 十进制转换成其他进制(一)
  2. Ubuntu 图形桌面与命令行界面 切换快捷键
  3. mysql数据库对象是什么意思_数据库对象什么意思
  4. Java项目:图书馆管理系统思路分析
  5. 修改域名需要重启服务器,GitLab修改域名host
  6. 渥太华大学计算机硕士课程,渥太华大学留学生经验分享:攻克语言关最简单的方法就是少用中文...
  7. 《货币金融学》学习笔记
  8. 伯努利分布、二项分布和多项分布
  9. cad修改快捷键_CAD大神总结:100个CAD快捷键+20个CAD制图技巧
  10. Latex 箭头上面写字母