Python数据分析:挖掘《泰坦尼克号》的秘密

前言

相信很多人都看过或听说过电影《泰坦尼克号》,电影实际讲述的是一件真实故事。但这些与Python有啥关系?

今天我们通过政府对外公布的一份乘客生还数据,利用Python挖掘一下事情背后的一些不为人知的秘密。

本文一切从数据出发,最后会得出以下观点:

做男人,不容易。

出门在外,小伙伴是最可靠的。

本文重点

使用Pandas快速整理数据。

利用图表,分析问题。

挖掘数据背后的逻辑。

原创不容易,请点击右上方关注按钮,多多支持~

Python数据分析:挖掘《泰坦尼克号》的秘密

学习遇到问题没人解答,小编创建了一个Python学习交流裙:五二八 三九七 六一七, 寻找有志同道合的小伙伴,互帮互助,群里还有不错的学习****和PDF电子书分享!

数据有哪些信息

本文使用的是完整的乘客数据,数据有10多个字段。下面主要说些重要的字段:

survired :表示是否生还。0-没有生还,1-生还

sex :性别。male-男,female-女

name :名字

age : 年龄。婴儿的年龄一般是带小数的。

ticket : 船票的号码。

cabin : 船舱编号。

定义问题

开始分析之前,我们需要定义核心问题,不然过程中很容易迷失方向。 本文探讨的问题:

救援工作中,有没有优先照顾孩子?

性别有没有影响到生存率?

导入包

Python数据分析:挖掘《泰坦尼克号》的秘密

行3-5行,用pandas处理数据,用seaborn显示图表。

行8-9行,设置图表的样式和大小。

行10,数据文件位置。

数据处理

使用Pandas的一个好处是,非常容易得到数据的整体状况。 比如,每个字段的最大值和最小值,波动情况,是否有重复值等。

Python数据分析:挖掘《泰坦尼克号》的秘密

Python数据分析:挖掘《泰坦尼克号》的秘密

行23,首先导入数据到pandas中,很简单的一句即可从csv中读取。

行25,显示头5行数据。

行27,显示统计情况。可以看到平均年龄差不多到30,最大的是80岁的老人家。

行29,看看缺失情况。发现年龄有263个缺失值,这会影响后续的分析。

接下来就很简单了,针对上面的问题做处理即可。

Python数据分析:挖掘《泰坦尼克号》的秘密

行34,转换成类别变量,方便后续做图表

行35,把年龄有缺失的行去掉。

行36,把年龄分成10个区间段。

行37,后续会用到。

看图表

到此为止,数据已经基本准备好了。接下来就是可视化我们感兴趣的数据。

先来看看性别对于生存率的影响。左边为女性,右边为男性。

Python数据分析:挖掘《泰坦尼克号》的秘密

看起来还是女士有更大的生存机率

这里充分体现了"lady first"。意味着救援过程中,女士往往得到优先的营救。

再看看年龄对于生存率的影响。

Python数据分析:挖掘《泰坦尼克号》的秘密

第一组是14岁或以下的小孩子,这组的生存率是所有组中最高的

其他组的生存率看起来都很低。

但是,如果我们把性别和年龄放到一起去看,就可以发现问题

Python数据分析:挖掘《泰坦尼克号》的秘密

左边是女性的年龄发布生存率,右边是男性的。

从上图可以看到,女性其实在各个年龄段都有较高的生存率,反而14岁以下的是相对最低的。

男性的数据就与之前的分析基本一致。

可以看到,因为"lady first"的原因,因此,我们看到的年龄小的人群,获得更高生存率,这些现象只是被男性的数据拖累了。

做男人,不容易啊!

Python数据分析:挖掘《泰坦尼克号》的秘密

意外收获

之前我们发现14岁以下的小孩子组别的生存率特别高,一般情况下还是要去看看这个组的数据。

如下图,有没有发现什么东西? 注意:ticket 是船票号,cabin 是船舱号。

Python数据分析:挖掘《泰坦尼克号》的秘密

注意看名字,我们发现有些孩子是一家人来的。

看了一下记录发现,这些孩子在 ticket 和 cabin 列的值是一样的。表明是套票。

现在很清楚了,ticket 相同的就是一家人, cabin 相同的则表示住在同一个船舱。

但是,我们发现不完全是。如下:

Python数据分析:挖掘《泰坦尼克号》的秘密

图中6个人都是同一个套票,但最后2名女士却没有船舱号。

分析一下可以猜想,这2名女士是佣人,负责照顾2名孩子。

看字段 home.dest (家庭地址) 与 name 也可以证明猜想。

查看更多的相关数据发现,买套票的也可能是互相认识的朋友

那么我们是否可以这样去做猜测,买套票的人群是否更有可能获救呢?

我们继续探索,证明我们的猜想。

Python数据分析:挖掘《泰坦尼克号》的秘密

把那些 ticket 相同的人归为一组。以此做图表。

可以看到,有小伙伴一起玩耍的人,生存率比独自一人的要高一倍!

小结

本文通过Python做一系列的数据探索分析,即使只是简单的处理和图表输出,同样也获得了许多信息。

利用Pandas做数据分析,使用seaborn做图表。

Pandas中的分组 groupby 是一个必需学习的工具。

seaborn中可以使用 factorplot 灵活做出不同的图表。

整个救援过程中,女士得到最多的资源。

除此之外,后续我会用其他方式继续探索,会引入机器学习噢,敬请期待。

项目代码:http://www.cxybcw.com/

如果觉得本文对你有所帮助,记得关注、评论、转发、收藏噢~