【有书共读】跟老齐学Python 读书笔记5 之处理缺失数据

在我们处理数据时,不可避免地会遇到“缺失”的情况,这时,对包含缺失数据的对象处理时,可能会报错,如图1所示,数据a中有一个空对象(None),调用sum时报错;而不包含空对象的b则能执行正确的操作。

图片说明

                                                                                                 图1

对此,numpy 提供了另外一个表示空缺的数据np.nan,np.nan是一个用来标记缺失数据的浮点数,如图2所示。但是,将其与其它类型的值进行计算时,得到的结果全是np.nan,如图3所示。为了得到正确的结果,我们需要使用专门的处理no函数np.nansum,nanmeant等。如4所示。
图片说明
                                                                                                                                        图2

                                                                                                                                           图3

                                                                                                                                        图4
    为了更好地解决这个问题,Pandas提供了更好的方案。Pandas的Series对象,可以自动将None转成NaN,并在计算时摒除NaN数据,因此None就不妨碍计算了,如图5所示。

                                                                                                                                   5

    Pandas还提供了4个针对缺失数据进行操作的函数:

        isnull():判断各个元素是否为空,空返回true,否则为false;

        notnull():判断各个元素是否为非空,非空返回true,否则为false;

        dropna():删除所有的NaN数据,返回删除特定位置NaN的新对象(原对象不变,返回值可能仍含有空值,与删除规则有关)。

        fillna():将NaN数据替换掉,返回替换后的新对象(返回值可能仍含有空值,与填充规则有关)
   isnull()和notnull()的用法如图6所示。使用它们还可以实现数据过滤的功能,如图7所示。

                                                                                                                        图6

                                                                                                                          图7
    Series对象调用Dropna()和fillna()的用法如图8所示

                                                                                                                                             图8 
当DataFrame对象调用dropna()和fillna()时,可以指定轴,默认的是沿着0轴的方向,如图9、图10所示。

                                                                                                                                                图9

                                                                                图10

 图11 和图12 给出了这两个方法的说明,从文档中可以看出,使用不同的规则,可以得到删除(替换)全部空值或部分空值的DataFrame对象,原对象保持不变。
                                                                                                                 图11

                                                                                                                                                        图12






#Python##笔记##读书笔记#
全部评论
给小姐姐顶楼!
点赞
送花
回复
分享
发布于 2018-08-19 16:04

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务