案例:泰坦尼号数据分析
背景:
泰坦尼克号的沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震撼了国际社会,并导致了更好的船舶安全条例。
海难导致生命损失的原因之一是没有足够的救生艇给乘客和机组人员。虽然幸存下来的运气有一些因素,但一些人比其他人更有可能生存,比如妇女,儿童和上层阶级。
数据集描述
数据中的特征共有11个,它们分别是:
Survived:0代表死亡,1代表存活
Pclass:乘客所持票类,有三种值(1,2,3)
Name:乘客姓名
Sex:乘客性别
Age:乘客年龄(有缺失)
SibSp:乘客兄弟姐妹/配偶的个数(整数值)
Parch:乘客父母/孩子的个数(整数值)
Ticket:票号(字符串)
Fare:乘客所持票的价格(浮点数,0-500不等)
Cabin:乘客所在船舱(有缺失)
Embark:乘客登船港口:S、C、Q(有缺失)
各特征与存活的关系分析
读取数据并查看数据格式
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
train=pd.read_csv('train.csv')
train=pd.DataFrame(train,columns=['PassengerId','Pclass','Name','Sex','Age','SibSp','Parch','Ticket','Fare','Cabin','Embarked','Survived'])
train.head()
Pclass特征分析
利用饼图分别求出Pclass的类别(1、2、3)与人员存活之间的比例,思路是:求出Pclass为1、2、3,而且存活和死亡的人数,再进行比较,最后用饼图清晰表示出来。
Pclass1_survived_number=train.loc[(train['Pclass']==1)&(train['Survived']==1)]['Pclass'].count() #类别为1且存活的人数数量
Pclass1_unsurvived_number=train.loc[(train['Pclass']==1)&(train['Survived']==0)]['Pclass'].count() #类别为1且死亡的人数数量
Pclass2_survived_number=train.loc[(train['Pclass']==2)&(train['Survived']==1)]['Pclass'].count() #类别为2且存活的人数
Pclass2_unsurvived_number=train.loc[(train.Pclass==2)&(train.Survived==0)]['Pclass'].count()#类别为2,死亡的人数
Pclass3_survived_number=train.loc[(train['Survived']==1)&(train['Pclass']==3)]['Pclass'].count() #类别为3,存活的人数
Pclass3_unsurvived_number=train.loc[(train['Pclass']==3)&(train.Survived==0)]['Pclass'].count() #类别为3,死亡的人数
pu1=(Pclass1_unsurvived_number)/(Pclass1_unsurvived_number+Pclass1_survived_number)
ps1=(Pclass1_survived_number)/(Pclass1_unsurvived_number+Pclass1_survived_number)
pu2=(Pclass2_unsurvived_number)/(Pclass2_unsurvived_number+Pclass2_survived_number)
ps2=(Pclass2_survived_number)/(Pclass2_unsurvived_number+Pclass2_survived_number)
pu3=(Pclass3_unsurvived_number)/(Pclass3_unsurvived_number+Pclass3_survived_number)
ps3=(Pclass3_survived_number)/(Pclass3_unsurvived_number+Pclass3_survived_number)
colors=['red','green']
plt.figure(figsize=(8,2))
plt.subplot(131)
plt.pie([pu1,ps1],colors=colors,autopct='%1.1f%%',explode=[0.04,0.04],labels=['Unsurvived','Survived'])
plt.title('Pclass_1')
plt.subplot(132)
plt.pie([pu2,ps2],colors=colors,autopct="%1.1f%%",explode=[0.04,0.04],labels=['Unsurvived','Survived'])
plt.title('Pclass_2')
plt.subplot(133)
plt.pie([pu3,ps3],colors=colors,autopct='%1.1f%%',explode=[0.04,0.04],labels=['Unsurvived','Survived'])
plt.title('Pclass_3')
plt.show()
分析:从图中可以清楚地看出Pclass类别为3的死亡人数最高,高达75.8%,其次就是类别为2,其死亡率高达52.7%,死亡最少的类别为1,其死亡人数不到一半。
Name特征分析
因为存活率和名字无关,因此Name特征不做分析。
Sex特征分析
M_S=trai