本文目录导读:
《泰坦尼克号数据集分析:用Python揭开历史悲剧背后的真相》
泰坦尼克号的沉没是20世纪最著名的海难之一,通过对泰坦尼克号数据集的分析,我们可以深入了解这场灾难中的各种因素,如乘客的社会经济地位、性别、年龄等与生存几率之间的关系,Python作为一种强大的数据分析工具,能够帮助我们高效地处理和解读这些数据。
数据获取与初步探索
1、数据获取
图片来源于网络,如有侵权联系删除
- 泰坦尼克号数据集可以从很多公开数据源获取,例如Kaggle网站,该数据集通常包含多个特征列,如乘客ID、性别(Sex)、年龄(Age)、客舱等级(Pclass)、是否幸存(Survived)等。
2、数据导入与查看
- 在Python中,我们可以使用pandas库来导入数据。
import pandas as pd data = pd.read_csv('titanic.csv') print(data.head())
- 这将显示数据集的前几行,让我们对数据的结构和内容有一个初步的了解,我们可以看到不同特征的数据类型,'Survived'列可能是整数类型(0表示未幸存,1表示幸存),'Age'列是浮点数类型等。
3、数据基本信息
- 通过data.info()
可以获取数据的详细信息,包括每列的非空值数量和数据类型,这有助于我们发现数据中是否存在缺失值以及需要进行何种数据类型转换,如果发现'Age'列有大量缺失值,我们就需要考虑如何处理这些缺失值,是填充还是删除包含缺失值的行。
数据清洗
1、处理缺失值
- 对于数值型数据如'Age',我们可以采用均值或中位数填充的方法。
age_mean = data['Age'].mean() data['Age'].fillna(age_mean, inplace = True)
- 对于分类数据,如'Embarked'列(表示乘客登船的港口),如果有缺失值,我们可以根据数据的分布选择最常见的值进行填充。
2、数据标准化(可选)
- 如果我们在后续分析中要使用某些机器学习算法,可能需要对数值型数据进行标准化,使用Scikit - learn库中的StandardScaler
类对'Age'和'Fare'(船票价格)等列进行标准化。
图片来源于网络,如有侵权联系删除
数据分析
1、性别与生存几率
- 我们可以使用groupby
方法来统计不同性别乘客的幸存比例:
gender_survival = data.groupby('Sex')['Survived'].mean() print(gender_survival)
- 结果可能显示女性的幸存比例远高于男性,这反映了当时在紧急情况下遵循的“妇女儿童优先”的救援原则。
2、客舱等级与生存几率
- 同样使用groupby
方法:
class_survival = data.groupby('Pclass')['Survived'].mean() print(class_survival)
- 通常会发现客舱等级较高(如一等舱)的乘客幸存比例相对较高,这可能与他们的登船位置、救援资源分配等因素有关。
3、年龄与生存几率
- 我们可以将年龄进行分组,例如划分为儿童(0 - 12岁)、青少年(13 - 19岁)、成年人(20 - 60岁)和老年人(60岁以上),然后分析不同年龄组的幸存比例。
def age_group(age): if age <= 12: return 'Child' elif age <= 19: return 'Teenager' elif age <= 60: return 'Adult' else: return 'Elderly' data['Age_Group'] = data['Age'].apply(age_group) age_group_survival = data.groupby('Age_Group')['Survived'].mean() print(age_group_survival)
4、多因素分析
- 使用交叉表(crosstab
)或pivot_table
等方法来分析多个因素对生存几率的综合影响,分析不同性别和客舱等级组合下的幸存比例:
cross_table = pd.crosstab(data['Sex'], data['Pclass'], values = data['Survived'], aggfunc='mean') print(cross_table)
数据可视化
1、柱状图展示性别与生存几率
图片来源于网络,如有侵权联系删除
- 使用matplotlib或seaborn库来绘制柱状图:
import matplotlib.pyplot as plt import seaborn as sns sns.barplot(x = gender_survival.index, y = gender_survival.values) plt.xlabel('Sex') plt.ylabel('Survival Rate') plt.title('Survival Rate by Sex') plt.show()
2、箱线图展示客舱等级与船票价格和生存几率的关系
- 我们可以绘制箱线图来同时展示客舱等级与船票价格('Fare')和生存几率之间的关系:
fig, ax = plt.subplots(1, 2, figsize=(10, 5)) sns.boxplot(x = 'Pclass', y = 'Fare', data = data, ax = ax[0]) sns.boxplot(x = 'Pclass', y = 'Survived', data = data, ax = ax[1]) ax[0].set_title('Fare by Pclass') ax[1].set_title('Survival Rate by Pclass') plt.show()
通过对泰坦尼克号数据集的分析,我们可以得出以下结论:
1、性别对生存几率有显著影响,女性的幸存比例远高于男性。
2、客舱等级也是一个重要因素,高等级客舱的乘客有更高的幸存机会。
3、年龄在一定程度上影响生存几率,儿童相对有较高的幸存比例。
4、这些因素之间也存在相互作用,例如不同性别在不同客舱等级中的幸存情况有所不同。
这种分析不仅让我们对泰坦尼克号这场历史悲剧有更深入的了解,也展示了Python在数据分析中的强大能力,在实际应用中,类似的分析方法可以应用于其他灾难事件或社会现象的研究中,为决策提供有价值的参考。
评论列表