Python-数据清洗与分析案例之泰坦尼克号(一)

泰坦尼克号背景介绍

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

对泰坦尼克号数据进行分析,哪些因素,会导致乘客的生还率更高。

1.导入包

Python-数据清洗与分析案例之泰坦尼克号(一)

2.导入数据

Python-数据清洗与分析案例之泰坦尼克号(一)

3.熟悉数据

3.1解释标签数据

PassengerId:乘客Id

Survived:0代表NO,1代表YES

Pclass:1,2,3代表成员的经济社会地位1最高,3最低

Name:乘客姓名

Sex:代表性别

Age:年龄

SibSp:由两部分组成,Sibling(兄弟姐妹,堂妹都合适),Spouse代表(丈夫或妻子)

Parch:父母和孩子组成,若只跟保姆写0

Ticket:票的数字

Fare:乘客票价

Cabin:船舱数字

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

3.2查看数据信息

3.2.1查看数值变量信息

Python-数据清洗与分析案例之泰坦尼克号(一)

图中显示的为数值变量信息,可以看出乘客的生还率大约为38%,乘客的年龄比较年轻,平均年龄在30岁左右,三等舱的乘客最多,占50%以上。

3.2.2查看分类变量信息

Python-数据清洗与分析案例之泰坦尼克号(一)

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

函数讲解

pandas.DataFrame.describe()查看数值型列的汇总统计,可返回变量和观测的数量、缺失值和唯一值的数目、平均值、分位数等相关信息,输出的值(统计的内容)取决于输入的数据的类型

  • 函数语法describe(percentiles=None, include=None, exclude=None)
  • 参数percentiles参数指百分数,指定了输出里输出哪些。
  • include参数指定输出里对哪些数据类型做统计,但对于series无效
  • exclude参数指定不参与统计的数据类型,对于series无效
  • 数值类型的数据其结果将包括count,mean,std,min,max以及百分位数。默认情况下,百分位数分三档:25%,50%,75%,其中第50百分位数就是中位数。
  • count:计数,这一组数据中包含数据的个数(可看出有无缺失值)
  • mean:平均值,这一组数据的平均值
  • std:标准差,这一组数据的标准差
  • min:最小值
  • max:最大值
  • 百分位数:第p百分位数是这样一个值,它使得至少有p%的数据项小于或等于这个值,且至少有(100-p)%的数据项大于或等于这个值。以身高为例,身高分布的第五百分位表示有5%的人的身高小于此测量值,95%的身高大于此测量值。
  • 对象类型的数据(例如字符串或时间)其结果包括count,unique,top,和freq。时间数据还包括first和last项目。
  • count:计数,这一组数据中包含数据的个数(可看出有无缺失值)
  • unique:表示有多少种不同的值
  • top:数据中出现次数最高的值
  • freq:出现次数最高的那个值(top)的出现频率

4.数据清洗

4.1 查看缺失值

Python-数据清洗与分析案例之泰坦尼克号(一)

从上图信息可以看到,年龄、船舱号码、登船码头信息不全,存在缺失值。

4.2 处理缺失值

Python-数据清洗与分析案例之泰坦尼克号(一)

4.2.1用所有人年龄的中位数填补缺失值

Python-数据清洗与分析案例之泰坦尼克号(一)

从上图可以看出,用所有人年龄的中位数填充缺失值后,总体年龄的平均值变小,中位数未变。

4.2.2考虑性别因素,分别用男女乘客各自年龄的中位数来填补

Python-数据清洗与分析案例之泰坦尼克号(一)

Python-数据清洗与分析案例之泰坦尼克号(一)

Python-数据清洗与分析案例之泰坦尼克号(一)

从上图可以看出,分别用男女乘客各自年龄的中位数来填补缺失值后,总体年龄的平均值变小,中位值变大。

函数讲解

df.set_index() 表示将(某列)列设为索引。当你将某一列设置为索引的时候,它就不再是数据的一部分了。如果你想将索引恢复为数据,调用 set_index 相反的方法 reset_index 即可: df.reset_index()

4.2.3同时考虑性别和舱位因素,分别用不同舱位男女乘客各自年龄的中位数来填补

Python-数据清洗与分析案例之泰坦尼克号(一)

Python-数据清洗与分析案例之泰坦尼克号(一)

Python-数据清洗与分析案例之泰坦尼克号(一)

从上图可以看出,分别用不同舱位男女年龄的中位数填补缺失值后,总体平均值变小,中位数变小。


分享到:


相關文章: