前言
相信很多人都看过或听说过电影《泰坦尼克号》,电影实际讲述的是一件真实故事。但这些与Python有啥关系?
今天我们通过政府对外公布的一份乘客生还数据,利用Python挖掘一下事情背后的一些不为人知的秘密。
本文一切从数据出发,最后会得出以下观点:
做男人,不容易。
出门在外,小伙伴是最可靠的。
本文重点
使用Pandas快速整理数据。
利用图表,分析问题。
挖掘数据背后的逻辑。
原创不容易,请点击右上方关注按钮,多多支持~
学习遇到问题没人解答,小编创建了一个Python学习交流裙:五二八 三九七 六一七, 寻找有志同道合的小伙伴,互帮互助,群里还有不错的学习视频教程和PDF电子书分享!
数据有哪些信息
本文使用的是完整的乘客数据,数据有10多个字段。下面主要说些重要的字段:
survired :表示是否生还。0-没有生还,1-生还
sex :性别。male-男,female-女
name :名字
age : 年龄。婴儿的年龄一般是带小数的。
ticket : 船票的号码。
cabin : 船舱编号。
定义问题
开始分析之前,我们需要定义核心问题,不然过程中很容易迷失方向。 本文探讨的问题:
救援工作中,有没有优先照顾孩子?
性别有没有影响到生存率?
导入包
行3-5行,用pandas处理数据,用seaborn显示图表。
行8-9行,设置图表的样式和大小。
行10,数据文件位置。
数据处理
使用Pandas的一个好处是,非常容易得到数据的整体状况。 比如,每个字段的最大值和最小值,波动情况,是否有重复值等。
行23,首先导入数据到pandas中,很简单的一句即可从csv中读取。
行25,显示头5行数据。
行27,显示统计情况。可以看到平均年龄差不多到30,最大的是80岁的老人家。
行29,看看缺失情况。发现年龄有263个缺失值,这会影响后续的分析。
接下来就很简单了,针对上面的问题做处理即可。
行34,转换成类别变量,方便后续做图表
行35,把年龄有缺失的行去掉。
行36,把年龄分成10个区间段。
行37,后续会用到。
看图表
到此为止,数据已经基本准备好了。接下来就是可视化我们感兴趣的数据。
先来看看性别对于生存率的影响。左边为女性,右边为男性。
看起来还是女士有更大的生存机率。
这里充分体现了"lady first"。意味着救援过程中,女士往往得到优先的营救。
再看看年龄对于生存率的影响。
第一组是14岁或以下的小孩子,这组的生存率是所有组中最高的。
其他组的生存率看起来都很低。
但是,如果我们把性别和年龄放到一起去看,就可以发现问题。
左边是女性的年龄发布生存率,右边是男性的。
从上图可以看到,女性其实在各个年龄段都有较高的生存率,反而14岁以下的是相对最低的。
男性的数据就与之前的分析基本一致。
可以看到,因为"lady first"的原因,因此,我们看到的年龄小的人群,获得更高生存率,这些现象只是被男性的数据拖累了。
做男人,不容易啊!
意外收获
之前我们发现14岁以下的小孩子组别的生存率特别高,一般情况下还是要去看看这个组的数据。
如下图,有没有发现什么东西? 注意:ticket 是船票号,cabin 是船舱号。
注意看名字,我们发现有些孩子是一家人来的。
看了一下记录发现,这些孩子在 ticket 和 cabin 列的值是一样的。表明是套票。
现在很清楚了,ticket 相同的就是一家人, cabin 相同的则表示住在同一个船舱。
但是,我们发现不完全是。如下:
图中6个人都是同一个套票,但最后2名女士却没有船舱号。
分析一下可以猜想,这2名女士是佣人,负责照顾2名孩子。
看字段 home.dest (家庭地址) 与 name 也可以证明猜想。
查看更多的相关数据发现,买套票的也可能是互相认识的朋友。
那么我们是否可以这样去做猜测,买套票的人群是否更有可能获救呢?
我们继续探索,证明我们的猜想。
把那些 ticket 相同的人归为一组。以此做图表。
可以看到,有小伙伴一起玩耍的人,生存率比独自一人的要高一倍!
小结
本文通过Python做一系列的数据探索分析,即使只是简单的处理和图表输出,同样也获得了许多信息。
利用Pandas做数据分析,使用seaborn做图表。
Pandas中的分组 groupby 是一个必需学习的工具。
seaborn中可以使用 factorplot 灵活做出不同的图表。
整个救援过程中,女士得到最多的资源。
除此之外,后续我会用其他方式继续探索,会引入机器学习噢,敬请期待。
项目代码:http://www.cxybcw.com/
如果觉得本文对你有所帮助,记得关注、评论、转发、收藏噢~
网友评论