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

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

新增知识点:

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

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

数据分析的流程问题:数据分析的核心是问题,提出一个有价值的问题就像瞄准了正确的靶心,才能使后续的动作变得有意义。

数据采集:有了问题之后就要收集原始的数据。但是数据来源丰富多样,格式不尽相同,所以需要进行下一步——

数据清洗:清洗这些格式多样的数据,纠正其中可能的错误。这个步骤比较繁杂,占整个过程的工作量比例较大,却是整个分析流程必不可少的环节。

数据探索:这时候一般会用到统计和可视化的方法进行分析,对数据有全面的认识,为后续的进一步分析做铺垫。

建模分析:这一步经常用到机器学习/数据挖掘的算法(此课不做介绍)。

交流结果:通过报告或者可视化图表的形式,展示结论,并与他人和交流。

决策:通过交流进行决策。

整个数据分析的流程就是从问题到决策的过程。但是真实的情况往往不会那么顺利。比如在数据采集/清洗和探索的过程中,就会进行来回倒腾。就像在探索的时候发现数据支撑不够,要到前面一个步骤进行更多的采集和清洗。又像有时候我们只有数据没有具体的问题,通过采集/清洗和探索这些步骤之后,对数据有了更深的认识,这时可以进一步提出更有意义的问题了。

我们第八课的课程里面,也会用这样一个流程,对数据进行处理。

我们今天的问题是:哪些问题会影响最后的生还概率。

泰坦尼克号背景介绍

泰坦尼克号是一艘奥林匹克级邮轮,于1912年4月首航时撞上冰山后沉没。泰坦尼克号由位于北爱尔兰贝尔法斯特的哈兰·沃尔夫船厂兴建,是当时最大的客运轮船,由于其规模相当一艘现代航空母舰,因而号称“上帝也沉没不了的巨型邮轮”。在泰坦尼克号的首航中,从英国南安普敦出发,途经法国瑟堡-奥克特维尔以及爱尔兰昆士敦,计划横渡大西洋前往美国纽约市。但因为人为错误,于1912年4月14日船上时间夜里11点40分撞上冰山;2小时40分钟后,即4月15日凌晨02点20分,船裂成两半后沉入大西洋,死亡人数超越1500人,堪称20世纪最大的海难事件,同时也是最广为人知的海难之一。

当时报道

整份数据分为数值变量和分类变量,这边着重分一下,因为它们在后面的使用也是不一样的。因为我们今天案例主题是 什么因素会影响生还,所以这份数据里面“survival” 这一列的数据是需要重点分析的,然后会对分类变量 “Pclass” 舱位和 “Sex” 性别,还有数值变量 “Age” 年龄,对生还情况的影响。

在里面可以看到很多NaN的显示,表示此处是缺失值。第二部分我们将着重来看,怎么来处理这些缺失值。

1、数据导入和观察

读取常用包

然后导入这次课程的数据,csv格式的文件。用 Pandas 的 csv 的读取方式来读取,赋值于 titanic_df 这个数据数据变量中。我在前面的文章也不止讲了3遍怎么导入数据了,讨论区的答疑整理几乎每一次都有人问数据导入的问题,所以到今天要是还不会导入数据的,可以翻我前面的文章。

导入并读取数据

数据字段说明:PassengerId: 乘客的id

Survival: 是否幸存 0 = No, 1 = Yes

Pclass: 舱位 class 1 = 1st, 2 = 2nd, 3 = 3rd

Name: 姓名

Sex: 性别

Age: 年龄

SibSp: 船上兄弟姐妹以及配偶的个数

Parch: 船上父母以及者子女的个数

Ticket: 船票号码

Fare: 票价

Cabin: 船舱号码

Embarked: 登船码头 C = Cherbourg, Q = Queenstown, S = Southampton

变量类型数值变量:Age, SibSp, Parch, 和Fare。

分类变量:Pcalss, Sex, Cabin, 和Embarked。Survived是结果。

下面我们 describe 函数来观察数值变量和分类变量。

数据的统计描述

数值变量

describe函数查看部分变量的分布

用方括号的形式,这四个参数重新组建一个 DataFrame,用describe 进行观察。运行得到四列数据的统计值。

count表示的是非空的数值个数。因为一行数据统计出来的结果都是891,只有 Age 是714,所以我们从这份数据可以观察到,Age这列数据是有缺失值的。下面的是一些统计量,mean 代表平均值,std是标准差,也就是数据相对于均值的波动情况。min 是最小值,max是最大值,25%/50%/75% 分别是这份数据的四分位数。

通过这份 describe 函数,我们可以对整份数据有大体的认识。比如从年龄那一列看,平均年龄是29.6岁,标准差是14.5,最小的年龄是0.42,最大的80岁,年龄的中位数是28岁。因为 Survived 是0-1变量,所以均值就是幸存人数的百分比,这个用法非常有用,也就是 Survivied 这列数据,由于生还与否是用 0 和 1 来进行表达,所以这里的0.38代表的是生还率。这个看起来很好用啊!

同样的,我们可以用describe来看分类变量的数据。但是要是直接使用,这里显示的也只能是数据,所以用到了 include=[ np.object ] 这个参数,表示把数据里面不是数值的可以用字符串的形式表达出来。

使用 include=[np.object] 来查看分类变量

count表示非空数值的个数。unique表示非重复数的个数,比如 name在这里的非重复数是891,那么和上面的非空数值对比,就知道是没有重名的人在里面。top表示最高频的一个词,在性别 sex 中表示的是男性比女性多。freq 代表的是上面面最高频的数量,这里告诉我们男性出现次数最多,有577次。所以我们在这个表格可以看到,添加了 include=[ np.object ] 这个参数之后,用 describe 函数不仅能表示数值类的函数,也能表达字符类的函数。

不同舱位的分布情况是怎样的呢?

我们通过这个例子来复习 value_counts 和 group_by

value_counts频数统计

取到舱位这一批数据,然后用到 value_counts( ),因为它默认是从小到大排列的,所以可以看到三等舱的人最多。

为了求到相应的占比,我们可以除以相应的总量,用 len( )函数,然后可以看到三等舱的人数占了55%。

查看不同舱位的分布

这是用 value_counts 使用的第一种方法,下面还有另一种方法:group_by。

titanic_df.groupby('Pclass').agg('size')

将数据按舱位来分组,分组之后在计算每一组数据的大小。这里用列名 Pclass,代表此处是用舱名来分类的,然后使用聚合函数agg,用的是 size ,是用来计算分组之后的数据大小的。同样我们可以得到每一个舱位的人数。

同样需要得到相应的占比,也是除以 len( tatanic_df )

titanic_df.groupby('Pclass').agg('size')/len(titanic_df)

要是想要让数据从大到小进行排序,我们用的是 sort_values 这个方法进行操作:

sort_values 将结果排序

注意哦,这里是先把前面的内容用圆括号扩起来,代表这里的优先级更高,然后再使用 sort_values。后面需要设置参数 =False,因为此处是默认从小到大排列的。

所以这两种方法使用下来,能看出方法1是简单一点的,有默认排序功能,方法2还需要语句来设定。啊,我这种懒人!

作业8-1:查看Embarked(登船码头)人数分布的百分比

第八课的这篇文章我码到现在,都是在用以前的知识点来进行操作的。下一篇文章将会有新的知识点 “ 缺失值处理:pandas中的fillna()方法 ” 和 “ 数据透视表:pandas中的pivot_table函数 ”

老师在GitHub 预告的,我这两天继续更新!!

文科生学python系列_文科生学Python系列15:泰坦尼克数据1相关推荐

  1. df满足条件的值修改_文科生学 Python 系列 16:泰坦尼克数据 2(缺失值处理)

    第八课:案例分析 - 泰坦尼克数据 本节课将重点分析泰坦尼克号沉船事故,我们将探索是什么因素决定了最后是否生还. 我们将将前面课程所学过的知识点融会贯通,举一反三 新增知识点: 缺失值处理:panda ...

  2. 语料库与python应用_语料库与Python应用/语料库翻译学文库

    导语 内容提要 管新潮著的<语料库与Python应用/语料库翻译学文库>以如何在语料库的教与学及其应用.语料库科研中习得Python能力的逻辑关系为线索,描述了Python的价值.意义和作 ...

  3. python一般要学几年_怎么自学python,大概要多久?

    都让开!本人文科生,自学Python 2年半,作为一个曾经完全0基础,啥都不懂纯靠自学学会python的文科生,有一些不成熟的小建议可以分享一下. 首先不要觉着编程难,只要你认识26个英文字母,有一点 ...

  4. 现在学java还是python好_该学Java还是Python?

    作为"常青树大佬"Java 和"新晋大佬"Python ,经常被人拿来对比,对于刚开始起步学习编程的同学来说,会迷惑且最经常问的问题是,我该学 Java 还是 ...

  5. 哪个专业学python语言_想学Python编程?你真的适合吗?

    原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...

  6. 自学python经验_我学Python的经验,Python学习经验分享

    今天我想谈谈我学Python的几个经验感悟,也许对你有启发. 1.一定要弄清楚自己的为啥学Python 做一件事情,你的动机很重要,如果意愿不很强烈,目标不清晰,很容易就会三天打鱼两天晒网,甚至稍微遇 ...

  7. 编程小白学python路线图_零基础Python学习路线图,让你少走弯路

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  8. 教孩子学编程 python 下载_趣学python pdf 中文下载

    趣学python教孩子学编程pdf是一本专为想要学习python不错的朋友准备的入门教程,可以轻松的帮之你由浅入深,由难到易的学习python编程,感兴趣欢迎下载学习! 趣学python教孩子学编程p ...

  9. 如何将c语言程序封装供python调用_一起学opencv-python四十五:opencv绑定python,python和c++互调...

    opencv-python系列教程来到了最后一讲.感谢一路的坚持. 如何生成OpenCV-Python绑定? 在OpenCV中,所有算法都是用C ++实现的.但是这些算法可以用于不同的语言,如Pyth ...

最新文章

  1. java 二进制 定义_Java如何定义二进制格式的整数常量?
  2. innodb和myisam
  3. [开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)
  4. Linux常用命令(知道啦就赶紧收藏吧)
  5. java8模块化_Java9系列第8篇-Module模块化编程
  6. char* 与 LPCTSTR转换
  7. 学习 服务器部署 hello world
  8. 帧间差分法python代码_图像处理算法之帧间差分法
  9. 十年风雨!看蚂蚁金服SOFA 分布式架构演进
  10. 内存越界并不等于马上出错
  11. matlab打靶法求解薛定谔方程,用MATLAB语言解氢原子与类氢离子的定态薛定谔方程...
  12. 排序系列(代码c++版)
  13. OpenOffice实现word转pdf
  14. 找到服务器系统日志,查看服务器系统日志
  15. tic tac toe php,Python函数找出tic tac toe获胜者
  16. 怎么注册一个docker id
  17. 海康威视实习生面试总结
  18. 848. Shifting Letters**
  19. 通过Nginx反向代理实现IP访问分流
  20. iOS开发--AVFoundation进行视频合成, 导出结果旋转90度问题

热门文章

  1. 【数据挖掘】高斯混合模型 ( 高斯混合模型参数 | 高斯混合模型评分函数 | 似然函数 | 生成模型法 | 对数似然函数 | 高斯混合模型方法步骤 )
  2. python sql注入如何防止_Python如何防止sql注入
  3. 用Python实现接口自动化测试并保存测试结果
  4. java的函数重载函数_Java函数重载和重写
  5. ffmpeg+jsmpeg+nginx实现多道h5视频直播
  6. 第6节、如何解决failed to push some refs to git
  7. Styling FX Buttons with CSS
  8. ubuntu18.04 zed sdk安装和卸载
  9. 3D游戏引擎原理简介
  10. 《延禧攻略》反派尔晴先“死”于越南