第二章数据清理及特征处理
.dropna()
函数 官方文档🔗
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数 | 功能 |
---|---|
axis | axis 确定是否删除包含缺失值的行或列axis = 0 时删除包含缺失值的行(默认值)axis = 1 时删除包含缺失值的列 |
how | how 确定是行/列中均为 NaN 或者有 NaN 就将此行/列删去 how = 'any' 时删除有缺失值的行/列(默认值)how = 'all' 时删除全是缺失值的行/列 |
thresh | (可选)thresh = n(←int) 可以选择至少保留多少行数据 |
subset | (可选)在哪几列中删去含有 NaN 值的行/列 |
inplace | 是否直接在原处修改(默认值为False ) |
.fillna()
函数 官方文档🔗
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
参数 | 功能 |
---|---|
value | 用于填充 NaN 的值可以是 scalar(标量), dict, Series, or DataFrame |
method | pad / ffill 用前面行/列值,填充后面的 NaN 值backfill / bfill 用后面行/列值,填充前面的 NaN 值默认值为 None |
axis | 同 .dropna() |
inplace | 同 .dropna() |
limit | 若 method 有设定,如果存在多个连续的 NaN 值,每段最多填充前 limit 个空值若 method 未设定,如果存在多个的 NaN 值,每段最多填充前 limit 个空值默认值 None |
downcast | 尝试向下转换为适当的相等类型 默认值 None |
-
【思考】检索空缺值用
np.nan
,None
以及.isnull()
哪个更好,这是为什么?如果其中某个方式无法找到缺失值,原因又是为什么?
A:应该是np.nan
更好 看其他博客解释因为Pandas的底层为Numpy。
如答案中的df[df['Age']==None]=0
就没有成功将Age列的NaN
值转换成0,因为他们两个的类型不一样 -
处理字符数据 官方文档🔗
Series.str.extract(pat(Regular expression), flags=0, expand=True)