這是一個很經典的案例,很多博主都寫過,對,就是它:泰坦尼克號生存率的分析,它是kaggle上的一道題,通過船上乘客的信息分析和建模,預測哪些乘客得以生還。
我們就非常粗暴地拿這個數據集做一個簡單的分析好了。
使用工具:Excel(對,就是這么簡單粗暴)
一、明確目的
1912年泰坦尼克號撞上冰山沉沒,船上2224名乘客和機組人員中有1502人遇難,幸存下來的人是出于運氣還是存在一定的規律?這是我們比較關心的,所以就要提出問題:
那些人士生還的可能性大?
其次了解數據,數據集總共有以下的字段,其中name、sex、cabin、embarked、ticket是字符串類型,pclass和survived雖然是數值型,但其含義是標簽,我們分別從艙位、乘客、船票和地域的維度出發來分析。


二、數據處理
通過查看,發現Age、fare、embarked、cabin字段都是有缺失的,下面我們一個一個來看。
1、age缺失值處理
篩選age一列為空的有263條數據,缺失率為20%,可以全部填充為年齡的均值或眾數,也可以進一步地分析,發現年齡缺失的數據里三等艙的最多,占總缺失值的79%,而三等艙里的未生還的男性占比最多,因此也可以用三等艙年齡的平均值來填充。


這里為了保持數據的真實性,就不做填充處理了。
2、fare缺失值處理
篩選發現fare(票價)只缺失了一個值,我們把它找出來,發現可以用同類型的均值填充掉。


因此我們篩選三等艙、年齡大于60歲的,登船港口為S的男性的均值票價7來填充這個缺失值。


3、embarked缺失值處理
embarked登船港口字段也有2個缺失值,篩選出來看下。


進一步觀察到,這兩個旅客都是單獨出行,沒有家人(從sibsp和parch列均為0得知),延續對fare缺失值處理的思路,尋找同類型的進行填充。對第一個旅客,篩選出頭等艙的年齡在35~40歲的女性中,港口最多的值填充進去,結果是S。


同樣的方法,對第二個旅客,篩選頭等艙年齡在60~65歲的女性中,登陸港口最多的值,結果也為S。


4、cabin缺失值處理
對于cabin(客艙)字段缺失值達到了77%,缺失太多了,就不做填充處理了,直接保留或刪除,這里先保留著吧。


三、數據分析
1、艙位維度
pclass對艙位和生還情況分析,插入數據透視表


生還的人里,頭等艙的占比達到了40%。


對每個艙位的生存死亡情況做百分比堆積柱形圖,可以看到,頭等艙生還的人數占比最多,達到61.92%,三等艙的生還人數占比最少,僅25.33%,所以還是那句老話,錢雖然不是萬能的,但沒錢@#%&^…


carbin對carbin(客艙號)做透視,可以看到有295個唯一值,基本上是一個客艙只住一個人。


但是也發現了有1個客艙對應2個人以上的情況,進一步地把艙位拉進去對比一下,發現三等艙的數值很少,說明carbin缺失值大部分是三等艙缺失的,意思是三等艙的人沒有客艙?大通鋪?這個有待進一步查證。


另外發現三等艙有客艙的都是E/F/G開頭的客艙號,而頭等艙A/B/C就較多,猜測客艙號是隨著艙位的降低按字母升序排列的。


2、乘客維度
namename姓名列沒有什么有價值的信息,不過可以進一步思考的是,姓名里其實是對應了頭銜的,比如Mr是已婚男士,Mrs是已婚女士等,但是這里就先刪除了。
sex對性別和生還情況進行分析


生還的人中女性占比67.8%,遠高于男性的32.2%。


女性生還人數占女性總數的72.75%,遠遠大于男性生還人數占男性總數的19.10%。




性別&艙位可以順便看一下艙位和性別的關系,因為男性人口基數大,所以不管是哪個艙位,男性人數都是多于女性的,同理,各個艙位都是女性獲救的人數最多。


但是呢,頭等艙女性的生還比例為97%,遠高于其他兩個艙位,且三等艙女性的生還比例只有49%。


age對年齡和生還情況進行分析,這里因為年齡有缺失,僅對有數值的進行分析。
首先對年齡做一個簡單的描述統計,用【數據分析】里的【描述統計】功能,可以看到年齡最大值為80歲,最小值為0.17歲,平均值為29.88歲,年齡中位數為28歲,眾數為24歲。


進一步地,可以觀察一下年齡的分布情況,做直方圖,5歲為一組,可以看到,乘客的年齡主要集中在15-30歲,其中20-25歲的年輕人最多。


了解了年齡大致的分布后,就要來看特定人群的生還情況了,我們將年齡分為:
- 少年(0~15歲)
- 青年(15~40歲)
- 中年(41~65歲)
- 老年(66歲以上)
先做一個分組的表,用vlookup的模糊匹配實現分組


在age旁新建一列age分組的輔助列,輸入公式
=VLOOKUP(E2,Sheet2!$B$18:$C$21,2,1)
Sheet2!18:21這個區域就是上圖預先設置好的分組區域。


再對age分組和survived進行透視


可以看到生還的人中青年、少年的占比最多,老年占比最少。


對各年齡段分組的死亡、生存情況做百分比堆積柱形圖,得到結果,少年獲救的人數比例最高。


sibsp對sibsp字段(兄弟姐妹妹/配偶的個數)分析,透視后可以看到標簽為0,也就是說沒有親戚的人是船上乘客的大多數。


同樣因為基數大的緣故,生存下來的人中,親戚數為0的占比最多達到了61.8%。


對各標簽做百分比堆積柱形圖,這才是比較有意義的結果,可以看到,有1個親戚數的人群獲救的比例最高。


parch對parch字段分析(父母/小孩個數),同樣可以看到,沒有父母/小孩的人數是船上總人數的76%,同樣,這部分人群獲救的數量也最多。




做百分比堆積柱形圖,可以看到有3個父母/小孩的人群獲救的比例最大,達到了62.5%。


3、船票維度
fare對Fare(票價)字段分析,首先比較關注的是票價和艙位是否存在相關性,正常的邏輯是艙位越高,票價越高,這里算出pclass和fare的相關系數是-0.56,還是比較相關。


還記得上面我們用vlookup的模糊匹配分組,還可以直接用數據透視表分組。透視以后組合,選擇50步長一組,可以再對票價和艙位透視看看,看到100以上的高票價全都是頭等艙,二等艙和三等艙的票價大部分為0~50。




性別&票價女性的票價均價要高于男性


性別&艙位&票價頭等艙的均價遠高于其他兩個艙,每個艙女性的均價都要高于男性,其中票價的最大值512出自頭等艙的女性。另外一個比較有意思的現象是,票價為0的居然都是男性。


都寫到這兒了,可以再引申出一個問題,票價到底和什么有關?性別?登陸港口?艙位?客艙?有興趣的小伙伴可以自己再深入探討一下,這里我們就不探索下去了。
接下來,50一組看一下fare的分布情況,可以看到票價為0~50的占了船上乘客的82%。


同時存活數量最多的還是0~50票價的人群,因為它的基數本身就很大。


從各票價分組的角度來看,做百分比堆積柱形圖,可以看到,500-550票價的人群存活比例為100%,而0-50票價的存活比例只有32%。


ticketticket字段是船票信息/代號,沒有特別大的分析意義,這里也就直接刪除了。
4、地域維度
embarked對embarked(登船港口)字段分析,透視后發現S港口登船的人數最多,從堆積柱形圖中可以看到,C扣登船的生成比例最高。




四、生還率同什么有關
生還率同什么相關?這個是我們最關心的,這個問題其實就是survived字段同其他字段的相關系數。
sex列是字符型數據,要映射成數值,我們添加一列命名為性別的輔助列,male為1,female為0.


再添加一列f_num字段,是sibsp和parch的和,意思是家庭成員數。


embarked字段分解為3個輔助列,港口-S,港口-C,港口-Q,同時輸入公式:
=IF(N2="S",1,0)
如果embarked這個字段是S,那么港口-S列為1,港口-C、港口-Q為0,以此類推。


同理對艙位pclass也做同樣的處理


用【數據分析】里的【相關系數】功能,可以看到每個字段的相關系數


降序排列一下,就可以看出生還率同什么相關了


所以回到我們最初的問題:
哪些人生還的可能性大?
總結一下:
- 雖然三等艙的人數最多(54%),但頭等艙生還的比例最高(62%)
- 雖然男性的人數(64%)多于女性,但女性的生還率(72%)遠高于男性(19%)
- 頭等艙女性的生還比例(97%)遠高于三等艙女性的生還比例(49%)
- 15-40歲的青年人數最多(53%),生還率最高的是0~15歲的少年(56%)
- 親戚的個數為0的人數最多(68%),為1的生還率最高(51%)
- 父母/孩子個數為0的人數最多(76%),為3的生還率最高(63%)
- 票價在0-50范圍內的人數最多(82%),但500~550范圍內票價的人生還率為100%
- S港口登船的人數最多(70%),但是C港口生還率最高(56%)
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。