今天我们分析的titanic 数据,数据我已经下载,并且放在项目路径下的data 文件中。
-
import pandas as pd
-
file = 'data/titanic_train.csv'
-
raw_df = pd.read_csv(file)
接下来就是标准套路:预览info以及预览head。
-
print(raw_df.info())
-
print(raw_df.head())
我们对数据集的名称进行简单的回顾:
-
RangeIndex: 891 entries, 0 to 890:表示891 个样本
-
columns :共12 列
按数据类型来划分:
int64 :
-
PassengerId :乘客ID
-
Survived:是否生存,1 为生存
-
Pclass :乘客级别
-
SibSp :sibling and spouse (兄弟姐妹以及配偶个数)Parch :parents and children(父母以及子女个数)
object:
-
Name: 名字
-
Sex:性别
-
Ticket :船票编号
-
Cabin:船舱号
-
Embarked:登船地点
float64:
-
RangeIndex: 891 entries, 0 to 890
-
Data columns (total 12 columns):
-
# Column Non-Null Count Dtype
-
-
0 PassengerId 891 non-null int64
-
1 Survived 891 non-null int64
-
2 Pclass 891 non-null int64
-
3 Name 891 non-null object
-
4 Sex 891 non-null object
-
5 Age 714 non-null float64
-
6 SibSp 891 non-null int64
-
7 Parch 891 non-null int64
-
8 Ticket 891 non-null object
-
9 Fare 891 non-null float64
-
10 Cabin 204 non-null object
-
11 Embarked 889 non-null object
-
dtypes: float64(2), int64(5), object(5)
-
memory usage: 83.7+ KB
一般的机器学习都不会预处理缺失值以及类别型数据,因此我们至少要对这两种情形做预处理。
首先我们查看缺失值,其实上文中的info已经有这样的信息。这里我们更显式的展示缺失信息。
-
# get null count for each columns
-
nulls_per_column = raw_df.isnull().sum()
-
print(nulls_per_column)
结果如下:
-
PassengerId 0
-
Survived 0
-
Pclass 0
-
Name 0
-
Sex 0
-
Age 177
-
SibSp 0
-
Parch 0
-
Ticket 0
-
Fare 0
-
Cabin 687
-
Embarked 2
-
dtype: int64
可以看到Age 有缺失,Age是float64 类型数据,Cabin 有缺失,Cabin 为object 类型,Embarked 有缺失,Embarked 也是object 类型。
主角登场(策略与函数)
上述我们可以看到缺失的列有哪些,对于有些情况,比如快速清理数据,我们仅仅会制定如下策略:
对于float类型,我们一般就是用均值或者中位数来代替 对于object 类型,如果ordinal 类型,也就是严格类别之分,比如(男,女),比如(高,中,低)等,一般就用众数来替代 对于object 类型,如果nominal类型,也就是没有等级/严格类别关系,比如ID,我们就用常值来替代。本文中用到的是sklearn的preprocessing 模块,pipeline模块,以及一个第三方“新秀”sklearn_pandas 库。
这里我们简单的介绍这个函数的用途。

(编辑:通化站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|