1、处理缺失值
pandas使用浮点值NaN(Not a Number来表示缺失值),pandas的目标之一就是尽可能无痛地处理缺失值,例如:pandas对象的所有描述性统计信息默认情况下是排除缺失值的。
NaN的常用处理方法:
dropna 根据每个标签的值是否缺失数据来筛选轴标签,并根据允许丢失的数据量来确定阀值。
fillna 用某些值填充缺失的数据或使用插值方法,如:‘ffill’用前一个值填充,‘bfill’用后一个值来填充。当第一个值是NaN时,指定参数‘ffill’后依然是NaN,因为前面没有参考值。当最后一个值是NaN时指定‘bfill’同理。
isnull 返回表明那些值是缺失值的布尔值
notnull isnull的反函数
- 过滤缺失值
方法: dropna(axis=0, how=“any”, thresh=None, subset=None, inplace=False)
axis参数指定删除的轴向。默认是axis=0,逐行删除。axis值为1时,逐列删除。
how参数默认是‘any’,当前行、列有任意1个NaN值即过滤当前行、列,参数为‘all’时仅过滤所有值都为‘NaN’的行或列。
thresh=n表示当前行、列至少保留n个非NaN的值的数据。
inplace 表示是否就地改值,为True时就地改值,无返回值,为False时返回过滤后的新值。
a、dropna()不指定参数时默认逐行过滤有NaN的行。返回过滤后的值。
pf = pd.read_excel(path)
print(pf)
print(pf.dropna())
打印如下:
number name sex age
0 20200019.0 陈俊 男 19
1 20200019.0 赵华 NaN 18
2 20200019.0 NaN 男 18
3 NaN 周睫 NaN 19
4 20200019.0 张凯 男 19
number name sex age
0 20200019.0 陈俊 男 19
4 20200019.0 张凯 男 19
b、dropna(how=‘all’)时,将删除所有值均为NaN的行。
pf = pd.read_excel(path)
pf.loc[5] = np.nan #增加一行全为NaN的行
print(pf)
print(pf.dropna(how='all'))
打印如下:
number name sex age
0