本文目录导读:
图片来源于网络,如有侵权联系删除
《泰坦尼克号数据预处理:深入挖掘与可视化准备》
泰坦尼克号的沉没是历史上著名的海难事件,而与之相关的乘客数据成为了一个极具分析价值的数据集,通过对泰坦尼克号乘客数据进行处理和可视化,我们可以从中发现许多有趣的信息,例如哪些因素影响了乘客的生存概率等,在进行深入分析和可视化之前,数据预处理是至关重要的一步。
数据获取与初步查看
泰坦尼克号的数据集可以从多种渠道获取,通常包含了如乘客的姓名、性别、年龄、船票等级、是否幸存等众多信息。
当我们首次拿到数据集时,需要对数据的整体结构有一个初步的认识,查看数据的行数和列数,了解每个字段的数据类型等,这可以通过一些常见的数据处理工具来实现,如Python中的pandas库。
import pandas as pd data = pd.read_csv('titanic.csv') print(data.shape) print(data.dtypes)
缺失值处理
(一)识别缺失值
泰坦尼克号数据集中存在不少缺失值。“年龄”字段可能存在缺失,这可能是由于当时记录不完全或者某些特殊原因导致的,我们可以使用如下方法来统计每个字段的缺失值数量:
print(data.isnull().sum())
(二)处理缺失值的策略
1、数值型数据(如年龄)
- 一种常见的方法是使用均值或中位数填充,对于年龄字段,可以计算所有已知年龄的均值或中位数,然后将缺失值替换为该值。
```python
median_age = data['age'].median()
data['age'].fillna(median_age, inplace = True)
```
2、类别型数据(如登船港口)
- 对于像登船港口这样的类别型数据缺失,可以使用最常见的类别来填充,首先找出最常见的登船港口类别:
图片来源于网络,如有侵权联系删除
```python
most_common_port = data['embarked'].mode()[0]
data['embarked'].fillna(most_common_port, inplace = True)
```
数据编码
许多数据挖掘和机器学习算法要求输入的数据为数值型,对于类别型数据,如性别(男、女)和船票等级(一等、二等、三等)等,需要进行编码转换。
(一)独热编码(One - Hot Encoding)
对于性别字段,我们可以使用独热编码将其转换为数值型数据,在Python中,可以使用pandas的get_dummies
函数。
gender_dummies = pd.get_dummies(data['sex'], prefix='sex') data = pd.concat([data, gender_dummies], axis = 1)
(二)有序编码
对于船票等级这样有顺序关系的类别型数据,可以进行有序编码,将一等舱编码为3,二等舱编码为2,三等舱编码为1。
ticket_class_mapping = { '1st': 3, '2nd': 2, '3rd': 1 } data['pclass'] = data['pclass'].map(ticket_class_mapping)
异常值处理
在泰坦尼克号数据集中,可能存在一些异常值,年龄可能存在一些不合理的极大或极小值,我们可以通过绘制箱线图来识别年龄的异常值。
import seaborn as sns import matplotlib.pyplot as plt sns.boxplot(data['age']) plt.show()
对于识别出的异常值,可以根据具体情况进行处理,如果是明显的错误录入,可以进行修正或者直接删除,但在处理时需要谨慎,以免丢失过多有价值的信息。
特征工程
1、创建新特征
- 可以根据乘客的姓名创建一个新的特征,如是否为已婚女性(通过姓名中的称呼来判断),这可能对分析生存概率有一定的帮助。
- 还可以创建家庭规模特征,将同行的亲属数量(如兄弟姐妹、父母子女等)相加得到一个新的特征,因为家庭规模可能与生存概率相关。
```python
图片来源于网络,如有侵权联系删除
data['family_size'] = data['sibsp']+data['parch'] + 1
```
2、特征选择
- 在经过一系列的特征创建后,可能会有很多特征,但并不是所有的特征都对分析目标(如预测生存概率)有显著贡献,我们可以使用一些特征选择的方法,如相关性分析,计算每个特征与生存结果(是否幸存)的相关性,选择相关性较高的特征进行后续的分析和可视化。
```python
correlation_matrix = data.corr()['survived'].sort_values(ascending = False)
selected_features = correlation_matrix.index[:5]
data_selected = data[selected_features]
```
数据标准化
对于一些数值型特征,如年龄和家庭规模等,如果它们的取值范围差异较大,可能会对某些分析和模型产生影响,需要对这些特征进行标准化。
在Python中,可以使用sklearn
库中的StandardScaler
来实现数据标准化。
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() numeric_features = ['age', 'family_size'] data[numeric_features] = scaler.fit_transform(data[numeric_features])
可视化准备
经过上述的数据预处理步骤,数据已经具备了进行可视化的良好条件,我们可以绘制不同性别(经过编码后的数值型表示)与生存概率之间的关系柱状图,或者绘制船票等级与生存概率之间的箱线图等。
通过对泰坦尼克号数据的预处理,我们不仅清理和转换了数据,还为后续的深入分析和可视化奠定了坚实的基础,这使得我们能够更准确地从数据中挖掘出有价值的信息,更好地理解泰坦尼克号乘客的生存情况以及背后的影响因素。
评论列表