泰坦尼克號生還率預(yù)測

一、導(dǎo)入數(shù)據(jù)集

import pandas as pd

import numpy as np?

import matplotlib.pyplot as plt?

from pandas import Data Frame

from pandas import Series

%matplotlib inline

df = pd.read_csv('titanic_data.csv', index_col=0)

df.head(5)

image.png

以下為Data Dictionary

PassengerId:乘客的ID

Survived:乘客是否獲救,Key:0=沒獲救,1=已獲救

Pclass:乘客船艙等級(1/2/3三個等級艙位)

Name:乘客姓名

Sex:性別

Age:年齡

SibSp:乘客在船上的兄弟姐妹/配偶數(shù)量

Parch:乘客在船上的父母/孩子數(shù)量

Ticket:船票號

Fare:船票價

Cabin:客艙號碼

Embarked:登船的港口

變量類型說明

數(shù)值變量:Age、SibSp、Parch、Fare

分類變量:Pcalss, Sex, Cabin, 和Embarked

二、提出問題和猜想

影響乘客生還率的因素可能有哪些

猜測因素包括:

年齡

性別

客艙等級

票價

家人數(shù) (因從電影了解到,婦女兒童獲救概率高,且一等艙因為靠近最高層獲救可能性更高。)

三、數(shù)據(jù)預(yù)處理

數(shù)據(jù)預(yù)處理包括:

1、查看缺失值,并對缺失值刪除或填充

2、刪除不需要的數(shù)據(jù)

3、對數(shù)據(jù)進行分組或合并

查看CSV中各列的缺失值

df

image.png

從以上所列數(shù)據(jù)可知:總共891個乘客,其中有缺失值部分的是:Age中只有714個,Cabin中只有204,而Embarked是889

填充Age中的缺失值

df['Age'].fillna(df['Age'].median(), inplace=True)

乘客名字、船票、客艙號碼和登船的港口,與生存率關(guān)系不大,可直接刪除。

df.drop(['Cabin', 'Embarked', 'Name', 'Ticket'], axis=1, inplace=True)

df.head(5)

image.png

根據(jù)分析目的,猜測家人數(shù)與被獲救可能有關(guān),因此將SibSP與Parch兩組合并成一組親屬

df['rel'] = df['SibSp'] + df['Parch']

df.head(6)

image.png

df.describe()

image.png

從以上數(shù)據(jù)結(jié)果可看出,平均的生還率是0.38,乘客平均年齡是29.69歲,最小的乘客4個月,最大的乘客年齡80歲。年齡的中位數(shù)是28歲。

四、數(shù)據(jù)分析

通過描述性分析和數(shù)據(jù)可視化分析結(jié)果,探索乘客生還的因素

單變量探索,查看船上乘客和票價的整體分布情況

%matplotlib inline?

import matplotlib.pyplot as plt

fig,ax = plt.subplots(nrows=1,ncols=2,figsize=(15,5))

df["Age"].hist(ax=ax[0])

ax[0].set_title("Hist plot of Age")

df["Fare"].hist(ax=ax[1])

ax[1].set_title("Hist plot of Fare")

image.png

乘客的年齡集中在20-40歲之間,大部分乘客的票價很低,基本在0-100之間。

單變量探索,查看船上性別的整體分布情況

Sex_count = df.Sex.value_counts()

print Sex_count

image.png

Sex_count.plot(kind='pie',autopct = '%3.1f%%');

image.png

船上絕大多數(shù)為女性,不到兩倍。

探索性別、船艙等級和生還率的關(guān)系

image.png

variable_visulization('Pclass')

image.png

乘客中,三等艙的乘客最多,一等艙和二登艙乘客相差不多。大部分乘客未獲救,同時,船艙等級越高,生還率越大。一等艙的獲救比例是最高的,三等艙人數(shù)最多,但生還率最低。

variable_visulization('Sex')

image.png

以上圖結(jié)果可知,大部分人是沒有被獲救的,且獲救的乘客中,女性遠遠大于男性,大概有三倍之多。

接下來探索,不同船艙等級、性別與生還率的關(guān)系

image.png

從圖中可以看出,不管是在什么等級的船艙,女性的生還率都是高于男性的。但無論男女,船艙等級越高,生還率越高。

探索生還的乘客年齡

創(chuàng)建新的一列,儲存乘客的年齡范圍

bins = np.arange(0, 80, 10)

df['Age_group'] = pd.cut(df['Age'], bins)

將"Age_group"分組,并計算各年齡段的生還率

survival_count_by_age_bracket = df.groupby(['Age_group'])['Survived'].count()

survival_rate_by_age_bracket = df.groupby(['Age_group'])['Survived'].mean()

print survival_rate_by_age_bracket

print survival_count_by_age_bracket

image.png

figure = plt.figure(figsize=(13,8))

plt.hist([df[df['Survived']==0]['Age']], stacked=True, color = ['g'],? ? ? ? bins =30,label = ['Survived'])

plt.xlabel('Age')

plt.ylabel('Number of passengers')

plt.legend()

plt.title("Age of plot")

image.png

從數(shù)據(jù)中可知,0-10歲的生還率是最高的,而圖中可知,大部分的被獲救的乘客介于0-30歲之間。

從圖中可知,票價低的乘客罹難可能性更高。

探索攜帶了親屬的乘客,與生還率的關(guān)系

rel_count = df.rel.value_counts()

print rel_count

image.png

survival_rate_by_sibsp_parch = df.groupby('rel')['Survived'].mean()

print survival_rate_by_sibsp_parch

image.png

survival_rate_by_sibsp_parch.plot(kind='bar')

plt.title('Survival by rel', fontsize=16)?

plt.xlabel('rel')

plt.ylabel('Survial Rate')

plt.ylim(0, 1)

image.png

雖然從圖中可知,親屬越多,生還的可能性越大。

探索年齡、票價和生還率的關(guān)系

plt.figure(figsize=(13,8))

ax = plt.subplot()

ax.scatter(df[df['Survived']==1]['Age'],df[df['Survived']==1]['Fare'],c='green',s=40)

ax.scatter(df[df['Survived']==0]['Age'],df[df['Survived']==0]['Fare'],c='red',s=40)

ax.set_xlabel('Age')

ax.set_ylabel('Fare')

ax.legend(('survived','dead'),scatterpoints=1,loc='upper right',fontsize=15,)

image.png

罹難乘客的年齡集中在15-50歲之間的低票價乘客

總結(jié)

通過數(shù)據(jù)可視化結(jié)果,對初期提出的猜測做出以下結(jié)論:

1、女性生還率遠遠高于男性,大約是3倍左右。

2、0-10歲的幼兒生還率遠遠大于成年人,15-50歲的低票價乘客罹難最多。

3、票價越高,生還率越高??团摰燃壴礁?,生還率越高。

4、親屬越多,生還的可能性越大。

說明:通過使用python對泰坦尼克號的生還數(shù)據(jù)進行分析,初步得出了一些結(jié)論,但這些結(jié)論僅通過可視化和描述性統(tǒng)計得出,缺乏進一步深入的分析,結(jié)論的可靠性有待驗證。 另外,由于數(shù)據(jù)中有缺失值,對分析造成了負面影響。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 探索數(shù)據(jù)集-泰坦尼克號數(shù)據(jù) 一、讀取數(shù)據(jù) import pandas as pdimport numpy as n...
    楊小彤閱讀 896評論 0 1
  • git init 初始化git 管理目錄 安裝與配置 安裝命令如下:sudo apt-get install g...
    太陽出來我爬山坡閱讀 182評論 0 0
  • 說明: 1.選擇老板電器的油煙機行業(yè)進?分析。 2.以下數(shù)據(jù)使?用的單位:億元。 3.分析報告數(shù)據(jù)來源于:百度、W...
    簡單Yolanda閱讀 4,340評論 1 0
  • 半夜,精神尤為亢奮,仿佛不知疲倦。 破曉,曙光初現(xiàn),自己卻困意滿滿,將自己拘泥于被窩之中。 一天一頓,...
    離沉閱讀 71評論 0 0
  • 原創(chuàng)|發(fā)憤的草莓 請問,21世紀的人,身上多出一個什么器官? 答案你知道!那是智能手機。 不論男女老少,閑下來時抬...
    發(fā)憤的草莓閱讀 1,203評論 0 1

友情鏈接更多精彩內(nèi)容