三步加星标
你好,我是 zhenguo
我正在按照下面施工计划往前推进,标记小红旗部分已经讲完,你可以从这里:施工专题已完成 60 篇 汇总 找到过往推送文章
今天晚上使用最经典的泰坦尼克数据集,和你一起探讨,如何快速清洗数据,如何快速找出影响y的特征列表。
在文末我会提供数据集和这个notebook的下载
首先导入包:
代码语言:javascript复制import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
导入数据
代码语言:javascript复制df = pd.read_csv('./kaggle-data/titanic/train.csv')
找到所有列的None值
代码语言:javascript复制df.isnull().sum()
代码语言:javascript复制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列较多,使用平均值填充
代码语言:javascript复制df['Age'] = df['Age'].transform(lambda val: val.fillna(val.mean()))
sex列映射male为0,female为1
代码语言:javascript复制df['Sex'] = df['Sex'].map({'male': 0, 'female': 1})
df = df.fillna(0)
接下来就是最关键的,使用corr方法,找出各个变量间的相关系数,并使用heatmap绘制相关性:
代码语言:javascript复制plt.figure(figsize=(8,6), dpi=150)
sns.heatmap(data=df.corr(), cmap='coolwarm', annot=True)
找出与survived列最相关的几个特征:
代码语言:javascript复制np.abs(df.corr()['Survived']).sort_values().tail(6)
去掉相关不大的列,得到如下影响survived最大的特征 DataFrame:
代码语言:javascript复制X = df.drop(['Survived', 'Cabin', 'Name', 'Embarked', 'Ticket'], axis=1)