文科生学Python系列18:泰坦尼克数据4(多因素影响)

第八课:案例分析 - 泰坦尼克数据

本节课将重点分析泰坦尼克号沉船事故,我们将探索是什么因素决定了最后是否生还。

我们将前面课程所学过的知识点融会贯通,举一反三。

新增知识点:

      缺失值处理:pandas中的fillna()方法

     数据透视表:pandas中的pivot_table函数

上篇文章的作业疑惑,其实用下图是可以简洁说明的,此图截屏于 新生大学-解密大数据《Python编程&数据科学入门》线上课程(说明来处,应该没侵权啊。。)。

对啦,我上的就是这个课,有读者问到这课程讲得那么详细是什么课,这个介绍一下,就是 新生大学-解密大数据《Python编程&数据科学入门》,感兴趣的读者可以去了解一下。

此图来自 新生大学-解密大数据《Python编程&数据科学入门》

为什么前面听了那么久,我都不知道index是行索引,columns是列索引呢??!

好吧,接下来是正文内容:


3-4 年龄与生还情况

与上面的舱位、性别这些分类变量不同,年龄是一个连续的变量。

生还组和罹难组的年龄分布直方图

分类变量可以绘制条形图,连续变量可以绘制直方图。将泰坦尼克号的数据映射到 hist 函数中,来绘制 Age 这一列的直方图,并且把区间设成 20,输出得到年龄分布的直方图。

年龄分布直方图

这张图并没能明显显示 FacetGrid 图表的优势,由于我们需要的是罹难和生还两个组的年龄分布,所以这时候可以加一个语句:

生还组和罹难组的年龄分布直方图

这个 col='Survived' 充满了魔力啊!!!一变二!这里就能显示生还组(Survived=1)和罹难组( Survived=0 )两个图表中年龄的分布了。col代表的是列的属性,这时把0和1分布在两个图表中,为了一致起见,把两个图表归一化,使用normed=True 这个参数,我们能够看到纵坐标的值改变了,并不是频数等统计,归一化的意思就是下面阴影区域的面积为1。

在这个图可以看到,相对来说,生还组中儿童占比比较大。

结论:儿童有更高的生还可能。

作业 8-3:

考虑舱位因素后,绘制生还组和罹难组的年龄分布直方图提示:FacetGrid参数中同时设置col和row

年龄是一个连续的值,要是用直方图来观察,不是太方便。这里就需要将连续性的变量离散化了:


将连续型变量离散化

连续型变量离散化是建模中一种常用的方法

离散化指的是将某个变量的所在区间分割为几个小区间,落在同一个区间的观测值用同一个符号表示

以年龄为例,最小值是0.42(婴儿),最大值是80,如果我们想产生一个五个级(levels),我们可使用cut或者qcut函数

cut函数将年龄的区间均匀分割为5分,而qcut则选取区间以至于每个区间里的观察值个数都是一样的(五等分), 这里演示中使用cut函数。

我们上面的图中可以看到年龄是0-80岁,我们可以尝试将它划分为五等分,等于就是把一个连续的值变成离散的值了,将数值变量变成一个分类变量。

pd.cut(titanic_df.Age,5) (1)
pd.cut(titanic_df.Age,5) (2)

此处离散化的方法是使用 pandas 里面的 cut 函数,首先传递给这个函数将要离散化的数据:年龄,后面的5,表示将数据分割成五等分。这里将原本数据的每一行对应到一个区间数据。

新添加的AgeBand

然后把这个输出添加到原来的数据中,通过添加一个新的列,赋值给 AgeBand,代表了年龄区间。


查看落在不同年龄区间里的人数

没有sort=False的结果

sort=False 表示不需要将结果排序,上图是没有加上这句话的输出,可以看到区间是按照区间数量的多少进行从大到小的排序的,要是想要把区间捋一捋,将区间从小到大无缝连接地排序,就可以加上 sort=False 这个语句了,下图是输出效果:

加上sort=False的结果

这里的结果输出可以看到年龄最小的区间人数有100人,按年龄区间分布最多的是16-32岁之间,老年人最少。

同样的,得出这样结果的方法不止一个,我们用 pivot_table 方法进行操作:

查看落在不同年龄区间里的人数

因为这里统计的是频数,values 对应的是非空数值就可以了。这里的主语是年龄区间,所以索引引导的是 AgeBand。也因为这里统计的是频数,所以聚合函数 aggfunc 的值是 count。

方法一和方法二不同的是,方法一是Series格式,方法二是DataFrame格式。


查看各个年龄区间的生还率

各个年龄区间的生还率

上面表格可以看到不同年龄区间的生还率,年龄最小区间的生还率是最高的,有55.5%,中坚力量三个区间的生还率不相上下,老年人最低,只有9%,从上面看到老年人只有11人,应该就是只有个别老人成功逃离了。。。

按照套路,我们下面到了绘制图表的时间啦!

各个年龄区间的生还率

这个图标的横坐标每个数据有点长,相互打架了。所以我们进行设置:

调整横坐标

plt.xticks 这个函数我们之前提到过的,一般是用来调整坐标轴,可以通过旋转角度,对图表进行调整。这里 rotation=60,表示旋转的度数为 60 度,然后可以看到输出。

结论:儿童的生还率更高。

以上是单独看年龄/性别/舱位和生还率的关系,下面我们综合不止一个因素来看生还率。


3-5 年龄、性别 与生还概率

落在不同年龄区间男女的生还概率

这里设置行索引 index 是年龄区间 AgeBand ,列索引 columns 是性别 Sex,聚合函数 aggfunc 是 numpy 的平均值。

第八课讲到挺多这样结构的案例的,前面我搞得挺迷糊,昨天在地铁上忍不住打开电脑敲代码的时候,真的发现这东西因为太简洁了,所以逻辑性特别强。比如这里需要看年龄性别两个因素同时与生还概率的关系,所以是用了二重索引来作为分支,数字是生还率,所以 values 是等于生还率的,我的理解就是主语是这些数字,主要就是为了展示主语。然后有分支分类的从句,对句子进行补充,行索引 是年龄区间,列索引 是性别,我的理解就是 行索引 和 列索引 的关系是并列的,然后同时从属于主句,为生还率这个主语服务。得出来的输出就是 在某年龄区间,男性的生还率和女性的生还率分别是多少。这段话是文科生说给文科生听的🤓

接下来是绘制图表:

年龄区间与生还率

这里会自动帮你把Y轴 survived 这个数据求平均。不过这张图只有一条折线,因为这里还没有进行按性别来分组。折线图的分组句型记得啊!是hue!加上要修改距离打架的X轴,下面两处改动:

年龄区间,性别与生还率

这张折线图可以看到,绿色代表的女性生还率无论在哪个年龄区间都是大于男性的,而且女性的生还率随年龄的增加也在递增。对于男性来说,也就是蓝色那条线的代表值,幼者生还率最大,年长的生还率都低于20%。老师说,从这幅图可以看出营救的策略应该是儿童优先,然后女性优先。


3-6 年龄、舱位、性别 与生还概率

年龄、舱位、性别 与生还概率

我觉得要是前面说给文科生的那段话理解清楚,或者知道那段话代表的内容能理解清楚,这里加多一个因素的时候,不会那么慌。这里加了一个舱位的分支。看到最后一行输出,老年组女性的值是NaN,这一区间,无人生还。

看数据会有点懵,接下来绘制折线图,直观点吧!

舱位,性别与生还概率

上图并没有年龄区间的划分,这个函数不合适有三重索引地表达吧。所以下面要引进另一个函数,正确表达年龄,舱位,性别和生还概率的关系。

年龄、舱位、性别 与生还概率折线图1
年龄、舱位、性别 与生还概率折线图2

把年龄区间放在row上,按照年龄区间来分图,老师说到第二句代码map的时候,说把sns.pointplot,也就是上面运行的结果,映射到新赋值的函数中,我就想,反正都把结果弄上去了,为什么后面还要加上横纵坐标以及分类的参数呢,所以就试了一下不放其他参数的结果:

不设置参数

结果就是,五个空图,有年龄区间,有频数,就是没有参数的内容。不能偷懒啊不能偷懒~~🙈🙈

因为上面正确输出的图不是太完美,所以要进行调整:


美图1
美图2

aspect是长宽比等于1.5倍,还是胖一点好看😂😂😂

palette是调色板,用内置的色板进行调整,然后那条几乎隐形的白线终于显示出来了,变成绿色了。绿色代表女性数据,蓝色代表男性数据。

然而。。。这还没完,看上面五张图,几乎都是绿色在上面,也就是女性生还率高于男性,但是在第三个图,也就是年龄区间在32到48岁之间的绿色线是在蓝色线下面的!!!不可能啊,翻看前面的数据表格,也是女性生还率高啊!然后老师说,这里蓝色和绿色代表的数值调换了,也就是这张图中的蓝色代表女性,绿色代表男性。为什么呢?老师没说🙈

这里的设置是加一句 hue_order=[ 'male' , 'female' ] ,此处用的是列表形式扩住参数。然后就正常了:

hue_order=[ 'male' , 'female' ]

老师说,对上图的色板配色感兴趣的,可以去这个链接:palette 配色参考 https://seaborn.pydata.org/tutorial/color_palettes.html?highlight=palette

哈我就没多大要求了,默认隐藏的够用就行,你们拿去收藏吧!🤓


作业8-4:

综合考虑性别,舱位和登船码头三个因素,计算其生还概率,并在一副图中探索它们和生还概率的关系。


来来来总结一下第八课的内容,我们一开篇就提出一个问题:生还率和什么因素有关,然后拿到了原始数据,数据通过清洗填充了缺失值,然后看单个因素和生还率的关系,再看多个因素和生还率的关系,进行可视化图表的绘制更容易得出结论,看下图(我又侵权了吗。。。🙈外框绿色蝴蝶是新生大学Logo,内框那只老虎是解密大数据团队Logo)

案例总结

第八课终于结束了,老泪纵横。。。写不完的第八课😭😭😭今晚上第九课啦!!!预习资料还没看😤抓紧时间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容