pandas删除某列有空值的⾏_pandas中处理缺失值:dropna 分析数据免不了遇到很多空值的情况,如果想去除这些空值,pandas设置了专门的函数:dropna(),下⾯将对dropna()进⾏详细的介绍
dropna()
需要重点掌握的知识点:
第⼀点需要确定的参数就是axis,0:⾏,1:列
当inplace=True时,how建议设置为"all"
建议采⽤默认返回新对象的⽅法,不要对原始数据进⾏修改
subset建议每次都⽤上,更有针对性
thresh为⾮空的值得数量,⼩于该数量将会被删除
⾸先需要判断是否含有空值:
isna()
df.isna()
结果
isnull()
判断是否全部为空:
isna().any()or isnull.any(),两个函数是⼀样的
df.isnull().any()
结果:
判断某⼀列是否为空:
df['toy'].isnull()
df['toy'].isnull().any()
下⾯正式学习:dropna()
DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)[source]
当axis=1,当某列出现缺失值时,将改列丢弃并返回
how :确定缺失值的个数:缺省时为how=‘any’
how=‘any’ ,表明只要某⾏或者列出现缺失值就将该⾏列丢弃how=‘all’ ,表明某⾏列全部为缺失值才将其丢弃
thresh:阈值设定
当⾏列中⾮缺省值的数量少于给定的值就将该⾏丢弃
subset:部分标签中删除某⾏列
subset = [ 'a','d'] 即丢弃⼦列 a d 中含有缺失值的⾏
iniplace: bool取值,默认False
当inplace= True, 即对原数据操作,没有返回值
实例学习:
pd.dropna():
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'], "toy": [np.nan, 'Batmobile', 'Bullwhip'],
"born": [pd.NaT, pd.Timestamp("1940-04-25"),
pd.NaT]})
rs=df.dropna()
print(df)
print("="*40)
print(rs)
默认设置情况下:
结果:
axis:
默认为0,删除含有缺失值的⾏,axis=1删除含有缺失值的列
rs=df.dropna(axis=1)
how:默认为‘any’
how=‘any’ ,表明只要某⾏或者列出现缺失值就将该⾏列丢弃how=‘all’ ,表明某⾏列全部为缺失值才将其丢弃
重新构建数据,增加⼀列和⼀⾏空值:
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'], "toy": [np.nan, 'Batmobile', 'Bullwhip'],
"born": [pd.NaT, pd.Timestamp("1940-04-25"),
pd.NaT]})
df["p"]=np.nan
df.loc["4"]= np.nan
how="all":
axis=1:
rs=df.dropna(axis=1,how="all")
isnull的用法结果:
axis=0:
rs=df.dropna(axis=0,how="all")
thresh:
⾏或列⾄少保留的⾮空值的数量,关键是⾮空的数量
传⼊⼀个整数值,当⾏或列低于该值时删除,⼤于等于时不删除当没⾏⾄少有⼀个不是空值时保留,全部为空时删除
rs=df.dropna(axis=0,thresh=1)
结果
当每⾏⾄少有2个不是空值时保留,全部为空时删除
rs=df.dropna(axis=0,thresh=2)
结果
subset:注意,只能删除⾏,需要给定列标签,不能删除列
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论