4.数据清洗及特征处理
4.1导入numpy、pandas包和数据
import numpy as np
import pandas as pd
df=pd.read_csv('train.csv')
4.2缺失值观察与处理
4.2.1缺失值观察
#查看每个特征缺失值个数
df.info()
df.isnull().sum()
4.2.2对缺失值进行处理
df.dropna()
df.fillna()
#对Age列的数据缺失值进行处理
df[df['Age']==None]=0
4.3重复值观察与处理
4.3.1查看数据中的重复值
df[df.duplicated()]
4.3.2对重复值进行处理
df.drop_duplicates()
4.4特征观察与处理
4.4.1对年龄进行分箱(离散化)处理
#将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示
df['AgeBand']=pd.cut(df['Age'],5,labels=['1','2','3','4','5'])
#将连续变量Age划分为[0,5),[5,15),[15,30),[30,50),[50,80)五个年龄段,并分别用类别变量12345表示
df['AgeBand']=pd.cut(df['Age'],[0,5,15,30,50,80],labels=['1','2','3','4','5'])
#将连续变量Age按10%,30%,50%,70%,90%五个年龄段,并用分类变量12345表示
df['AgeBand']=pd.qcut(df['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels=['1','2','3','4','5'])
4.4.2对文本变量进行转换
#查看类别文本变量名及种类
df['Sex'].value_counts()
df['Sex'].unique()
df['Sex'].nunique()
#将类别文本转换为12345
df['Sex_num']=df['Sex'].replace(['male','female'],[1,2])
df['Sex_num']=df['Sex'].map({'male':1,'female':2})
4.4.3从纯文本Name特征里提取出Title的特征
df['Title']=df.Name.str.extract('([A-Za-z]+)\.',expand=False)