Python 数据分析微专业课程--项目实战14 泰坦尼克号获救问题

通过分析泰坦尼克号数据,发现乘客存活率约为38.38%,女性存活率74.20%,远高于男性18.89%。救援倾向于女士、儿童和老人。20-30岁男性遇难最多。家庭成员1-3人和有1-2个小孩的乘客存活率较高。票价高与存活率正相关,3等舱票价大多不超过20。此项目展示了数据分析在预测存活率上的应用。
摘要由CSDN通过智能技术生成

1.项目说明

对泰坦尼克号乘客数据进行分析,挖掘获救乘客和遇难乘客的数据特点以及与其他因素的相关性

2.项目具体要求

1、整体来看,存活比例如何?
要求:
① 读取已知生存数据train.csv
② 查看已知存活数据中,存活比例如何?

2、结合性别和年龄数据,分析幸存下来的人是哪些人?
要求:
① 年龄数据的分布情况
② 男性和女性存活情况
③ 老人和小孩存活情况

3、结合 SibSp、Parch字段,研究亲人多少与存活的关系
要求:
① 有无兄弟姐妹/父母子女和存活与否的关系
② 亲戚多少与存活与否的关系

4、结合票的费用情况,研究票价和存活与否的关系
要求:
① 票价分布和存活与否的关系
② 比较研究生还者和未生还者的票价情况

5、利用KNN分类模型,对结果进行预测
要求:
① 模型训练字段:'Survived','Pclass','Sex','Age','Fare','Family_Size'
② 模型预测test.csv样本数据的生还情况 

3.实现思路:

1.先计算整体的存活率,查看男女的存活率有什么差异,然后深入分析男性和女性的不同年龄段的存活人数和占比,
来分析性别和年龄和存活率有什么联系。通过分析不同等级舱和年龄存活率,来分析等级舱和年龄和存活率的关系。
单独分析不同年龄存活率的分布来查看老人和儿童存活率是怎么样。

2.基础数据中有乘客小孩即家庭成员的数据,因此可以使用饼图来直观展示有小孩和没有小孩乘客的存活率有何差异,
有家人的乘客和没有家人的乘客存活率有和差异。如果有明显差异,可以深入分析小孩和家庭成员的数量对存活率是否有联系。

3.分析票价和存活是否有关可以先分析所有乘客的票价分布情况,以及不同等级舱的票价分布情况,然后通过分析幸存者和
遇难者的票价的平均值即标准差来分析票价与存活率的联系。

4.通过已有的乘客的数据来预测乘客是否可以生还,这里可使用KNN分类模型来对已有数据进行机器学习,根据以上分析我们可以
与生还有关的一些数据,可以用这些数据进行学习,生成预测模型来对测试数据中的乘客的生还情况进行预测

4.实现过程:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
import time
# 导入时间模块

sns.set_style('darkgrid')

import warnings
warnings.filterwarnings('ignore') 
# 不发出警告

os.chdir(r'D:\IT\python数据分析师\项目15\项目15泰坦尼克号获救问题')

#1、整体来看,存活比例如何?
#要求:
#① 读取已知生存数据train.csv
#② 查看已知存活数据中,存活比例如何?

#读取数据
train_data=pd.read_csv('train.csv')
test_data=pd.read_csv('test.csv')

sns.set()
sns.set_style("ticks")
plt.axis('equal')
train_data['Survived'].value_counts().plot.pie(autopct = '%.2f%%')
print('存活比例为38.38%')
'''
2、结合性别和年龄数据,分析幸存下来的人是哪些人?
要求:
① 年龄数据的分布情况
② 男性和女性存活情况
③ 老人和小孩存活情况
'''
#筛选年龄和性别数据,并去掉空值
age_data = train_data[['Survived','Age','Sex']].dropna()

#绘制年龄分布直方图
plt.figure(figsize=(12,5))
plt.subplot(121)
age_data['Age'].hist(bins=70,color = 'gray',edgecolor = 'white')
plt.xlim([0,90])
plt.xlabel('Age')
plt.ylabel('Num')

#绘制年龄分布箱型图
plt.subplot(122)
age_data.boxplot(column='Age',showfliers=False)

plt.savefig('age_hist_box.png')
age_data['Age'].describe()
print('总体年龄分布: 去掉缺失值后样本有714,平均年龄约为30岁,标准差14岁,最小年龄0.42,最大年龄80.')

这里写图片描述

#筛选性别数据
sex_count = train_data[['Survived','Sex']]
#根据性别分组求均值,即不同性别的存活率
sex_sur = sex_count.groupby('Sex').mean().reset_index() 

#绘制男性和女性的生存率柱状图
sex_sur.plot(kind = 'bar',x = 'Sex',y = 'Survived',color = 'blue',alpha = 0.7,label = 'Survived',figsize = (8,6))
plt.grid(linestyle = '--')

plt.savefig('sex_survived.png')
print(sex_sur)
pr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值