栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas剔除缺失值

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas剔除缺失值

缺失值处理方法,包括 dropna()(剔除缺失值)和 fillna()(填充缺失值)。本文介绍如何利用 Pandas 剔除缺失值:

data = pd.Series([1, np.nan, 'hello', None]) 
data.dropna() 

输出结果如下:

0 1
2 hello 
dtype: object

而在 Dataframe 上使用它们时需要设置一些参数,例如下面的 Dataframe:

df = pd.Dataframe([[1, np.nan, 2], 
					[2, 3, 5], 
					[np.nan, 4, 6]]) 
print(df)

输出结果如下:

   0   1   2 
 0 1.0 NaN 2 
 1 2.0 3.0 5 
 2 NaN 4.0 6

我们没法从 Dataframe 中单独剔除一个值,要么是剔除缺失值所在的整行,要么是整列。根据实际需求,有时需要剔除整行,有时可能是整列,Dataframe 中的 dropna() 会有一些参数可以配置。
默认情况下,dropna() 会剔除任何包含缺失值的整行数据:

df.dropna() 

输出结果如下:

   0   1   2 
 1 2.0 3.0 5

可以设置按不同的坐标轴剔除缺失值,比如 axis=1(或 axis=‘columns’)会剔除任何包含缺失值的整列数据:

df.dropna(axis='columns') 

输出结果如下:

   2 
 0 2 
 1 5 
 2 6

但是这么做也会把非缺失值一并剔除,因为可能有时候只需要剔除全部是缺失值的行或列,或者绝大多数是缺失值的行或列。这些需求可以通过设置 how 或 thresh 参数来满足,它们可以设置剔除行或列缺失值的数量阈值。
默认设置是 how=‘any’,也就是说只要有缺失值就剔除整行或整列(通过 axis 设置坐标轴)。还可以设置 how=‘all’,这样就只会剔除全部是缺失值的行或列了:

df[3] = np.nan 
print(df)

输出结果如下:

   0   1   2 3 
 0 1.0 NaN 2 NaN 
 1 2.0 3.0 5 NaN 
 2 NaN 4.0 6 NaN 
df.dropna(axis='columns', how='all') 

输出结果如下:

   0   1    2 
 0 1.0 NaN 2 
 1 2.0 3.0 5 
 2 NaN 4.0 6

还可以通过 thresh 参数设置行或列中非缺失值的最小数量,从而实现更加个性化的配置:

In[22]: df.dropna(axis='rows', thresh=3) 

输出结果如下:

   0   1   2 3 
 1 2.0 3.0 5 NaN

第 1 行与第 3 行被剔除了,因为它们只包含两个非缺失值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529243.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号