进一步分析51job上宁波财务和IT的数据的招聘数据

进一步分析上次爬的数据后发现上次应该把地址爬下来,现在的数据只能做个简单的热力图,不过也懒得重新去爬了。将就用吧。

一、看看财务和IT的需求比例


用pyecharts实现的,发现这个画的图很漂亮。
代码和官网的demo很像,基本没怎么改。

# -- coding:utf-8 --
import pymongo
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.charts import Mapconn = pymongo.MongoClient('127.0.0.1',port=27017)
db = conn['51job']['51job宁波财务']
db2= conn['51job']['51job宁波IT']
df=list(db.find())+list(db2.find())
df=pd.DataFrame(list(df))
df.drop("公司名",axis=1,inplace=True)
df.drop("职位名",axis=1,inplace=True)
df.drop("_id",axis=1,inplace=True)#画饼图
def pie_rich_label() -> Pie:# cw=df['分类'].value_counts()cw = df['分类'].loc[df['分类'] == '财务'].value_counts()[0]it = df['分类'].loc[df['分类'] == 'IT'].value_counts()[0]c = (Pie().add("",[('财务',int(cw)),('IT',int(it))],# 饼图的半径,数组的第一项是内半径,第二项是外半径# 默认设置成百分比,相对于容器高宽中较小的一项的一半radius=["20%", "55%"],# 标签配置项label_opts=opts.LabelOpts(position="outside",formatter="{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",background_color="#eee",border_color="#aaa",border_width=1,border_radius=4,rich={"hr": {"borderColor": "#aaa","width": "100%","borderWidth": 0.5,"height": 0,},"b": {"fontSize": 16, "lineHeight": 33},"per": {"color": "#eee","backgroundColor": "#334455","padding": [2, 4],"borderRadius": 2,},},),).set_global_opts(title_opts=opts.TitleOpts(title="宁波财务和IT需求比例")))return c
pie_rich_label().render(path='宁波财务和IT需求比例.html')

二、看看IT和财务的平均工资热力图



不管是IT还是财务,平均工资居然还是两头的不发达区工资高,而位于市中心的地区平均工资低,难以想象。

三、再看看各区招聘需求



果然还是中心地区需求高,特别是鄞州区,独占了宁波南部商务区,东部新城,高新区等几个新区。看上去果然活力满满啊。
特地回去看看了下周边地区平均工资高的原因。恩,举个例子,我和马云平均年薪好几亿,但上海市人民平均年薪只有几十万。
看来有机会还是要去鄞州区啊。
最后放个代码


df['薪资范围'],df['年月'] = df['薪资'].str.split('/',n=1).str
df.drop("薪资",axis=1,inplace=True)#删除原有的列
df['最低薪资'],df['最高薪资0'] = df['薪资范围'].str.split('-',n=1).str
df.drop("薪资范围",axis=1,inplace=True)
df['单位'] = df['最高薪资0'].str.extract(r'([\u4E00-\u9FA5])')
df['最高薪资'] = df['最高薪资0'].str.extract(r'(\d+.\d+|\d+)')
df.drop("最高薪资0",axis=1,inplace=True)
df.单位[df['单位']=='千']=1000
df.单位[df['单位']=='万']=10000
df.年月[df['年月']=='年']=12
df.年月[df['年月']=='月']=1
#删除‘最低薪资’列,值为‘薪资’的所有行
df = df[(True^df['最低薪资'].isin(['薪资']))]
df = df[(True^df['最高薪资'].isin(['薪资']))]
#删除所有包含空值的行
df = df.dropna()
df['最低薪资']=df['最低薪资'].astype(float)
df['最高薪资']=df['最高薪资'].astype(float)
df['单位']=df['单位'].astype(float)
df['年月']=df['年月'].astype(float)
df['最低薪资(元)']=(df['最低薪资']*df['单位']/df['年月']).round(0)
df['最高薪资(元)']=(df['最高薪资']*df['单位']/df['年月']).round(0)
df.drop("最高薪资",axis=1,inplace=True)
df.drop("最低薪资",axis=1,inplace=True)
df.drop("单位",axis=1,inplace=True)
df.drop("年月",axis=1,inplace=True)
df['最低薪资(元)'] = df['最低薪资(元)'].loc[ df['最低薪资(元)'] < 50000]
df['最高薪资(元)'] = df['最高薪资(元)'].loc[ df['最高薪资(元)'] < 50000]
df = df.dropna()
df['工作地点0'],df['工作地点'] = df['工作地点'].str.split('-',n=1).str
df.drop("工作地点0",axis=1,inplace=True)
dfdz = df.dropna()
#排除某一列
dfdz.replace('高新区','鄞州区',inplace=True)
dfcw = dfdz[(True^dfdz['分类'].isin(['IT']))]
dfit = dfdz[(True^dfdz['分类'].isin(['财务']))]
#global ningbo_city,aa,bb,cc,dd
ningbo_city = ["慈溪市", "余姚市", "镇海区", "海曙区", "江北区", "鄞州区", "北仑区", "奉化区", "象山县", "宁海县"]
aa=[]
bb=[]
cc=[]
dd=[]
for i in ningbo_city:A = [dfcw[(dfcw['工作地点']==i)].mean()[0].round(0)]if A is None:aa =aa+''else: aa = aa+AB = [dfit[(dfit['工作地点']==i)].mean()[0].round(0)]if B is None:bb=bb+''else: bb = bb+BC = list(dfcw['工作地点'].loc[dfcw['工作地点']==i].value_counts())if C==[]:cc=cc+[0]else: cc = cc+CD = list(dfit['工作地点'].loc[dfit['工作地点']==i].value_counts())if D==[]:dd=dd+[0]else:dd = dd+Ddef map_aa() -> Map:c = (Map().add("财务", [list(z) for z in zip(ningbo_city, aa)], "宁波").set_global_opts(title_opts=opts.TitleOpts(title="宁波地图财务平均薪资"),visualmap_opts=opts.VisualMapOpts(max_=max(aa),min_=min(aa)),))return c
map_aa().render(path='宁波地图财务平均薪资.html')def map_bb() -> Map:c = (Map().add("IT", [list(z) for z in zip(ningbo_city, bb)], "宁波").set_global_opts(title_opts=opts.TitleOpts(title="宁波地图IT平均薪资"),visualmap_opts=opts.VisualMapOpts(max_=max(bb),min_=min(bb)),))return c
map_bb().render(path='宁波地图IT平均薪资.html')def map_cc() -> Map:c = (Map().add("财务", [list(z) for z in zip(ningbo_city, cc)], "宁波").set_global_opts(title_opts=opts.TitleOpts(title="宁波地图财务平均需求"),visualmap_opts=opts.VisualMapOpts(max_=max(cc),min_=min(cc)),))return c
map_cc().render(path='宁波地图财务平均需求.html')def map_dd() -> Map:c = (Map().add("IT", [list(z) for z in zip(ningbo_city, dd)], "宁波").set_global_opts(title_opts=opts.TitleOpts(title="宁波地图IT平均需求"),visualmap_opts=opts.VisualMapOpts(max_=max(dd),min_=min(dd)),))return c
map_dd().render(path='宁波地图IT平均需求.html')

下次要把准确地址爬下来,做个真正的热力图。

进一步分析51job上宁波财务和IT的数据的招聘数据相关推荐

  1. 国内操作系统OS分析(上)

    国内操作系统OS分析(上) 一.操作系统(OS)概述 操作系统(OS,Operating System),是管理.控制计算机软硬件资源的计算机程序,并为用户提供一个与系统交互的操作界面.OS是配置在计 ...

  2. Linux内存技术分析(上)

    Linux内存技术分析(上) 一.Linux存储器 限于存储介质的存取速率和成本,现代计算机的存储结构呈现为金字塔型.越往塔顶,存取效率越高.但成本也越高,所以容量也就越小.得益于程序访问的局部性原理 ...

  3. 通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺

    可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺: mysql> show status like 'Table%'; ...

  4. 案例分享 | 某券商利用AI技术进行告警关联分析(上)

    本内容来自公众号"布博士"------(擎创科技资深产品专家) 背景: 作为大型券商企业之一,某券商对深入数字化转型,以及对应用.网络.主机.操作系统.中间件.用户使用体验等的全面 ...

  5. Python爬虫,爬取51job上有关大数据的招聘信息

    Python爬虫,爬取51job上有关大数据的招聘信息 爬虫初学者,练手实战 最近在上数据收集课,分享一些代码. 分析所要爬取的网址 https://search.51job.com/list/000 ...

  6. 利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化

    教程演示 创建爬虫项目 编写需要爬取的字段(items.py) 编写spider文件(wuyou.py) 编写数据库连接(pipelines.py) 编写反爬措施(settings.py) Mongo ...

  7. rustup 慢_Rust真的比C慢吗?进一步分析queen微测评

    昨天,我在文章里分析了微测评的不可靠的问题,遗留了一点技术细节没有剖析清楚.评论区@王明哲提示了我可以用VTune工具,那我今天就来接着分析一下. 前情回顾 昨天的微测评中,我分别通过在queen.r ...

  8. 用python实行财务报告分析,用python做财务数据分析

    Python是否有用于财务报表分析的库 谷歌人工智能写作项目:小发猫 python如何做数据分析 用Python做数据分析,大致流程如下:1.数据获取可以通过SQL查询语句来获取数据库中想要数据typ ...

  9. DID会固定年份吗_倍分法DID详解 (三):多时点 DID (渐进DID) 的进一步分析

    作者:王昆仑 (天津大学) E-mail: shawn0513@163.com 连享会专题课程:DSGE 模型及应用 连享会 DSGE 专题课程 这是连享会「倍分法(DID)专题推文」系列的第三篇文章 ...

最新文章

  1. kaldi 源码分析(十) - gmm-init-mono.c分析
  2. 人工智能算法的可解释性方法研究
  3. Android--制作开场动画/MediaPlayer OnCompletionListener
  4. Hybris service layer和SAP CRM WebClient UI架构的横向比较
  5. ASP.NET Core WebListener 服务器
  6. 移动最小二乘_最小移动以形成弦
  7. 2017.9.8 仙人掌图 失败总结
  8. 图解 Laravel 请求的完整生命周期
  9. Excel 使用ODBC 连接mysql 5.0
  10. 12款免费的桌面便签软件
  11. Cortex-M3 (NXP LPC1788)之GPIO
  12. 黑莓9930/9970/99xx一键刷机包
  13. 小米原装系统镜像列表
  14. 小冰岛——小户赛茶的特点
  15. 《张志俊揭秘太极拳》读书摘编
  16. 自己动手做Arduino玩具(三)
  17. MAC 在线安装系统
  18. 磁镜现象matlab,MATLAB仿真带电粒子在磁场中磁镜现象
  19. 思科:vtp,vlan中继协议的配置方法
  20. 做营销,也讲个望、闻、问、切!

热门文章

  1. SQL查询日志 查看数据库历史查询记录的方法
  2. 基于OpenCV(C++)的简单哈哈镜实现
  3. OpenCV 实现哈哈镜效果
  4. 使用Ab命令对Apache服务器进行负载压力测试
  5. 基于差值扩展的可逆水印方法
  6. 大数据 python hadoop_大数据与Hadoop
  7. CairNet带领加勒比地区迈入区块链数字经济时代
  8. flutter常用的工具和包地址
  9. Unity 之 LayaAir 的集成开发小程序之工具下载和基本使用
  10. 解决“您的连接不是私密链接”的问题