机器学习-数据清洗(二)

如果接触到我上面的那篇文章,机器学习-入门,应该很清楚本文意欲为何。如果不知道为什么,请阅读一下那篇文章,以便打下基础,ok,废话不多说了,进入正题。

数据清洗

首先,为何需要对数据进行清洗

数据清洗的工作绝壁是非常枯燥的,做数据研究的的人绝对无法避开这个环节,其根本原因是因为我们从各种渠道拿到的数据可能会出现:

1、不合理的数据,你比如,样本中有些人的年龄超过了120岁,楼层的高度达到了1000层,以及其他的一些非常不合理的场景。

2、错误的类型,你比如,样例中,几乎所有的数据都是整形,然而,有一些是字符串类型,如果不进行处理,将这些数据直接喂给算法,一般情况下是要崩溃的。

3、计算机对于处理字符串类型比较吃力,有时候,需要我们将他转化为数字类型,这样就设计到一个映射关系,比如,样例性别,【男,女】,我们可以转化为1,2,房屋的类型【单间,一房一厅,二房一厅,三房一厅,商铺】可以对应的枚举出来,比如我在处理房屋朝向上的示例

#提取房屋的朝向
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

等等等等,我想说的是绝对还有很多你意想不到的场景,需要你耐心的打磨数据,将搜集到的原始数据,清洗成为可用的数据。

数据清洗需要掌握哪些黑科技

通常我们拿到的数据数据都可以简化为表格模型,无用你是xsl也好,csv亦或json数组也好,都可以利用pandas来读取,读取之后,接下来的工作基本上就是借助在pandas的一些api来做数据清洗工作了,如下,我读取了一份房价信息的数据表,这份数据当然是我自己根据上一篇文章,利用scrapy做了一个爬虫爬取的咯。

jupyter笔记

为了让我们能够更好的玩数据清洗,我也不吝啬的贡献出了一份非常全面的pandas的操作Cheatsheet一份,以及后面你一定会用到一个万能的CheatSheet

来来,简单的了解一下pandas的一些常用的api了,举例就用:

示例数据一行

1、取子集常用操作

取子集

其中,loc是支持按照列名字符串的方式来取子集,iloc支持的是使用数组索引(从0开始)的方式来取子集,通常,逗号前面是行相关的一些条件限制,逗号右边则是列相关的限制。比如,我取得

我就取前两列

2、处理空白数据行

处理空白数据

这种就很简单愉快了,一个api就可以删除或者填充有空白数据的样本了。

这个就不演示了,因为我是爬虫爬取数据,所以在爬取的过程中,我已经对数据进行了一些基础的处理,程序控制不可能出现空白数据了,所以,我也是建议,自己写爬虫去获取数据,这些减轻数据清洗环节的压力。

3、apply系列

apply其实有比较多兄弟,比如applymap,map,他们的能力各有不同,总的来说就是apply()是一种让函数作用于列或者行操作,applymap()是一种让函数作用于DataFrame每一个元素的操作,而map是一种让函数作用于Series每一个元素的操作,如下所示,我这里对ege列进行处理了一了,将数字和文本归一化为数字。

apply示例

实际上,这个操作完全可用map来做:

df['ege'] = df['ege'].map(parse_house_age)
df.head(5)

结果完全一样,因为我们只取了一列。

数据清洗比较高级的方式,使用各种图表

1、使用散点图

房屋总面积对应总价图

2、房价热力值图:

房价区间热力图

图描述了房间分布区间,可以清洗看出一些问题。

3、频率直方图帮助我们迅速找到一些特例独行的猪,因为他出现的次数少嘛,不得不让人怀疑这种数据的真实性。

利用直方图快速找出毛刺点

ok,总的来说,这个过程需要开动自己的脑经,把你拿到的原始数据,慢慢慢慢的,变成可以给你下面算法需要的数据。

数据清洗的结果

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python学习之旅

算法学习笔记(二):贪心算法

2053
来自专栏云飞学编程

python实战,中文自然语言处理,应用jieba库来统计文本词频

2. 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;

2091
来自专栏CDA数据分析师

量化投资教程:用R语言打造量化分析平台

? 概述 和Python计算环境中的tushare包一样,在R中我们使用quantmod包接入第三方数据源,实现自定义量化分析平台的构建。 本文打算以陌陌的股...

2389
来自专栏hanlp学习笔记

hanlp安装和使用

在https://github.com/hankcs/HanLP/releases中下载data然后覆盖HanLP-1.3.4.zip解压后的data

2353
来自专栏杨建荣的学习笔记

字符画,你可能未知的美 (76天)

在平时的工作中,如果接触字符界面时间比较长的时候,都会无意识的感觉到单调,认为字符只能表达一些抽象复杂的东西,对于图形的那种简单和清晰,显得有些力不从心。 今天...

3025
来自专栏落影的专栏

程序员算法基础——贪心算法

我们自然而然能产生一种解法:尽可能的往右跳,看最后是否能到达。 本文即是对这种贪心决策的介绍。

2143
来自专栏CDA数据分析师

3个步骤彻底学透Excel

本文为简书作者数据充电宝原创,CDA数据分析师已获得授权 目录 Excel函数学习常见的误区和问题及解决办法 ● 苦恼 ● 原因 ● 解决办法 学习3步法 (重...

2148
来自专栏后台全栈之路

《ArcGIS 地理信息系统教程》概念笔记

之前研究了 GIS,接触到了很多 GIS 的概念。因此找了《 ArcGIS 地理信息系统教程(第 4 版)》来看。书的版本比较老了,不过一些基本概念还是想通的,...

2986
来自专栏码神联盟

智能对话 | 使用 Java实现 智能对话机器人 -- 附源码

目前人工智能与深度学习顺应了互联网时代潮流,人机对话已经成为目前人工智能领域中非常热门的处理技术。其中基于深度学习的人机对话交换系统(智能机器人)是人工智能最有...

2.2K2
来自专栏MyBlog

J-R.Abrial_FM_ICES2006 阅读笔记

该篇文章简要地概述了用B形式化的两个实际的项目, 主要是说明一种"构造即正确"的思路, 并且分析了其中的困难和优势.

951

扫码关注云+社区

领取腾讯云代金券