第2次作业-titanic数据集练习

一、读入titanic.xlsx文件,按照教材示例步骤,完成数据清洗。

titanic数据集包含11个特征,分别是:

Survived:0代表死亡,1代表存活
Pclass:乘客所持票类,有三种值(1,2,3)
Name:乘客姓名
Sex:乘客性别
Age:乘客年龄(有缺失)
SibSp:乘客兄弟姐妹/配偶的个数(整数值)
Parch:乘客父母/孩子的个数(整数值)
Ticket:票号(字符串)
Fare:乘客所持票的价格(浮点数,0-500不等)
Cabin:乘客所在船舱(有缺失)
Embark:乘客登船港口:S、C、Q(有缺失)

1.读入titanic.xlsx文件,显示文件前5行数据

import pandas as pd
titanic = pd.DataFrame(pd.read_excel('titanic.xlsx'))
titanic.head()

结果如下:

第2次作业-titanic数据集练习_第1张图片

 

 

 2.删除无效列与行(embark_town)

titanic.drop('embark_town',axis = 1,inplace = True)
titanic.head()

结果如下:

第2次作业-titanic数据集练习_第2张图片

 

 3.重复值处理

用duplicated函数用于查找并显示数据表中的重复值:

titanic.duplicated()

结果如下图,一共891行数据,可以看出索引为886的行是一个重复值行。

第2次作业-titanic数据集练习_第3张图片

 

 通过drop_duplicates函数删除重复值

titanic = titanic.drop_duplicates()
titanic.duplicated()

结果如下图,删除重复值行后,数据只剩784行。

第2次作业-titanic数据集练习_第4张图片

 

 4.空值与缺失值处理

首先使用函数isnull()统计“age”这个字段的空值情况,该函数可以根据字段判断是否为空值;然后使用value_counts()统计空值个数。

titanic['age'].isnull().value_counts()

结果如下图,True为空值,所以这个字段一共有106行空值。

 

 使用fillna方法填充‘age’字段的空值,填充数据为‘age’字段的平均值。

titanic['age'] = titanic['age'].fillna(titanic['age'].mean())
titanic['age'].isnull().value_counts()

结果如下图,可以看出‘age’字段的空值已经没有了,说明空值已经被填充。

 

 5.空格处理

DataFrame中的map函数与str.strip函数结合能够很好地清除数据中的 空格,通常有下面三种方式:

titanic['fare'] = titanic['fare'].map(str.strip)#删除数据两边空格
titanic['fare'] = titanic['fare'].map(str.lstrip)#删除数据左边空格
titanic['fare'] = titanic['fare'].map(str.rstrip)#删除数据右边空格

6.异常值处理

使用describe()查看每列的统计数据

titanic.describe()

结果如下,mean代表平均值,std代表标准差

第2次作业-titanic数据集练习_第5张图片

 

 假设“fare”字段的最大值512.329200为异常值,可以调用replace方法,将异常值替换为平均值。

titanic = titanic.replace([512.329200],titanic['fare'].mean())
titanic.describe()

结果如下,可以看到‘fare’字段的最大值变成了263.000000。

第2次作业-titanic数据集练习_第6张图片

二、对titanic数据集完成以下统计操作

1.统计乘客死亡和存活人数

titanic['survived'].value_counts()

结果如下:

2.统计乘客中男女性别人数

titanic['sex'].value_counts()

结果如下:

3.统计男女获救的人数

pd.crosstab(titanic['survived'],titanic['sex'])

结果如下:

第2次作业-titanic数据集练习_第7张图片

4.统计乘客所在的船舱等级的人数

titanic['pclass'].value_counts()

结果如下:

5.使用corr()函数,判断两个属性是否具有相关性,分析舱位的高低和存活率的关系

titanic.survived.corr(titanic.pclass)

结果如下:

舱位与存活率的关系

import numpy as np
titanic.pivot_table(values = 'survived',index = 'pclass',aggfunc = np.mean)

结果如下:

第2次作业-titanic数据集练习_第8张图片

 

 说明船舱等级与存活率呈负相关,船舱等级越高,存活率越低。

6.画出乘客票价与舱位等级的箱体图Boxplot,从图中能够得到哪些结论?

import seaborn as sns
sns.boxplot(x = 'pclass',y = 'fare',data = titanic)

结果如下:

第2次作业-titanic数据集练习_第9张图片

 

 

上图是船舱各等级的票价分布图,从图中可以看出,船舱等级1的票价平均值>船舱等级2的票价平均值>船舱等级3的票价平均值,说明票价与乘客的存活率相关。

你可能感兴趣的:(第2次作业-titanic数据集练习)