python-数据清洗及特征处理

数据清洗及特征处理

数据集下载: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()#统计各列缺失的数据

python-数据清洗及特征处理_第1张图片
Age、Cabin 、Embarked 分别缺失177、687、2个数据

1.2任务二:对缺失值进行处理

data.fillna(0).isnull().sum()#用0填充缺失值

1.3任务三:对重复值进行处理

data=data.drop_duplicates()

2 特征处理

data.head()#观察前5行数据

python-数据清洗及特征处理_第2张图片
我们对特征进行一下观察,可以把特征大概分为两大类: 数值型特征: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()

python-数据清洗及特征处理_第3张图片

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()

python-数据清洗及特征处理_第4张图片

2.4 从纯文本Name特征里提取出Titles的特征(所谓的Titles就是Mr,Miss,Mrs等)

data['Title'] = data.Name.str.extract('([A-Za-z]+)\.', expand=False)
data.head()

你可能感兴趣的:(python,数据挖掘,数据分析)