【2020冬季挑战赛】Python工程师岗位分析
1.选手简介
1.1 个人选手帆软社区用户名:用户a0601527在校大学生,常用finbi进行数据分析结果的可视化,并撰写简单的分析报告。
1.2参赛初衷使用finbi一段时间,由于之前在学数据分析相关内容,正好用到可视化展示,便找了个小例子结合相关的博客,做着试试熟悉一下软件使用。
2.技术背景介绍这篇文档是爬取的拉勾网上的招聘数据,共4300余条,然后进行数据清洗,处理,分析和可视化展示。数据公开,不涉及隐私和侵权信息,可以放心使用。
2.1 数据获取在入门案例中,使用requests模块对拉勾网招聘页的职位信息进行爬取。python3中页面爬取常用的模块有urllib和requests, requests因为其易用性以及能够满足绝大数的爬取要求,被更广泛的使用。在这里我们主要关心的是取得数据后的分析工作,所以有关数据爬取不进行过多的介绍。
2.2 数据处理使用python的pandas模块对爬取到的数据进行分析,对数据进行分析,主要内容是数据的处理工作。常用的数据处理工具总结:1) Excel:适合个人分析使用;2) Python:自由度非常高,可以灵活的使用模型和算法,能满足大多数的数据处理需求,适合较大型的数据分析项目。3) Hadoop:分布式系统基础架构,非常复杂,需要的技术也很多,适合数据量特别大的数据分析项。
2.3 数据展示使用可视化工具对数据进行展示,通过展示可以更直观的观察到数据的规律,从而解读出其中包含的信息。常用的数据可视化工具包括:1) Tableau:常用于数据可视化,具有很好的交互式可视化体验2) FineBI:支持大数据量分析,可以做复杂的BI报表3) PowerBI:可以连接到多种数据源,支持建模和数据挖掘,可以灵活的创作可视化报表,内置的图表种类相对较少。
3 实现过程
3.1 数据爬取待爬取的页面使用ajax部分更新,且响应类型是json字符串,使用requests模块,请求类型是post,使用json模块解析响应内容,获取职位信息并保存到csv文件中。
3.1.1 问题1) 要爬取的数据量较多,需要分页和页面批量爬取。2) 需要处理网站的反爬机制。
3.1.2 解决办法1) 解决爬取分页和页面批量爬取,用zip()函数打包城市和页码信息,每个页面的数据条数是相同的,进行循环爬取。2) 解决反爬,使用headers伪装和利用Session()对象跨请求传递cookies参数,使用post方式进行爬取,对请求头分析得到查询字符串和form data数据。
3.2 数据预处理
3.2.1初始数据爬取到的数据是python开发岗位的招聘信息,分为7个字段:岗位名称、公司名称、城市、工资、学历要求、工作经验和岗位标签。共有3842条数据,保存在csv文件中。
3.2.2 预处理项要将原始数据处理成可以进行分析的数据表,包括以下处理内容:a) 过滤掉和搜索关键字无关的数据项。b) 处理工资项数据格式,添加相关字段。
3.2.3 处理方法处理方法包括:a) 编写搜索关键字正则式,使用正则匹配,保留和搜索关键字相关的数据项。b) 对工资项的数据格式拆分处理,新增工资下限项和工资上限项,并设置数据类型为数值型,新增平均工资项,定义计算方式为sum(最低工资,最高工资)/2,设置数值类型为数值型。
3.2.4 预处理结果原始数据进行处理后,新的数据表包含10个字段:岗位名称、公司名称、城市、最低工资、工资、最高工资、平均工资、学历要求、工作经验和岗位标签。共1044条数据。
3.3分析数据
3.2.1 分析规则数据是岗位招聘信息,想要了解的是工资指标随其它维度(城市,学历,工作经验)的变化情况和岗位对学历和工作经验的要求,使用分类统计方法对数据进行分析。
3.2.2 分析内容需要分析的内容包括:该岗位全国主要城市的平均工资分布、全国主要城市的该岗位数量状况、不同学历下该岗位的工资状况、工资随工作经验的变化情况、该岗位对工作经验和学历的要求分布。
3.4 可视化展示使用fineBI工具来对分析内容可视化,根据分析内容绘制对应的图表,进行可视化绘制的图表如下:140181
4.总结在完成这个小案例的过程中,加深了对已有知识的掌握和理解,对分析流程有了全面的认识,同时也感受到了可视化的作用和可是化工具的重要性,分析报告还是要看图说话,“有图有真相”。
140390