点击这里给金令牌猎头顾问发消息
 金令牌首页 金令牌猎头 十佳职业经理人评选 最佳雇主评选 加入俱乐部 《职业经理人周刊》 会员区   薪酬调查报告登录  
Rss订阅
《职业经理人周刊》 猎头公司
职业经理人俱乐部首页 >> 经理人资讯 >> 技术研发 >> 精华热帖 >> 正文

数据清洗要了命?这有一份手把手Python攻略


  《职业经理人周刊》   猎头班长v微博   微信:AirPnP   2019/5/19
猎头职位搜索
猎头|自助猎头
兼职|推荐人才

大数据文摘作品,转载请注明来源作者 |Michael Salmon编译 | 颖子,江凡几个月前,我从网站indeed.com上抓取了招聘信息相关数据。相信很多同学都跟我做过同样的事情,想要收集不同城市的各种职位信息,然后建立一个模型来预测它们的相对薪水。然而在建立模型之前,我需要对抓取的信息进行初步的分析和清洗。本文将简要介绍我在清洗数据过程中使用的一些技巧。在这个任务中,我使用了python和配套的库,包括pandas和numpy。之前我已经成功地从美国不同的城市中抓取并保存了大量的招聘信息,并将其导入到pandas数据框架中,如下图所示(你会发现绝大多数职位不包括工资信息):

著名猎头机构推荐金领职位
金令牌搜索企业 职位 经理人 专访 社区 会员
军工仪器研发制造--电子工程师/项目经理30-50万北京
电网侧储能初创公司-全钒液流储能-收购德国技术团队--CEO150-200万 北京 深圳
央企背景-全钒液流电池电堆设计高级工程师(全钒液流储能)40-70万河北 深圳
新药/仿制药-研发系统-制剂部负责人CSO 60-70万北京 成都 江苏
光电通信芯片-INP光芯片设计资深专家80-150万深圳 青岛
语音操作系统产品经理(人工智能) 40-70万北京 天津
香港AI机器人-研发项目经理-图像处理/计算机视觉/机器学习算法60-100万香港 海外
中国著名航空材料公司-冶金(金相)专家 150-300万北京 西安

为了完成清洗数据的任务,我有如下目标:从数据中删除所有重复的招聘信息格式化所有可用的薪资数据,以便只显示预期年薪这一数据。在构建预测模型时,对字符串进行各种初步清洗以使之后的自然语言处理过程更容易。删除重复的招聘信息最开始,我从保存的csv文件中读取数据,并检查格式。之后,我删除了所有重复行,并评估在抓取过程中我收集了多少不重复的内容。

仅在这个过程中,我的数据结构从128,289行减少到6,399行。虽然编程并不是很复杂,但我只想在之后的分析中使用不重复的招聘信息。

格式化薪资数据为了准备计算薪酬的数据,我首先查看了一下正在处理的数值的数据类型:

scrape_data[“salary”].value_counts()

可以看出,这一数据的某些内容会使之后的计算变得复杂。Python在进行数学计算时并不知道如何处理像逗号和美元符号这样的字符,因此我们需要在进行下一步之前去除这些符号和“\n”字符。除此之外,你还会注意到,薪水可以用单一数字或范围表示,而且会以不同的支付方式呈现——年薪,月薪,或时薪。在准备这些薪酬数据,以便进一步分析时,我需要将上述内容全部考虑进去。一开始,我去除了那些无关的字符:

虽然在使用这些数据前,我知道我需要从薪资数据中删除这些支付方式不同的字符串(如,“一年”、“一月”),但是我想要保留这些原始支付方式以供将来使用。因此,我创建了一个新的数据列来捕捉这些数据。我将这列命名为“og_salary_period”:

然后我将所有含有薪资信息的岗位数据放在一个单独的数据结构中,这样我就可以相应地扩展这些数据。注意,我从原始的scale_data表中完全移除了带有薪资数据的行。当我将这些数据进行有效地规范后,我会将其重新添加回去。

下图是薪资数据结构的截图。你会注意到og_salary_period这一列捕获了原始薪资信息。

至此,我根据原始薪资数据的支付方式将职位信息和薪资信息分开。我也删除了与薪资支付方式有关的字符串。

之后,我定义了一个函数用来检测在一定范围内的薪资信息(通过在数据中查找连字符),并返回两个值的均值。如果没有连字符,它将以浮点数的形式返回单个值。

通过这个函数,我可以清洗薪资数据,并将任何未以年薪支付的薪资内容转换为大概的年收入。(虽然是否保留按时薪和周薪支付的招聘信息还有待讨论,我决定保留是希望能有更多的可用数据,同时我认为这类支付方式也能与工作所能提供的真实薪金相近。)

最后,我将各种薪资数据结构加在一起,并重新放进原始的scrape_data中。虽然我用了两步做这件事,但可以将其整合成一步:

好了!薪资数据准备好了!

额外的数据清洗在我准备好建模之前,我想完成更多的清洗任务,准备自然语言处理用的数据。

在去除所有数据中的特殊字符之前,我意识到在数据中有一些“r&d”(研究与开发)实例。为了避免仅简单地剥离“&”符号而剩下“r”和“d”两个单独的字符,我希望在进一步删除特殊字符前,有针对性的更改这个特定字符串:

接下来,我定义了一个函数去扫描一列,并去除了特殊字符表中的所有字符。之后我在每一列中都应用了这一函数,除了“salary”(浮点数据列)和“og_salary_period”(我专门创建此列不包含任何字符)这两列。

最后,我稍微清理了一下位置信息。我注意到某些包含位置信息的招聘内容仅仅提到了“在美国”。由于这种信息没有任何作用,所以在这种情况下,我将这些值同我抓取到的城市名称一同输入。另外,为了简化位置数据,我仅保留了每份招聘信息的州名和城市名。这意味着要拆分邮政编码的位置信息。我意识到在这一过程中我会失去一部分信息,但我觉得这会使检查各组位置更为容易,同一地方只使用唯一的表述不会对自然语言处理分析造成太大的影响。

就是这样!最后一步是将数据保存为已清洗好的csv文件,以便更容易地加载和建模。scrape_data.to_csv(“scraped_clean.csv”)

(来源:百度 百家)


我们尊重原创者版权,除非我们确实无法确认作者以外,我们都会注明作者和来源。在此向原创者表示感谢。本网转载文章完全是为了内部学习、研究之非商业目的,若是涉及版权等问题,烦请联系 service@execunet.cn 或致电 010-85885475 删除,谢谢!

发表评论:
主题:
内容:
匿名发表 验证码: 登录名: 密码:   个人 企业
发帖须知:
一、请遵守中华人民共和国有关法律法规、《全国人大常委会关于维护互联网安全的决定》《互联网新闻信息服务管理规定》
二、请注意语言文明,尊重网络道德,并承担一切因您的行为而直接或间接引起的法律责任。
三、管理员有权保留或删除其管辖留言中的任意内容。
四、您在本站发表的言论,本站有权在网站内转载或引用。
五、发表本评论即表明您已经阅读并接受上述条款。
金令牌猎头
企业找猎头   职业经理人找猎头
CTO相关资讯
更多>> 
CTO焦点企业对话
更多>> 
CTO相关猎头职位
更多>> 
十大猎头公司推荐金领职位
关于我们 | 招聘猎头 | 猎头 | 自助猎头 | 悬赏招聘 | 十佳职业经理人评选 | 年度最佳雇主评选 | 会员登录 | 企业 | 职位 | 设为主页
联系我们 | 法律声明 | 搜索 | 猎头招聘 | 猎头公司 | 《职业经理人周刊》 | 职业经理人俱乐部 | 沙龙活动 | 资讯 | 刊例 | 收藏本站
Copyright® 版权所有  猎头服务热线:010-85885475 E-MAIL:club@execunet.cn
京ICP备05025905号-1   京公网安备 110105001605号
点击这里给金令牌猎头顾问发消息 猎头顾问