当我们在处理数据时,总会遇到数值缺失的问题,pandas在处理缺失值的方面提供了很全面的方法,主要包括:isnull()——找出缺失值;notnull()——找出非缺失值;dropna()——剔除缺失值;fillna()——填充缺失值。具体使用方法请往下看。
提示:以下是本篇文章正文内容,下面案例可供参考
isnull()用来找出缺失值的位置,返回一个布尔类型的掩码标记缺失值,下面是案例:
import pandas as pd
import numpy as np
data = pd.DataFrame({
'name':['Verne Raymond',np.nan,'Patrick George','Saxon MacArthur'],'age':[18,np.nan,21,None]})
data
name age
0 Verne Raymond 18.0
1 NaN NaN
2 Patrick George 21.0
3 Saxon MacArthur NaN
这里我们可以看到不管我们创建DataFrame时控制用的是np.nan还是None,创建后都会变成NaN。
data.isnull()
name age
0 False False
1 True True
2 False False
3 False True
notnull()与isnull()正好相反,是找出非空值并用布尔值进行标记,下面是例子:
data.notnull()
name age
0 True True
1 False False
2 True True
3 True False
dropna()就是字面意思,丢掉缺失值。
DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
参数:
axis:默认为0,表示删除行还是列,也可以用“index”和“columns”表示
how:{‘any’, ‘all’}, 默认为 ‘any’;any表示只要该行(列)出现空值就删除整行(列),all表示整行(列)都出现空值才会删除整行(列)
thresh:表示删除非空值小于thresh个数时删除
subset:列表类型,表示哪些列里有空值才删除行或列
inplace:与其他函数的inplace一样,表示是否覆盖原DataFrame
下面是例子:
data.dropna(axis=1,thresh=3)
name
0 Verne Raymond
1 NaN
2 Patrick George
3 Saxon MacArthur
data.dropna(axis=0,how='all')
name age
0 Verne Raymond 18.0
2 Patrick George 21.0
3 Saxon MacArthur NaN
data.dropna(subset = ['name'])
name age
0 Verne Raymond 18.0
2 Patrick George 21.0
3 Saxon MacArthur NaN
fillna()的作用是填充缺失值
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
参数:
下面是例子:
data.fillna(0)
name age
0 Verne Raymond 18.0
1 0 0.0
2 Patrick George 21.0
3 Saxon MacArthur 0.0
data.fillna(method='ffill')
name age
0 Verne Raymond 18.0
1 Verne Raymond 18.0
2 Patrick George 21.0
3 Saxon MacArthur 21.0