2.1缺失值观察与处理
import numpy as np
import pandas as pd
tr=pd.read_csv('train.csv')
tr.isnull().sum()#查看每个特征缺失值个数
对Age列的数据的缺失值进行处理
tr['Age'].dropna()#删除缺失值
tr['Age'].fillna(0)#用0来填补缺失值
检索空缺值时,使用data['A'].isnull()
比较合适,若采用data['A']==np.nan,即使在缺失值位置也会返回False,因为np.nan是无法比较的,不能用于‘==’中对空值进行判断。
2.2重复值观察与处理
tr[tr.duplicated()]#按行查看重复值
tr.drop_duplicates()#删除重复值
2.3特征观察与处理
分箱操作就是将连续数据进行分组。
pd.cut(tr['Age'],5,labels=['1','2','3','4','5'])
#将Age平均分箱成5个年龄段,并分别用类别变量12345表示
pd.cut(tr['Age'],[0,5,15,30,50,80],labels=['1','2','3','4','5'])
#将Age划分为(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
pd.qcut(tr['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels=['1','2','3','4','5'])
#将Age按10% 30% 50% 70% 90%五个年龄段,并用分类变量12345表示
tr['Sex'].value_counts()
tr['Sex'].unique()
#查看Sex变量名及种类的两种方法
将文本变量Sex用数值1和2来表示的两种方法
tr['Sex_num']=tr['Sex'].replace(['male','female'],[1,2])
tr['Sex_num']=tr['Sex'].map({'male': 1, 'female': 2})
将文本变量用one-hot编码表示 ,将变量变为数字的,稀疏的。能唯一地表示数据的每一个特征。
for feat in ["Age", "Embarked"]:
# x = pd.get_dummies(tr["Age"] // 6)
# x = pd.get_dummies(pd.cut(tr['Age'],5))
x = pd.get_dummies(tr[feat], prefix=feat)
tr = pd.concat([tr, x], axis=1)
#tr[feat] = pd.get_dummies(tr[feat], prefix=feat)
tr.head()
采用正则表达式从纯文本Name特征里提取出Titles的特征,如Mr,Miss,Mrs等
tr['Title'] = tr.Name.str.extract('([A-Za-z]+)\.', expand=False)
总结:在第二章第一节中学习到了更多的数据处理方法,如对缺失值和重复值的处理以及通过分箱操作来分组,将文本变量用数字来替代。最后的one-hot编码因为以前没有接触过,所以还有一些疑问,需要多找些资料来学习。