数据清洗及特征处理
数据集下载:https://www.kaggle.com/c/titanic/overview
在数据分析中我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后面的分析或建模,所以拿到数据的第一步是进行数据清洗,本章我们将学习缺失值、重复值、字符串和数据转换等操作。
1 数据清洗
1.1 任务一:查看每个特征缺失值个数
import numpy as np
import pandas as pd
data=pd.read_csv('train.csv')
data.isnull().sum()#统计各列缺失的数据
Age、Cabin 、Embarked 分别缺失177、687、2个数据
1.2任务二:对缺失值进行处理
data.fillna(0).isnull().sum()#用0填充缺失值
1.3任务三:对重复值进行处理
data=data.drop_duplicates()
2 特征处理
data.head()#观察前5行数据
我们对特征进行一下观察,可以把特征大概分为两大类: 数值型特征:Survived ,Pclass, Age ,SibSp, Parch, Fare,其中Survived, Pclass为离散型数值特征,Age,SibSp, Parch, Fare为连续型数值特征 文本型特征:Name, Sex, Cabin,Embarked, Ticket,其中Sex, Cabin, Embarked, Ticket为类别型文本特征。
数值型特征一般可以直接用于模型的训练,但有时候为了模型的稳定性及鲁棒性会对连续变量进行离散化。文本型特征往往需要转换成数值型特征才能用于建模分析。
注意:运行结果中仍然存在NAN,原因是处理数据的时候不是在原数据框处理。
2.1 将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示。
data['AgeBand'] = pd.cut(data['Age'], 5,labels = [1,2,3,4,5])
data.head()
2.2查看文本变量名及种类
data['Sex'].value_counts()
data['Cabin'].value_counts()
data['Embarked'].value_counts()
2.3将文本变量Sex用数值变量12表示
data['Sex_num']=data['Sex'].map({'male':1,'female ':2})
2.3将文本变量Sex, Embarked用one-hot编码表示
for feat in ["Sex", "Embarked"]:
x = pd.get_dummies(data[feat], prefix=feat)
data = pd.concat([data, x], axis=1)
data.head()
2.4 从纯文本Name特征里提取出Titles的特征(所谓的Titles就是Mr,Miss,Mrs等)
data['Title'] = data.Name.str.extract('([A-Za-z]+)\.', expand=False)
data.head()
文章出处登录后可见!
已经登录?立即刷新