
作者 | CDA数据分析师
常见的不规则数据主要有缺失数据、重复数据、异常数据几种,在开始正式的数据分析之前,我们需要先把这些不太规整的数据处理掉,做数据预处理。
AIU人工智能学院
缺失值就是由某些原因导致部分数据是空的,对于为空的这部分数据我们一般是有两种处理方式的,一种是做删除处理,即把含有缺失值的数据删除;另一种是做填充处理,即把缺失的那部分数据用某个值代替。
对缺失值进行处理,首先要把数据中的缺失值找出来,也就是查看数据中有哪些列有缺失值。
在Excel中我们选中一列没有缺失值的数据,看一下这一列数据共有多少个,然后把其他列的计数与这一列进行做对比,小于这一列数据个数的就代表该列数据有缺失值,差值就是缺失个数。
下图中非缺失值列的数据计数为5,性别这一列计数为4,这就表示性别这一列是有一个缺失值的。
如果数据不是特别多,你想看数据中具体是哪个单元格的缺失,则可以利用定位条件(按快捷键Ctrl+G可弹出对话框)查找。在定位条件对话框中选择空值,单击确定就会把所有的空值选中,如下图所示:

通过定位条件把数据中缺失值选出来的结果,如下图所示:

在Python中直接调用info ( ) 函数的方法就会返回每一列的缺失情况。关于info ( ) 函数方法我们在之前就用过,但是没有说明这个方法可以判断数据的缺失情况。

我们在python中还可以用isnull ( ) 方法来判断哪个值是缺失值,如果是缺失值则返回True,一行中如果不是缺失值则返回False。

缺失值分为两种,第一种是一行中某个字段是缺失值;另一种是一行中的字段全部为缺失值,即为一个空白行。
在Excel中,这两种缺失值都可以通过定位条件(按快捷键Ctrl+G可弹出该对话框),对话框中选择空值就可以找到。
这样含有缺失值的部分数据就会被选中,包括某个具体的单元格及一整行,然后单击鼠标右键在弹出的删除对话框中选择删除整行选项,并单击确定按钮即可实现整行的删除。
在Python中,我们利用的是函数dropna ( ) 方法,函数dropna ( ) 方法默认删除含有缺失值的行,也就是只要某一行有缺失值就把这一行删除。

如果想删除空白行,只要给函数dropna ( ) 方法传入一个参数 how = all 即可,这样就会只删除那些全为空值的行,不全为空值的行就不会被删除。

3、缺失值的填充
(1)Excel实现
缺失值填充前后的对比如下图所示:

在数据中年龄用数字填充合适,但是性别用数字填充就不太合适,那么可不可以分开填充呢?答案是可以的,选中想要被填充的那一列,按照填充全部数据的方式进行填充就可以了,只不过如果想要要填充几列,则需要执行几次这样的操作。

除了用0填充、平均值填充、众数(大多数)填充,还有向前填充(即用缺失值的前一个非缺失值填充,比如上个例子中编号A3 对应的缺失年龄的前一个非缺失值就是16)、向后填充(与向前填充对应)等方式。
在Python中,我们利用的 fillna ( ) 方法对数据表中的所有缺失值进行填充,在fillna ( )后面的括号中输入要填充的值即可。

在Python中我们也可以按不同列进行填充,只要在函数fillna ( ) 方法的括号中指明列名即可。

也可以同时对多个列填充不同的值:

重复数据就是同样的记录有多条,对于这样的数据我们一般做删除处理。
(1)Excel实现
在Excel中依次单击菜单栏中的数据>数据工具>删除重复值,就可以删除重复数据了,如下图所示:
数据删除前后的对比图如下:

你知道了公司2018年8月份成交明细以后,你想看一下2018年8月份总共有多少成交客户,且每个客户在2018年8月份首次成交的日期。
查看客户数量只需要按客户的唯一识别码进行去重就可以了。Excel默认是全选,我们可以取消全选,选择唯一识别码进行去重,这样只要唯一识别码重复就会被删除,如下图所示:
删除前后的对比如下图所示:

在Python中我们利用drop_duplicates ( ) 方法,该方法默认对所有值进行重复值判断,且默认保留第一个值(或第一行值)。

也可以利用多列去重,只需要把多个列名以列表的形式传给参数subset即可。比如按姓名和唯一识别码去重。

还可以定义删除重复项时要保留哪个,默认是保留第一个,也可以默认保留最后一个,或者全部不保留。通过传入参数keep进行设置,参数keep默认值是first,即保留第一个值;也可以是last,保留最后一个值;还可以是False,即把重复值全部去掉。

异常值就是相比正常数据而言过高或者过低的数据,比如一个人的年龄是0岁或者100岁都算是一个异常值,因为这和实际情况差距过大。
要处理异常值首先要检测,也就是发现异常值,发现异常值的方式主要有以下三种:
■通过绘制箱型图,把大于(小于)箱型图上边缘(下边缘)的点称为异常值
箱形图如下图所示:

下图是正态分布图,我们把大于μ+3σ的值称为异常值。

对于异常值一般有以下几种处理方式:
■把异常值当做缺失值来填充
(1)Excel实现
对异常值进行填充,其实就是对异常值进行替换,同样通过筛选的功能把异常值先找出来,然后把这些异常值替换成要填充的值即可。
在Python中,删除异常值用到的方法和Excel中的方法原理类似,Python中是通过过滤的方法对异常值进行删除。比如 df 表中有年龄这个指标,要把年龄大于200的值删掉,你可以通过筛选把年龄不大于200的筛出来,筛出来的部分就是删除大于200的值以后的新表。
CDA网校
四、数据类型转换
(1)Excel实现
在Excel中常用的数据类型就是在菜单栏中数字选项下面的几种,你也可以选择其他数据格式,如下图所示。
当选中成交时间这一列时,菜单栏中就会显示日期,表示成交时间这一列的数据类型是日期格式,如下图所示。

Pandas不像Excel分得那么详细,它主要有6种数据类型,如下表所示。

在 Python 中,不仅可以用 info ( ) 方法获取每一列的数据类型,还可以通过 dtype方法来获取某一列的数据类型。

我们在前面说过,不同数据类型的数据可以做的事情是不一样的,所以我们需要对数据进行类型转化,把数据转换为我们需要的类型。
在Excel中如果想更改某一列的数据类型,只要选中这一列,然后在数字菜单栏中通过下拉菜单选择你要转换的目标类型即可实现。
下图就是将文本类型的数据转换成数值类型的数据,数值类型数据默认为两位小数,也可以设置成其他位数。
CDA网校在Python中 ,我们利用astype ( ) 方法对数据类型进行转换,astype ( ) 后面的括号里指明要转换的目标类型即可。




雷达卡












































































































京公网安备 11010802022788号







