pandas处理缺失数据

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

滤除缺失数据(dropna)
Series
In [1]: import pandas as pd In [2]: from pandas import DataFrame, Series In [3]: import numpy as np In [4]: from numpy import nan as NA In [5]: data = Series([1, NA, 3.5, NA, 7]) In [6]: data.dropna() Out[6]: 0 1.0 2 3.5 4 7.0 dtype: float64 In [7]: data[data.notnull()] Out[7]: 0 1.0 2 3.5 4 7.0 dtype: float64

DataFrame
  • DataFrame中dropna默认丢弃任何含有缺失值的行。
  • 传入how=’all’将只丢弃全为NA的行
  • 如果想丢弃列,只需传入axis=1
填充缺失数据(fillna)!!
  • 常数调用df.fillna(0)
  • 字典调用,对不同的列填充不同的值df.fillna({1:0.5, 3:-1})
  • fillna默认会返回新对象!!,就地修改: _ = df.fillna(0, inplace=True)
  • reindex有效的插值方法也可用于fillna
替换值
利用fillna方法填充缺失数据可以看做值替换的一种特殊情况。而replace则提供了一种实现该功能的更简单、更灵活的方式。
In [11]: data = Series([1.,-999.,2.,-999.,-1000.,3.]) In [12]: data Out[12]: 0 1.0 1 -999.0 2 2.0 3 -999.0 4 -1000.0 5 3.0 dtype: float64 In [13]: data.replace(-999, np.nan) Out[13]: 0 1.0 1 NaN 2 2.0 3 NaN 4 -1000.0 5 3.0 dtype: float64 In [14]: data.replace([-999,-1000], np.nan) Out[14]: 0 1.0 1 NaN 2 2.0 3 NaN 4 NaN 5 3.0 dtype: float64 In [15]: data.replace([-999,-1000], [np.nan,0]) Out[15]: 0 1.0 1 NaN 2 2.0 3 NaN 4 0.0 5 3.0 dtype: float64 In [16]: data.replace({-999 : np.nan, -1000 : 0}) Out[16]: 0 1.0 1 NaN 2 2.0 3 NaN 4 0.0 5 3.0 dtype: float64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值