- 删除缺失值
- dropna():删除缺失的值。
- 返回值:DataFrame 删除了NA条目的DataFrame。不改变原序列值。
- 参数检验:
- axis : {0或’index’,1或’columns’},默认0
确定是否删除包含缺失值的行或列。
0或’index’:删除包含缺失值的行。
1或“列”:删除包含缺失值的列。
从0.23.0版开始不推荐使用:将元组或列表传递到多个轴上。只允许一个轴。 - how : {‘any’,‘all’},默认为’any’
当我们有至少一个NA或全部NA时,确定是否从DataFrame中删除行或列。
‘any’:如果存在任何NA值,则删除该行或列。
‘all’:如果所有值均为NA,则删除该行或列。 - thresh : int,可选
需要许多非NA值。 - subset :类数组,可选
要考虑的其他轴上的标签,例如,如果要删除行,这些标签将是要包括的列的列表。 - 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 缺少值的对象已填充。不改变原序列值。
- 参数解释
- value :scalar(标量), dict, Series, 或DataFrame
用于填充孔的值(例如0),或者是dict / Series / DataFrame的值,
该值指定用于每个索引(对于Series)或列(对于DataFrame)使用哪个值。
不在dict / Series / DataFrame中的值将不被填充。该值不能是列表(list)。 - method : {‘backfill’,‘bfill’,‘pad’,‘ffill’,None},默认为None
填充重新索引的系列填充板/填充中的holes的方法:
将最后一个有效观察向前传播到下一个有效回填/填充:
使用下一个有效观察来填充间隙。 - axis : {0或’index’,1或’columns’}
填充缺失值所沿的轴。 - inplace : bool,默认为False
如果为True,则就地填充。
注意:这将修改此对象上的任何其他视图
(例如,DataFrame中列的无副本切片)。 - limit : int,默认值None
如果指定了method,
则这是要向前/向后填充的连续NaN值的最大数量。
换句话说,如果存在连续的NaN数量大于此数量的缺口,
它将仅被部分填充。如果未指定method,
则这是将填写NaN的整个轴上的最大条目数
如果不为None,则必须大于0。 - 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)