缺失值处理

pandas使用NaN(Not a Number)表示浮点和非浮点数组中的缺失数据,Python内置的None值也会被当做NA处理,pandas对象上的所有描述统计都排除了缺失数据。

NA处理方法
方法说明
dropna根据各标签的值是否存在缺失数据对轴标签进行过滤,可通过阈值调节对缺失值的容忍度
fillna用指定值或插值方法(如ffill或bfill)填充缺失数据
isnull返回布尔对象,表示那些值是缺失值/NA,该对象类型与元类型一样
notnullisnull的否定式

滤除缺失值

对于一个Series,dropna,返回一个仅含非空数据和索引值的Series

from numpy import nan as NA
data = Series([1,NA,3.5,NA,7])
data.dropna()
Out[31]: 
0    1.0
2    3.5
4    7.0
dtype: float64

当然,也可以通过布尔型索引达到效果

data[data.notnull()]
Out[32]: 
0    1.0
2    3.5
4    7.0
dtype: float64

对于DataFrame对象,你可能希望丢弃全NA或含有NA的行或列,dropna默认丢弃任何含有缺失值的行。

data = DataFrame([[1,2,3],[1,NA,NA],[NA,NA,NA],[NA,6,3]])
cleaned1=data.dropna() #丢弃含有NA的行
cleaned2=data.dropna(how='all') #丢弃全为NA的行
cleaned3=data.dropna(how='all') #丢弃全为NA的列
cleaned3=data.dropna(thresh=3) #保留三个以上非NA的行

填充缺失数据

大多数情况下,fillna方法是最主要的函数

df.fillna(0) #对所有缺失值填充常数0

df.fillna({'列名1':1,'列名2':2})#通过字典调用fillna,可以实现对不同列填充不同值

fillna默认返回新对象,但也可以就地修改

df.fillna(0,inplace=True)

fillna函数
参数说明
value用于填充缺失值的标量值或者字典
method插值方式,默认为ffill(用前一个数填充缺失值),还有一个bfill指用后一个数填充缺失值
axis待填充的轴,默认axis=0
inplace修改调用者对象而不产生副本
limit 对于向前和向后填充,允许连续填充的最大值

其实只要稍微动动脑子,你就可以利用fillna实现许多别的功能,比如传入Series的平均值或中位数

data.fillna(data.mean)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值