python 使用pandas中的dropna方法过滤缺失数据

相关参数

pd.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)

参数1 axis : 0为删除行,1为删除列

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(4,5),columns=list('abcde'))
df.loc[1,['b','d']]=np.nan

python 使用pandas中的dropna方法过滤缺失数据_第1张图片

df.dropna(axis=0)

python 使用pandas中的dropna方法过滤缺失数据_第2张图片

df.dropna(axis=1)

python 使用pandas中的dropna方法过滤缺失数据_第3张图片

参数2 how : {‘any’, ‘all’}

any : 存在即nan即丢弃,all : 全部为nan才丢弃

df.dropna(axis=0,how='all')

python 使用pandas中的dropna方法过滤缺失数据_第4张图片
可以发现,并未删除,我们重新增加一列全部为nan

df['f']=np.nan
df

python 使用pandas中的dropna方法过滤缺失数据_第5张图片
这次再执行

python 使用pandas中的dropna方法过滤缺失数据_第6张图片
即删除了

参数3 thresh :默认值 None值(int) :要求每排至少N个非NA值

df.dropna(axis=0,thresh=3)

python 使用pandas中的dropna方法过滤缺失数据_第7张图片

df.dropna(axis=0,thresh=4) 

python 使用pandas中的dropna方法过滤缺失数据_第8张图片
我们选择了对行操作,当thresh值为3的时候并没有删除索引为1的行,虽然它含有两个nan值,但是当thresh的值为4的时对其进行了删除,其原因是该参数的意义就是保留非nan值为参数值的那一行(列),索引为1的行的非nan值为3所以当thresh为3时对其进行了保留,但是当thresh为4的时候则对其进行了不保留(删除)。

参数4 subset : 类似于列表中取空值行或者列

df.dropna(axis=0,subset=['e'])

python 使用pandas中的dropna方法过滤缺失数据_第9张图片

df.dropna(axis=0,subset=['e','b'])

python 使用pandas中的dropna方法过滤缺失数据_第10张图片
当把subset选择为e时,并未对该行进行删除操作,因为索引为1的行e值并不为nan,但是当把sunset的列表加入b时就进行了删除,很显然e字段的值为nan,另外需要注意的是subset列表字段为nan进行删除是一个并集,不是交集只要列表里有一个字段或者某一行为nan都进行了删除。

参数5 inplace : 默认值 False

当为False时,我们刚才的操作其实并未在原对象进行修改,他会返回一个新的对象
python 使用pandas中的dropna方法过滤缺失数据_第11张图片
从上不难看出,当inplace=False时候,原对象并未被修改,而是把修改后的返回给新对象
python 使用pandas中的dropna方法过滤缺失数据_第12张图片
而当inplace 为True 时则直接对原对象进行操作
python 使用pandas中的dropna方法过滤缺失数据_第13张图片

你可能感兴趣的:(python 使用pandas中的dropna方法过滤缺失数据)