python-缺失值处理 fillna/dropna

  • 删除缺失值
    • dropna():删除缺失的值。
    • 返回值:DataFrame 删除了NA条目的DataFrame。不改变原序列值。
    • 参数检验:
    1. axis : {0或’index’,1或’columns’},默认0
      确定是否删除包含缺失值的行或列。
      0或’index’:删除包含缺失值的行。
      1或“列”:删除包含缺失值的列。
      从0.23.0版开始不推荐使用:将元组或列表传递到多个轴上。只允许一个轴。
    2. how : {‘any’,‘all’},默认为’any’
      当我们有至少一个NA或全部NA时,确定是否从DataFrame中删除行或列。
      ‘any’:如果存在任何NA值,则删除该行或列。
      ‘all’:如果所有值均为NA,则删除该行或列。
    3. thresh : int,可选
      需要许多非NA值。
    4. subset :类数组,可选
      要考虑的其他轴上的标签,例如,如果要删除行,这些标签将是要包括的列的列表。
    5. inplace : bool,默认为False
      如果为True,则执行就地操作并返回None。
from numpy import nan as NA

data=pd.DataFrame([[1,6,5.0,0],[NA,NA,NA,NA],[NA,2,NA,2],[NA,1,1,1]])
data[0][0]=NA   # 改变的是原始数值
string_data.isnull()
data.dropna()
data.dropna(axis=0,how="all")

在这里插入图片描述
过滤DataFrame的行的相关方法往往涉及时间序列数据。假设只想保留包含一定数量的观察值的行。可以用thresh参数来表示:

data=pd.DataFrame(np.random.randn(7,3))
data.iloc[:4,1]=NA
data.iloc[:2,2]=NA
data.dropna()
data.dropna(thresh=1)
data.dropna(thresh=2)
data.dropna(thresh=3)
data.dropna(thresh=4)

在这里插入图片描述

  • 补全缺失值
    • fillna():使用指定的方法填充NA/NaN值。
    • 返回值:DataFrame 缺少值的对象已填充。不改变原序列值。
    • 参数解释
    1. value :scalar(标量), dict, Series, 或DataFrame
      用于填充孔的值(例如0),或者是dict / Series / DataFrame的值,
      该值指定用于每个索引(对于Series)或列(对于DataFrame)使用哪个值。
      不在dict / Series / DataFrame中的值将不被填充。该值不能是列表(list)。
    2. method : {‘backfill’,‘bfill’,‘pad’,‘ffill’,None},默认为None
      填充重新索引的系列填充板/填充中的holes的方法:
      将最后一个有效观察向前传播到下一个有效回填/填充:
      使用下一个有效观察来填充间隙。
    3. axis : {0或’index’,1或’columns’}
      填充缺失值所沿的轴。
    4. inplace : bool,默认为False
      如果为True,则就地填充。
      注意:这将修改此对象上的任何其他视图
      (例如,DataFrame中列的无副本切片)。
    5. limit : int,默认值None
      如果指定了method,
      则这是要向前/向后填充的连续NaN值的最大数量。
      换句话说,如果存在连续的NaN数量大于此数量的缺口,
      它将仅被部分填充。如果未指定method,
      则这是将填写NaN的整个轴上的最大条目数
      如果不为None,则必须大于0。
    6. downcast : dict,默认为None
      item-> dtype的字典,如果可能的话,将向下转换,
      或者是字符串“infer”,
      它将尝试向下转换为适当的相等类型
      (例如,如果可能,则从float64到int64)。

========================

data.fillna(0)  
data.fillna({1:0.5,2:0})  ##调用fillna时使用字典,可以为不同列设定不同的填充值:

在这里插入图片描述

fillna返回的是一个新的对象,也可以修改已经存在的对象:

data.fillna(0,inplace=True)

在这里插入图片描述

data2=pd.DataFrame(np.random.randn(6,3))
data2.iloc[2:,1]=NA
data2.iloc[4:,2]=NA
data2.fillna(method="ffill")
data2.fillna(method="ffill",limit=2)

在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值