2 第二章:数据清洗及特征处理
https://www.bilibili.com/video/BV14X4y1A7fa/?spm_id_from=333.788.recommend_more_video.3&vd_source=6e8163e0e39ac89378f51286633eec9d
import numpy as np
import pandas as pd
df=pd.read_csv(‘train.csv’)
2.1 缺失值观察与处理
1.请查看每个特征缺失值个数
df.info()
df.isnull().sum()
df.isna().sum()
isnull和notnull:检测是否是空值
df[[‘Age’,‘Cabin’,‘Embarked’]].head(3)
2.dropna:丢弃、删除缺失值
axis : 删除行还是列,{0 or ‘index’, 1 or ‘columns’}, default 0
how :如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除 inplace : 如果为True则修改当前df,否则返回新的df
fillna:填充空值
value:用于填充的值,可以是单个值,或者字典(key是列名,value是值) method :
等于ffill使用前一个不为空的值填充forword fill;向后填充
等于bfill使用后一个不为空的值填充backword fill ;向前填充
axis: 按行还是列填充,{0 or ‘index’, 1 or ‘columns’}
inplace :
如果为True则修改当前df,否则返回新的df
df1=df.fillna({‘Age’:0})
df.loc[df[‘Age’].isnull(),‘Age’]=0
3.检索空缺值用np.nan,None以及.isnull()哪个更好
np.nan不是一个“空”对象,用 i is None判断是False;
对某个值是否为空值进行判断,只能用np.isnan(i)函数,万万不可用 i == np.nan()来做,因为空值并不能用判断相等的“==”正确识别(上例前两条);
np.nan非空对象,其类型为基本数据类型float
由上可见,其实np.isnan()和pd.isnull()都可以对不论是DataFrame、Python list还是仅仅一个数值进行空值检测。但一般在实际应用中,np.isnan()多用于单个值的