Python缺失值的判断、过滤、填充、删除怎么做
Admin 2022-08-30 群英技术资讯 1431 次浏览
很多朋友都对“Python缺失值的判断、过滤、填充、删除怎么做”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!在通过Pandas做数据分析时,数据中往往会因为一些原因而出现缺失值NaN (Nota number)o比如前文中的例子,当两个DataFrame对象进行简单运算时,无法匹配的位置会出现缺失值NaN或者None.
isnull ( )和notnull ( )方法都可以用于判断数据是否为缺失值( NaN或者None).如果是缺失值,则isnull()返回值为True, notnull()返回值为False.
df2
Out[170]:
A B C D
a 2.0 4.0 6.0 NaN
b 6.0 8.0 10.0 NaN
c 10.0 12.0 14.0 NaN
df2.isnull()
Out[171]:
A B C D
a False False False True
b False False False True
c False False False True
df2.notnull()
Out[172]:
A B C D
a True True True False
b True True True False
c True True True False
有时遇到包含缺失值的数据处理起来比较简单,只需要保留有数值的数据即可:
df2
Out[182]:
A B C D
a 2.0 4.0 6.0 NaN
b 6.0 8.0 10.0 NaN
c 10.0 12.0 14.0 1.0
#把D列中的缺失值过滤掉
df2.D[df2.D.notnull()]
Out[183]:
c 1.0
Name: D, dtype: float64
有时处理数据时我们会想将缺失值用实际的值做替代,Pandas包里也有函数可以调 用:DataFrame.fillna(value=None, method = None, axis = None, inplace=False, limit=None)
参数value是在缺失值处填充的值,可以是数值数字,也可以是字符串;method 是填充的方式,默认为None,也可以取值为ffin、pad、bfill或backfill,其中ffill/pad是用行或列方向上的上一个观测值来填充缺失值,bfill/backfin是用行或列方向上的下一个观测 值来填充;axis与method配合使用,指定行(axis=l)或列(axis=0)的方向;limit=None 时,会填充连续的缺失值,如果指定数值的话,比如limit=2,只会依次填充连续NaN值的 指定数字个数(比如2个);若inplace=False则不会变更原DataFrame,若inplace=True, 则会改变原DataFrame。
import pandas as pd
import numpy as np
h2h2df=pd.DataFrame(np.arange(1,21).reshape(5,4),index=list('abcde'),columns=list("ABCD"))
h2df.loc['c','A']=np.nan
h2df.loc['b':'d','C']=np.nan
h2df
Out[192]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 NaN 8
c NaN 10 NaN 12
d 13.0 14 NaN 16
e 17.0 18 19.0 20
h2df.fillna(0)
Out[193]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 0.0 8
c 0.0 10 0.0 12
d 13.0 14 0.0 16
e 17.0 18 19.0 20
h2df.fillna(method='ffill')
Out[194]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 3.0 8
c 5.0 10 3.0 12
d 13.0 14 3.0 16
e 17.0 18 19.0 20
h2df.fillna(method='pad')
Out[197]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 3.0 8
c 5.0 10 3.0 12
d 13.0 14 3.0 16
e 17.0 18 19.0 20
h2df.fillna(method='backfill',axis=1)
Out[196]:
A B C D
a 1.0 2.0 3.0 4.0
b 5.0 6.0 8.0 8.0
c 10.0 10.0 12.0 12.0
d 13.0 14.0 16.0 16.0
e 17.0 18.0 19.0 20.0
h2df.fillna(method='ffill',limit=2)
Out[198]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 3.0 8
c 5.0 10 3.0 12
d 13.0 14 NaN 16
e 17.0 18 19.0 20
Pandas提供对包含缺失值的数据集进行行列的删除操作:
DataFrame.dropna(axis=0, how=‘any’, thresh=None)
axis = 0指删除包含缺失值的行,axis = 1指删除包含缺失值的列,默认为0; how=any表示只要有一个缺失值就删除该行(列),how = all表示只有当所有的元素都为缺失值时才删除该行(列),how默认取值为any;thresh默认为None。当thresh=5时表示只有当某行(列)缺失值的数量大于或者等于5时删除该 行(列)。
df
Out[199]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 NaN 8
c NaN 10 NaN 12
d 13.0 14 NaN 16
e 17.0 18 19.0 20
df.dropna(axis=0)
Out[200]:
A B C D
a 1.0 2 3.0 4
e 17.0 18 19.0 20
df.dropna(axis=1)
Out[201]:
B D
a 2 4
b 6 8
c 10 12
d 14 16
e 18 20
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
numpy是Python语言的一个扩充程序库,可以支持高级大量的维度数组与矩阵运算。本文给大家介绍的就是关于numpy库的基本使用,具有一定的参考学习价值,下面跟随小编一起来了解一下numpy库的使用吧。
动机从一个问题引出 MetaClassMetaclass 编程动机python语言因为工作偏向于 AI ,所以对于这门语言还停留在表面,对于 python 深层并没有接触到。今天来聊一聊元类(metacla
这篇文章主要介绍怎么使用Python求解斐波那契第n项,方法多样,逻辑清晰,代码简单详细,有这方面需要的朋友可以参考下
常规版本简单的for循环遍历x_n=["x1","x2","x3"]forxinx_n:print(x)>>x1x2x3借助range()和len()x_n=["x1","x2","x3"]foriinrange(len(x_n)):print(...
在python,还有一个写入文件的方法,那就是和它长得很像的writeline函数。这两者具体如何使用,有什么区别吗?本文小编从参数、格式、用法和具体使用向大家介绍python中write和writelines的区别。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008