数据集下载:https://www.kaggle.com/c/titanic/overview
在数据分析中我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后面的分析或建模,所以拿到数据的第一步是进行数据清洗,本章我们将学习缺失值、重复值、字符串和数据转换等操作。
import numpy as np
import pandas as pd
data=pd.read_csv('train.csv')
data.isnull().sum()#统计各列缺失的数据
Age、Cabin 、Embarked 分别缺失177、687、2个数据
data.fillna(0).isnull().sum()#用0填充缺失值
data=data.drop_duplicates()
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,原因是处理数据的时候不是在原数据框处理。
data['AgeBand'] = pd.cut(data['Age'], 5,labels = [1,2,3,4,5])
data.head()
data['Sex'].value_counts()
data['Cabin'].value_counts()
data['Embarked'].value_counts()
data['Sex_num']=data['Sex'].map({'male':1,'female ':2})
for feat in ["Sex", "Embarked"]:
x = pd.get_dummies(data[feat], prefix=feat)
data = pd.concat([data, x], axis=1)
data.head()
data['Title'] = data.Name.str.extract('([A-Za-z]+)\.', expand=False)
data.head()