泰坦尼克号数据探索

本文旨在探索泰坦尼克号乘客的生存率的影响因素,全文分为三大部分:

一、数据概况;

二、数据探索;

三、结论;

一、数据概况;

# 引入必要的库
import numpy  as  np
import pandas  as  pd
import matplotlib.pyplot  as  plt
import seaborn  as  sns

%pylab inline

# 导入csv文件的数据,并查看
titanic_df = pd.read_csv('titanic-data.csv')
titanic_df.head()
Populating the interactive namespace from numpy and matplotlib
5.png
# 查看数据的基本信息
titanic_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
# 先简单看下数据的基本统计学信息;
titanic_df.describe()
6.png
titanic_df.describe(include=['O'])
7.png

可以找出几个有用的信息:

  1. 乘客平均的生存率为0.38;
  2. 大部分数据有891个,较为齐全;
  3. 年龄 和 登船港口 信息缺失,如需研究需要补齐;

二、数据探索

有4个初步的想法,文章从4个方面探索:

  1. 妇女更有可能生存
  2. 儿童更有可能生存
  3. 上层乘客更有可能生存
  4. 一些新想法

1.性别对生存率的影响

(1)左图:不同性别(男 or 女)人口数量分布图:

男女比例大概为2:1,有统计意义;

(2)右图:不同性别的存活率图;

plt.figure(figsize = (14, 5))
f, (ax1, ax2) = plt.subplots(1, 2)
ax1.set_title('Survival  Count  VS  Sex')
ax1.set_ylabel('Number of Passenger')
ax2.set_title('Survival  rage  VS  Sex')
ax2.set_ylabel('Survival Rate')
f.set_size_inches((20, 8))
titanic_df.groupby('Sex', as_index=False)['Survived'].count().plot(kind = 'bar', ax = ax1)
titanic_df.groupby('Sex', as_index=False)['Survived'].mean().plot(kind = 'bar', ax = ax2)
<matplotlib.axes._subplots.AxesSubplot at 0x10e29eb8>




<matplotlib.figure.Figure at 0x117058d0>
1.png

女人的生存率为0.74,男人生存率为0.18,差别非常大;

小结:

女士更有可能生还

2. 年龄对生存率的影响

(1)缺失值填充:

年龄age有714个,正常有891个,需要处理缺失值,这里采用的方法是用平均值填充;

# 计算平均年龄 
titanic_age_mean = titanic_df['Age'].mean()

# 填充缺失值nan为平均值
titanic_df["Age"] = titanic_df["Age"].fillna(titanic_age_mean)

# 转换年龄的格式从float 到 int
titanic_df['Age']  =  titanic_df['Age'].astype(int)

(2)各年龄段生还率研究:

  • 为了方便分析,将年龄这种连续变量转化为分类变量
  • 创建一个年龄段变量,比如(0, 10], (10, 20]......然后对乘客根据年龄分组;
  • 查看每个年龄段的乘客数量、生还率;
# 生成一个年龄段list
bins = np.arange(0, 90, 10)

# 新建Age_group变量为年龄段
titanic_df['Age_group'] = pd.cut(titanic_df['Age'], bins)
plt.figure(figsize = (14, 5))
f, (ax1, ax2) = plt.subplots(1, 2)
ax1.set_title('Survival  Count  VS  Age')
ax1.set_ylabel('Number of Passenger')
ax2.set_title('Survival  rage  VS  Age')
ax2.set_ylabel('Survival Rate')
f.set_size_inches((20, 8))
titanic_df.groupby('Age_group')['Survived'].count().plot(kind = 'bar', ax = ax1)
titanic_df.groupby('Age_group')['Survived'].mean().plot(kind = 'bar', ax = ax2)
<matplotlib.axes._subplots.AxesSubplot at 0x11cfa208>




<matplotlib.figure.Figure at 0x11597b38>
2.png

从上图可以看出,在大概0-10岁的儿童,其生还的概率超过50%,超过其他年龄段;

小结

儿童更有可能生还

3.乘客所在船层对生存率的影响

(1)左图:不同船层乘客数量柱状图;

(2)右图:不同船层乘客生存率柱状图;

plt.figure(figsize = (14, 5))
f, (ax1, ax2) = plt.subplots(1, 2)
ax1.set_title('Survival  Count  VS  Pclass')
ax1.set_ylabel('Number of Passenger')
ax2.set_title('Survival  rage  VS  Pclass')
ax2.set_ylabel('Survival Rate')
f.set_size_inches((20, 8))
titanic_df.groupby('Pclass')['Survived'].count().plot(kind = 'bar', ax = ax1)
titanic_df.groupby('Pclass')['Survived'].mean().plot(kind = 'bar', ax = ax2)
<matplotlib.axes._subplots.AxesSubplot at 0x12e392b0>




<matplotlib.figure.Figure at 0x12ca9518>
3.png

不同船层的乘客生存率有显著差异:

  • Pclass为1,即在 船上层 的乘客生存率为0.63;
  • Pclass为2,即在 船中层 的乘客生存率为0.47;
  • Pclass为3,即在 船底层 的乘客生存率为0.24;

小结:

** 上层乘客更有可能生存**

4.一些新想法

既然性别,船层对生还率都有影响,那么她们的组合因素有没有影响呢,
所以做了以下探究:

左图:不同性别、船层 的乘客数量图形

右图:不同性别,船层 的乘客生还率图形

plt.figure(figsize(14, 5))
f, (ax1, ax2) = plt.subplots(1,2)
ax1.set_title('Sex VS Pclass  Count')
ax1.set_ylabel('Number of Passenger')
ax2.set_title('Sex VS Pclass  VS Survival  rage')
ax2.set_ylabel('Survival Rate')
f.set_size_inches((20, 8))
titanic_df.groupby(['Pclass', 'Sex'])['Survived'].count().unstack().plot(kind = 'bar', ax = ax1)
titanic_df.groupby(['Pclass', 'Sex'])['Survived'].mean().unstack().plot(kind = 'bar', ax = ax2)
<matplotlib.axes._subplots.AxesSubplot at 0x1102fa90>




<matplotlib.figure.Figure at 0x114c1550>
4.png

可以看出,船上层 和 中层的女生绝大多数都存活下来,

且整体看 存活率由高到低依次是:

(1.female) > (2,female) > (3,female) > (1,male) > (2,male) > (3,male)

小结:

无论是男性还是女性,存活率都随着pclass的增加而降低;

三、结论:

  1. 本报告所用乘客数据集为891名,实际乘客为2224名,样本占总量的40.1%,可以代表整个整体,结论仍有可能有偏差,但是分析结果在统计学上可以认为是正确的;
  2. 对年龄缺失值采用平均值替代的处理可能会造成偏差,关于年龄部分的结论还需要再探究寻找更加合理的方式;
  3. 个人认为还有其他影响存活率的因素,比如:职业,地区,收入等;
  4. 真实的影响因素是多样且互相关联的,本文得出的所有结论只是很简单的分析某些变量与生存率的关系,一家之言,欢迎交流;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容