处理完重复值后,我们开始处理空值。
首先依然是定位空值,然后可以选择删除整行,但更多的时候我们选择使用某个值来填充。
Python
过滤空值
如果数据量较小,可直接使用isnull()函数逐一判断每个行是否有空值:
df.isnull()
或者使用any函数返回是否存在空值:
any(df.isnull())
但是如果数据量较大,则需要使用高级技巧,即apply()函数和匿名函数,对每一列x的空值进行计数:
df.apply(lambda x:np.sum(x.isnull()))
2. 删除空值
如果空值行比例较小(5%以下),则可以使用dropna()函数直接删除存在空值的行:
df.dropna()
可以传入参数how='all'来只删除全是空值的行。
可传入参数axis=1来删除空值较多的列(如85%以上空值):
df.drop(['列名'],axis=1)
3. 填充空值
如果空值行比例不小,则不能进行删除,应该使用fillna()函数进行补全,如简单填充数字0:
df['数值列'].fillna(value=0)
当然,更常见的是填充均值,众数和中位数,此时可以向value参数传入一个字典:
df.fillna(value={'性别':df.性别.mode()[0],'年龄':df.年龄.mean(),'收入':df.收入.