優達學城探索數據集項目
7 人贊了文章
項目概述
在本項目中,你將分析一個數據集,然後傳達你的發現。你將使用 Python 庫 NumPy、Pandas 和 Matplotlib 來使你的分析工作更加輕鬆。
為何要進行此項目?
此項目將向你介紹數據分析過程,以及所有工作的相互配合。後期的納米學位將重點關注數據分析過程的各個環節。
你將使用 Python 庫 NumPy、Pandas 和 Matplotlib,這些庫使你能夠更加輕鬆地在 Python 中編寫數據分析代碼!不僅如此,它們也是僱主們青睞的技能!
目錄
1、提出問題 1.1 事件背景 1.2 提出問題
2、數據整理 2.1、導入數據&查看基本信息 2.2、處理缺失值
3、數據探索 3.1 生存率基本情況 3.2 單變數探索 3.3 多變數探索
4、作出結論
5、參考資料
1、提出問題
1.1 事件背景
泰坦尼克號是一艘奧林匹克級郵輪,1912年4月15日,載著1316名乘客和891名船員的泰坦尼克號與冰山相撞,在北大西洋沉沒,該海難也被認為是20世紀人間十大災難之一。 本文旨在穿越百年,探索在生死悠關時刻,人們做出了怎樣的抉擇,將生還的機會優先給予了哪些人? 本文數據來自於官方公布的真實數據,數據來源於kaggle,網路地址:https://www.kaggle.com/c/titanic/data
1.2 提出問題
根據數據,初步思考,提出以下問題:
(1)危機發生時,女士優先的紳士風度有發揮嗎?
(2)大難當頭時,孩子獲得了更多的保護嗎?
(3)性命悠關時,富有人群是否獲得了更多的生還機會?
2、數據整理
2.1、導入數據&查看基本信息
從以上信息可發現: 該數據集有12個欄位,PassengerId:乘客編號,Survived:乘客是否存活,Pclass:乘客所在的船艙等級;Name:乘客姓名,Sex:乘客性別,Age:乘客年齡,SibSp:乘客的兄弟姐妹和配偶數量,Parch:乘客的父母與子女數量,Ticket:票的編號,Fare:票價,Cabin:座位號,Embarked:乘客登船碼頭。
共有891行數據,且年齡Age、座位號Cabin、乘客登船碼頭Embarked,有缺失值,要考慮缺失值處理的問題
2.2、處理缺失值
缺失值處理中,我們一般會刪除缺失值。pandas模塊中,提供了將包含NaN值的行刪除的方法dropna(),但其實處理缺失值最好的思路是「用最接近的數據替換它」。對於數值型數據,可用該列的數據的均值或者中位數進行替換,對於分類型數據,可利用該列數據的出現頻數最多的數據(眾數)來填充。 這兩種數據的補齊方法,其基本的出發點都是一樣的,以最大概率可能的取值來補充缺失的屬性值,只是在具體方法上有一點不同。與其他方法相比,它是用現存數據的多數信息來推測缺失值。實在處理不了的空值,可以暫時先放著,不必著急刪除。因為在後續的情況可能會出現:後續運算可以跳過該空值進行。
在前面的數據預覽中,知道有三列數據有空值:年齡Age缺失177條、座位號Cabin缺失687條、乘客登船碼頭Embarked缺失2條。其中Cabin這列數據,缺失值太多,在此次分析中沒有意義(因為我沒有想了解座位號對生成率的影響,而且我也認為這兩種關係不大),所以我可以先不管它,真正需要我處理的就是Age(數值型數據),Embarked(分類型數據)
2.2.1 處理數值型數據Age缺失值
2.2.2 處理分類型數據Embarked缺失值
3、數據探索
3.1 生存率基本情況
3.2 單變數探索
3.2.1 性別與生存率--危機關頭,女士優先嗎?
3.2.2 年齡與生存率--大難當頭,老人、小孩、成年人的生還情況如何?
從以上數據可以發現,孩子(0-10歲)人數64人,佔總人數7%,但是生存率(55%)卻是所有年齡段最高,且明顯高於其他年齡段;
說明大難當頭時,人們更傾向於讓未成年人先逃生,畢竟他們是家庭和國家的未來
3.2.3 船艙等級與生存率---有錢人會更容易獲得逃生機會嗎?
通過以上數據發現
一等艙總人數184人,佔總人數24%,生還136人,生存率63%;三等艙總人數491人,佔總人數55%,生還119人,生存率僅24%;
隨著船艙等級降低,生存率明顯降低,確實說明在性命攸關之時,社會地位高的有錢人,可能獲得了更多生還機會。
3.3 多變數探索
3.3.1 性別、船艙等級與生存率關係---女士與富人,誰更優先?
3.2.2 年齡、性別與生存率關係
3.3.3 年齡、艙位等級與生存率
總體上看,隨著船艙等級降低,各年齡段生存率都在降低; 但是異常情況是一等艙孩子生存率小於二等艙孩子生存率, 還有就是60-70年齡段二三等艙比一等艙,故有必要查看一下人數統計情況。 其次,各個船艙等級孩子的生存率都比較高,二三等艙孩子的生存率高過一等艙部分其它年齡段富人。
4、作出結論
4.1初步結論
事件中,整體的生存率只有38%,性別、年齡、船艙等級對不同群體生存率有較大影響,初步結論是:當危機發生時,女士優先、孩子優先、富人整體上優先,但是也讓位於女士和年輕人
(1)性別-女士優先
整體上看,女士生存率高達74%,而男士只有19%;
算上財富因素,買著低價票的三等艙的女士生存率(50%)都比一等艙的男士生存率(37%)高;
算上年齡因素,女士各年齡段的生存率都非常高(61%-100%);
這些都說明了當時女士優先的紳士風度讓女性有了超高的生存率。
(2)孩子(0-10歲)-孩子優先
整體上看,孩子(0-10歲)生存率(59%)最高且明顯高於其他年齡段生存率;
算上性別因素,雖然男士整體生存率只有19%,但是孩子(0-10歲)男士的生存率高達58%,且遠遠高出其他年齡階段男士生存率,即男士群體裡面生存下來的大多數是孩子;
算上財富因素,各個船艙等級孩子的生存率都比較高,二三等艙孩子的生存率高過一等艙部分其它年齡段富人
(3)富人-整體上優先,但是也讓位於女士和年輕人
整體上看,一等艙生存率63%,二等艙生存率47%,三等艙生存率24%,說明在性命攸關之時,社會地位高的有錢人,確實獲得了更多生還機會
算上性別因素,買著低價票的三等艙的女士生存率(50%)都比一等艙的男士生存率(37%)高,說明富人也把生還機會讓給了女士
算上年齡因素,各個船艙等級孩子的生存率都比較高,二三等艙孩子的生存率高過一等艙部分其它年齡段富人,說明部分富人也把生還機會讓給了孩子
4.2 限制因素
以下因素可能會對結論有所限制
(1)數據因素---船上共有2207名乘客和船員,但是樣本量只有891人,一來數據不全可能會限制結論,二來樣本是否隨機抽取也會影響結論; 三來Age變數有177條缺失值,我是通過中位數填補對缺失值做了處理,這也會引入噪音,影響結論。
(2)分析因素---由於我提出的問題就傾向於女士優先,孩子優先,富人優先,可能存在先入為主的觀念,引導我得出這樣的結論。
5、參考資料
#Python數據處理:Pandas模塊的 12 種實用技巧 http://python.jobbole.com/85742/
#使用python中的matplotlib進行繪圖分析數據 https://www.2cto.com/kf/201407/317115.html
#利用python/pandas/numpy做數據分析(三)-透視表pivot_table http://blog.csdn.net/youngbit007/article/details/53039390
#Python seaborn matplotlib 對數據進行圖表分析 http://blog.csdn.net/qq_16234613/article/details/76219234
#python使用matplotlib:subplot繪製多個子圖 http://blog.csdn.net/gatieme/article/details/61416645
#python 數據分析超簡單入門 : 項目實踐篇 https://cloud.tencent.com/community/article/694296
#Titanic數據分析報告(python) http://www.mamicode.com/info-detail-1336633.html
#數據分析機器學習案例 http://ai.51cto.com/art/201704/536795.htm
#python數據分析實例 http://www.pmcaff.com/entry?id=1013168772722816
#凄美故事 https://zhuanlan.zhihu.com/p/27672545
#python數據分析實戰之統計 http://blog.51cto.com/youerning/1711371
#探索數據集——Titanic http://blog.csdn.net/PatrickZheng/article/details/73843594
推薦閱讀:
※用戶消費信息分析案例練習
※【數據點亮生活】第一站:獲取數據
※一名數據科學家的日常
※如何利用大數據發現非法傳銷網路?
※SQL的集合運算概念
TAG:數據分析 |