欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~python
本文由 brzhang发表
数据清洗的工做绝壁是很是枯燥的,作数据研究的的人绝对没法避开这个环节,其根本缘由是由于咱们从各类渠道拿到的数据可能会出现:git
一、不合理的数据,你好比,样本中有些人的年龄超过了120岁,楼层的高度达到了1000层,以及其余的一些很是不合理的场景。github
二、错误的类型,你好比,样例中,几乎全部的数据都是整形,然而,有一些是字符串类型,若是不进行处理,将这些数据直接喂给算法,通常状况下是要崩溃的。算法
三、计算机对于处理字符串类型比较吃力,有时候,须要咱们将他转化为数字类型,这样就设计到一个映射关系,好比,样例性别,【男,女】,咱们能够转化为1,2,房屋的类型【单间,一房一厅,二房一厅,三房一厅,商铺】能够对应的枚举出来,好比我在处理房屋朝向上的示例json
#提取房屋的朝向 def parse_orientation(row): if '朝西南' in row: return 1 elif '朝东北' in row: return 2 elif '朝东' in row: return 3 elif '朝南' in row: return 4 elif '朝西北' in row: return 5 elif '朝北' in row: return 6 elif '朝东南' in row: return 7 elif '朝南北' in row: return 8 elif '朝西' in row: return 9 else: return 10
等等等等,我想说的是绝对还有不少你意想不到的场景,须要你耐心的打磨数据,将搜集到的原始数据,清洗成为可用的数据。api
一般咱们拿到的数据数据均可以简化为表格模型,无用你是xsl也好,csv亦或json数组也好,均可以利用pandas来读取,读取以后,接下来的工做基本上就是借助在pandas的一些api来作数据清洗工做了,以下,我读取了一份房价信息的数据表,这份数据固然是我本身根据上一篇文章,利用scrapy作了一个爬虫爬取的咯。数组
jupyter笔记app
为了让咱们可以更好的玩数据清洗,我也不吝啬的贡献出了一份很是全面的pandas的操做Cheatsheet一份,以及后面你必定会用到一个万能的CheatSheet。机器学习
来来,简单的了解一下pandas的一些经常使用的api了,举例就用:scrapy
示例数据一行
一、取子集经常使用操做
取子集
其中,loc是支持按照列名字符串的方式来取子集,iloc支持的是使用数组索引(从0开始)的方式来取子集,一般,逗号前面是行相关的一些条件限制,逗号右边则是列相关的限制。好比,我取得
我就取前两列
二、处理空白数据行
处理空白数据
这种就很简单愉快了,一个api就能够删除或者填充有空白数据的样本了。
这个就不演示了,由于我是爬虫爬取数据,因此在爬取的过程当中,我已经对数据进行了一些基础的处理,程序控制不可能出现空白数据了,因此,我也是建议,本身写爬虫去获取数据,这些减轻数据清洗环节的压力。
三、apply系列
apply其实有比较多兄弟,好比applymap,map,他们的能力各有不一样,总的来讲就是apply()是一种让函数做用于列或者行操做,applymap()是一种让函数做用于DataFrame每个元素的操做,而map是一种让函数做用于Series每个元素的操做,以下所示,我这里对ege列进行处理了一了,将数字和文本归一化为数字。
apply示例
实际上,这个操做彻底可用map来作:
df['ege'] = df['ege'].map(parse_house_age) df.head(5)
结果彻底同样,由于咱们只取了一列。
一、使用散点图
房屋总面积对应总价图
二、房价热力值图:
房价区间热力图
图描述了房间分布区间,能够清洗看出一些问题。
三、频率直方图帮助咱们迅速找到一些特例独行的猪,由于他出现的次数少嘛,不得不让人怀疑这种数据的真实性。
利用直方图快速找出毛刺点
ok,总的来讲,这个过程须要开动本身的脑经,把你拿到的原始数据,慢慢慢慢的,变成能够给你下面算法须要的数据。
相关阅读
【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识
此文已由做者受权腾讯云+社区发布,更多原文请点击
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!