数据清洗 (data cleaning) 是机器学习和深度学习进入算法步前的一项重要任务,总结为下面几个步骤。
步骤 1:读入 csv 数据;
步骤 2:预览数据;
步骤 3:统计每一列的空值;
步骤 4:填充空值
步骤 5:特征工程,子步骤包括:删除一些特征列;创建新的特征列;创建数据分箱;
步骤 6:对分类列编码,常用的包括,调用 Sklearn 中 LabelEncode 编码 ;Pandas 中哑编码;
步骤 7:再验证核实
今天使用泰坦尼克数据集,完整介绍以上步骤的具体操作过程。
1 读入数据
使用 Pandas, 读入 csv 训练数据,然后了解每个字段的含义,数据有多少行和多少列等。
import pandas as pd
data_raw = pd.read_csv('train.csv')
data_raw
结果如下,一共训练集有 891 行数据,12 列
PassengerId: 乘客的 Id;
Survived:乘客生还情况,取值 1,2;
Pclass:乘客等级,取值:1,2,3;
SibSp:乘客的兄弟姐妹和配偶在船上的人数;
Parch:乘客的父母和孩子在船上的人数;
Fare:乘船的费用;
Cabin:舱的编号;
Embarked:分类变量,取值 S, C, Q;
其他几个特征比较好辨别,不再解释。
2 数据预览
Pandas 提供 2 个好用的方法:info
,describe
info
统计出数据的每一列类型、是否为 null 和个数;
describe
统计出数据每一列的统计学属性信息,平均值,方差,中位数,分位数等。
data_raw.info()
data_raw.describe(include='all')
结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB