您的位置:首頁>正文

研究|泰坦尼克號倖存率

代碼區域

import pandas as pd

import numpy as np

import matplotlib

import matplotlib.pyplot as plt

%matplotlib inline#為能夠jupyter線上使用matplotlib

df=pd.read_csv('C:\Users\dell\Desktop\titanic_data.csv')

df.head(5)#先顯示出前5行, 觀察有哪些資料

數據概況:

PassengerId:乘客序號;

Survived:最終是否存活(1表示存活, 0表示未存活);

Pclass:艙位, 1是頭等艙,

3是最低等;

Name:乘客姓名;

Sex:性別;

Age:年齡;

SibSp:一同上船的兄弟姐妹或配偶;

Parch:一同上船的父母或子女;

Ticket:船票信息;

Fare:乘客票價, 決定了Pclass的等級;

Cabin:客艙編號, 不同的編號對應不同的位置;

Embarked:上船地點, 主要是S(南安普頓)、C(瑟堡)、Q(皇后鎮)。

欲想探討的問題:

存活率與哪些因素有關? 猜想影響因素有:Pclass、Sex、Age、SibSp、Parch、Ticket、Cabin、Embarked。

01|泰坦尼克號整體情況:

通過下面代碼可以看出泰坦尼克號整體的倖存率約為39%。

代碼區域

survived_rate=float(df['Survived'].sum())/df['Survived'].count()#加float是為了讓小數結果顯示出來

survived_rate

out:0.38383838

02|倖存率與Pclass的關係:

可以看出兩者有強烈的相關關係, Pclass等級越高(1最高), 倖存率越高。

代碼區域

Pclass_survived_rate=(df.groupby(['Pclass']).sum()/df.groupby(['Pclass']).count())['Survived']

Pclass_survived_rate.plot(kind='bar')#kind='bar'表示垂直柱狀圖、kind=‘barh’表示水準柱狀圖

03|倖存率與Sex的關係:

female的倖存率是male的3倍還要多。

代碼區域

Sex_survived_rate=(df.groupby(['Sex']).sum()/df.groupby(['Sex']).count())['Survived']

Sex_survived_rate.plot(kind='bar')

04|倖存率與Age的關係:

通過折線圖看出倖存率與Age沒有明確的關係。 0-10歲的倖存率要明顯高於其他年齡段。

代碼區域

Sex_survived_rate=(df.groupby(['Age']).sum()/df.groupby(['Age']).count())['Survived']

Sex_survived_rate.plot()

代碼區域

age_train_p=df[~np.isnan(df['Age'])] #去除年齡資料中的NaN

ages=np.arange(0,80,10) #0~80歲, 每10歲一段(年齡最大80歲)

age_cut=pd.cut(age_train_p.Age,ages)

age_cut_grouped=age_train_p.groupby(age_cut)

age_Survival_Rate=(age_cut_grouped.sum()/age_cut_grouped.count())['Survived'] #計算每年齡段的倖存率

age_Survival_Rate.plot(kind='bar')

05|倖存率與SibSp&Parch的關係:

通過柱狀圖可以看出, 當同行1-2個親人朋友時的倖存率更高。 (這裡將SibSp與Parch統一處理)

代碼區域

SibSp_Parch_survived_rate=((df.groupby(['SibSp']).sum()+df.groupby(['Parch']).sum())

/(df.groupby(['SibSp']).count()+df.groupby(['Parch']).count()))['Survived']

SibSp_Parch_survived_rate.plot(kind='bar')

06|倖存率與Cabin的關係:

根據折線圖看出沒有明確的相關關係, 再加上缺失資料過多687/891, 所以倖存率對Cabin可以暫且不計入考慮。

代碼區域

max_survived_rate=(df.groupby(['Cabin']).sum()/df.groupby(['Cabin']).count())['Survived']

max_survived_rate.plot()

print df['Cabin'].count()#除缺失值以外的資料個數

df['Cabin'].fillna(0).count()#所有資料個數

07|倖存率與Embarked的關係:

通過直條圖可以看出C、Q、S三地的倖存率依次下降。

代碼區域

max_survived_rate=(df.groupby(['Embarked']).sum()/df.groupby(['Embarked']).count())['Survived']

max_survived_rate.plot(kind='bar')

綜上所述:

1、泰坦尼克號整體的倖存率約為39%。

2、存活率與Pclass的關係:Pclass等級越高(1最高),存活率越高。多掙錢,坐頭等艙可以提高倖存率。

3、存活率與Sex的關係:female的存活率是male的3倍還要多。女性的天生優勢。

4、存活率與Age的關係:沒有明確的關係,0-10歲的存活率明顯高於其他年齡段。

5、存活率與SibSp&Parch的關係:當同行1-2個親人朋友時的存活率更高。出去玩耍結1-2個伴可以提高倖存率。

6、存活率與Cabin的關係:沒有明確的相關關係,再加上缺失資料過多687/891,所以存活率對Cabin可以暫且不計入考慮。

7、存活率與Embarked的關係:C、Q、S三地的存活率依次下降,不過應該和登陸地本身是沒啥關係的,登陸地可能最終體現在性別、艙位等級等方面。

End.

作者:張俊紅(中國統計網特邀認證作者)

http://www.itongji.cn

07|倖存率與Embarked的關係:

通過直條圖可以看出C、Q、S三地的倖存率依次下降。

代碼區域

max_survived_rate=(df.groupby(['Embarked']).sum()/df.groupby(['Embarked']).count())['Survived']

max_survived_rate.plot(kind='bar')

綜上所述:

1、泰坦尼克號整體的倖存率約為39%。

2、存活率與Pclass的關係:Pclass等級越高(1最高),存活率越高。多掙錢,坐頭等艙可以提高倖存率。

3、存活率與Sex的關係:female的存活率是male的3倍還要多。女性的天生優勢。

4、存活率與Age的關係:沒有明確的關係,0-10歲的存活率明顯高於其他年齡段。

5、存活率與SibSp&Parch的關係:當同行1-2個親人朋友時的存活率更高。出去玩耍結1-2個伴可以提高倖存率。

6、存活率與Cabin的關係:沒有明確的相關關係,再加上缺失資料過多687/891,所以存活率對Cabin可以暫且不計入考慮。

7、存活率與Embarked的關係:C、Q、S三地的存活率依次下降,不過應該和登陸地本身是沒啥關係的,登陸地可能最終體現在性別、艙位等級等方面。

End.

作者:張俊紅(中國統計網特邀認證作者)

http://www.itongji.cn

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示