【有书共读】跟老齐学Python 读书笔记5 之处理缺失数据
在我们处理数据时,不可避免地会遇到“缺失”的情况,这时,对包含缺失数据的对象处理时,可能会报错,如图1所示,数据a中有一个空对象(None),调用sum时报错;而不包含空对象的b则能执行正确的操作。
图1
图2
图3
图4
为了更好地解决这个问题,Pandas提供了更好的方案。Pandas的Series对象,可以自动将None转成NaN,并在计算时摒除NaN数据,因此None就不妨碍计算了,如图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