DataFrame处理空值&处理重复数据

过滤缺失数据 dropna()

  • 通过 dropna() 滤除缺失数据,凡是包含NaN的行/列都过滤掉:df1.dropna()
  • 传入how=‘all’ 滤除全部都是NaN的数据: df1.dropna(how='all')
  • 默认情况下是 how=‘any’,只要有NaN就删除 :df1.dropna(how='any')
  • 传入axis=1axis=0 过滤列或者行的NaN:df1.dropna(axis=1,how='all')
  • 传入thresh=n 保留至少有n个非NaN数据的行:df1.dropna(thresh=1)

填充缺失数据

  • 用常数填充fillna : df1.fillna(0)
  • 传入inplace=True直接修改原对象:df1.fillna(0,inplace=True)
  • 通过字典填充不同的常数:df1.fillna({0:10,1:20,2:30})
    意思就是0列的NaN填充成10,1列的填充成20,2列的填充成30
  • 填充平均值:df1.fillna(df1.mean())
  • 只填充一列:df1.iloc[:,1].fillna(5,inplace = True)
    只填充索引为1列的值,将其NaN改为5
  • 传入method=” “改变插值方式:
    df2.iloc[1:4,3]=NaN #索引为1-4行,第3列的值赋值为NaN
  • 用前面的值来填充ffill,用后面的值来填充bfill:
    df2.fillna(method='ffill')
    传入limit=” “限制填充行数
    df2.fillna(method='bfill',limit=1)
    传入axis=” “修改填充方向

处理重复数据

DataFrame中经常会出现重复行,利用duplicated()函数返回每一行判断是否重复的结果(重复则为True)

  • 判断每一行是否重复(结果是bool值,TRUE代表重复的)
    df1.duplicated()
  • 去除全部的重复行
    df1.drop_duplicates()
  • 指定列去除重复行
    df1.drop_duplicates(['A'])
  • 保留重复行中的最后一行
    df1.drop_duplicates(['A'],keep='last')
  • 去除重复的同时改变DataFrame对象
    df1.drop_duplicates(['A','B'],inplace=True)

你可能感兴趣的:(Pandas)