处理缺失数据 - 草稿

数据清洗

    pandas使用浮点数NaN表示浮点和非浮点数组中的缺失数据,它只是一个便于被检测出来的标志而已。python内置的None值也会被当做NA处理。

(1)查找了缺失值:

      首先利用data.info(),观察每个数据列数据相关情况;

      然后利用:data.isnull().sum(),查看所有列中是NA的数据,并得到NA数据的个数;

      data['Age'].isnull().sum查看单列的数据NA情况

(2)对缺失值进行处理

a)填入具体的值

data[data['Age']==None]=0

data[data['Age'].isnull()]=0

data[data['Age']==np.nan]=0

b)删除

dropna:根据各标签的值中是否存在缺失的数据对轴标签进行过滤,可通过阀值调节对缺失值的容忍度

data.dropna(how='all‘,axis=1,thresh=3)

data[data.notnull()]

fillna:用指定值或插值方法(如ffil或bfill)填充缺失数据

isnull:返回一个含有布尔值的对象 这些布尔值表示哪些值是缺失值/NA

notnull:isnull的否定式

重复值观察与处理

df.duplicated():方法返回的是一个布尔值Series,与之前的出现的行进行对比,是否存在重复行,如果重复则返回True

#df.duplicated(‘ID’):某列查找重复值

#筛选出重复行:df[df.duplicated(‘ID’)]

#筛选非重复行:df[df.duplicated(‘ID’)==False]

df.drop_duplicates():返回一个新的DATa Frame数组,返回的数组就是duplicated中False的部分

#df.drop_duplicates(inplase=True):如果需要直接将原数据修改,需要加参数inplase

特征观察与处理

我们对特征进行一下观察,可以把特征大概分为两大类:

数值型特征:Survived ,Pclass, Age ,SibSp, Parch, Fare,其中Survived, Pclass为离散型数值特征,Age,SibSp, Parch, Fare为连续型数值特征

文本型特征:Name, Sex, Cabin,Embarked, Ticket,其中Sex, Cabin, Embarked, Ticket为类别型文本特征。

数值型特征一般可以直接用于模型的训练,但有时候为了模型的稳定性及鲁棒性会对连续变量进行离散化。文本型特征往往需要转换成数值型特征才能用于建模分析。

Python实现连续数据的离散化处理主要基于两个函数:pandas.cut和pandas.qcut,第一个根据指定分界点对连续数据进行分箱处理(按变量大小进行分类);第二个对指定箱子的数量对连续数据进行等宽分箱处理(按变量数量进行分类,所谓等宽指的是每个箱子中的数量是相同的)

df['AgeBand']=pd.cut(df['Age'],[0,5,15,30,50,80],labels=['1','2','3','4','5'])

默认的左开右闭,增加参数right=Flase,改变为左闭右开;如果向cut传递是箱的数量而不是确切的边界,则它会根据数据最小值和最大值计算等长箱,pd.cut(data,4,precision=2)

处理类别数据:可分为标称特征(nominal feature)和有序特征(ordinal feature),有序特征就是类别值是有序的或者可以排序,如衣服的尺寸。

为了确保模型可以正确使用有序特征,需要将类别字符串换为整数,需要手工定义相应的映射,利用pandas的map()函数进行。

定义一个size_mapping={……}的字典;

然后df['size']=df['size'p].map(size_mapping)

类别的编码

独热编码

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容