0
点赞
收藏
分享

微信扫一扫

Python实战—泰坦尼克号生还者数据分析

Python实战—泰坦尼克号生还者数据分析_数据


今天给大家讲一个凄美的故事

有“永不沉没”的美誉的“泰坦尼克号”

1912年从英国出发,驶向美国纽约

然而不幸的是

Python实战—泰坦尼克号生还者数据分析_字段_03

泰坦尼克号与一座冰山相撞

泰坦尼克船体断裂成两截后沉入大西洋底

2224名船员及乘客中,1517人丧生

其中仅333具罹难者遗体被寻回

以此背景,做出本节数据分析

Python实战—泰坦尼克号生还者数据分析_缺失值_04


一、数据来源

Python实战—泰坦尼克号生还者数据分析_缺失值_05



本节使用seaborn自带的泰坦尼克号生还乘客的数据集,其中各字节所代表的含义如下:survived alive乘客生还情况、pclass class船舱等级、sex who乘客性别、age 乘客年龄、sibsp parch是否带有家属,统一用alone字段代表是否有家属、fare船票价格、embarked和embark_town上船地点。

import numpy as np #导入库
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

titanic = sns.load_dataset("titanic")
titanic.head() #数据概览

Python实战—泰坦尼克号生还者数据分析_缺失值_06

二、问题研究

Python实战—泰坦尼克号生还者数据分析_缺失值_05



  1. 泰坦尼克号乘客信息的基本情况。
  2. 乘客信息与生还数据是否有关联。


三、数据清洗

Python实战—泰坦尼克号生还者数据分析_缺失值_05



titanic.isnull().sum() #查看是否具有缺失值

Python实战—泰坦尼克号生还者数据分析_缺失值_09

age和deck字段存在缺失值。

titanic.info() #数据情况

Python实战—泰坦尼克号生还者数据分析_缺失值_10

sns.set(style="darkgrid", palette="muted", color_codes=True)    
sns.distplot(titanic[titanic['age'].notnull()]['age']) #distplot函数查看乘客的年龄分布

Python实战—泰坦尼克号生还者数据分析_数据_11

对年龄的缺失值处理,并且用distplot函数查看乘客的年龄分布,发现年龄呈正态分布。

titanic['age'] = titanic['age'].fillna(titanic['age'].mean())
sns.distplot(titanic['age'])

Python实战—泰坦尼克号生还者数据分析_字段_12

年龄呈正态分布,用年龄的均值进行缺失值的填充,再对年龄分布可视化。

sns.countplot(x="embarked",data=titanic) #绘制类别计数柱状图

Python实战—泰坦尼克号生还者数据分析_字段_13

titanic['embarked'] = titanic['embarked'].fillna('S')
titanic.isnull().sum()

Python实战—泰坦尼克号生还者数据分析_字段_14

利用正确的登船地点S进行缺失值填充。

titanic.head()

Python实战—泰坦尼克号生还者数据分析_缺失值_15

titanic = titanic.drop(['survived','pclass','sibsp','parch','who','adult_male','deck','embark_town'],axis=1)
titanic.head() #删除多余的字段,数据清洗

Python实战—泰坦尼克号生还者数据分析_缺失值_16

四、数据探索

Python实战—泰坦尼克号生还者数据分析_缺失值_05



sns.countplot(x="sex",data=titanic)

Python实战—泰坦尼克号生还者数据分析_数据_18

由上图可以看出,男性乘客比女性乘客多。

sns.boxplot(x='sex',y='age',data=titanic)

Python实战—泰坦尼克号生还者数据分析_数据_19

由上图可看出,男性与女性的年龄分布很相近,但女性乘客的年龄跨度更大一点。

sns.countplot(x="class",data=titanic)

Python实战—泰坦尼克号生还者数据分析_数据_20

对于船舱等级计数,第三级船舱数量最多。

sns.violinplot(x="class", y="age", data=titanic)

Python实战—泰坦尼克号生还者数据分析_缺失值_21

结合船舱等级,绘制乘客年龄分布箱线图,头等舱的年龄跨度较大,第三级船舱的中年人分布最多。

sns.countplot(x="alone",data=titanic)

Python实战—泰坦尼克号生还者数据分析_字段_22

对alone字段计数,单独的乘客数量更多一些。

sns.countplot(x="alive",data=titanic)

Python实战—泰坦尼克号生还者数据分析_缺失值_23

对生还字段可视化,未生还的乘客人数更多一些。

sns.countplot(x='alive',hue='sex',data=titanic)

Python实战—泰坦尼克号生还者数据分析_数据_24

hue='sex'添加性别变量,生还中女性占大多数。

g = sns.FacetGrid(titanic, col='sex') #利用网格技术
g.map(sns.countplot, 'alive') #不同性别生还情况

Python实战—泰坦尼克号生还者数据分析_字段_25

def agelevel(age):    
if age <= 16:
return 'child'
elif age >= 60:
return 'aged'
else:
return 'midlife'

titanic['age_level'] = titanic['age'].map(agelevel) #对年龄分级,分开老人和小孩的数据

titanic.head() #年龄等级

Python实战—泰坦尼克号生还者数据分析_数据_26

sns.countplot(x='age_level',data=titanic)

Python实战—泰坦尼克号生还者数据分析_缺失值_27

分级年龄可视化,成年人乘客数量占比很大,小孩和年长者占比很小。

sns.countplot(x='alive',hue='age_level',data=titanic)

Python实战—泰坦尼克号生还者数据分析_缺失值_28

乘客年龄与生还关系,乘客年龄与生还乘客之间的关系并不明显,小孩的生还几率比较大,老人却相对较小。

g = sns.FacetGrid(titanic, col='class', row='alone') #网格技术
g.map(sns.countplot, 'alive')

Python实战—泰坦尼克号生还者数据分析_缺失值_29

乘客舱位等级越高,生还的可能性越大,单独的乘客生还的几率也更大一些。

Python实战—泰坦尼克号生还者数据分析_缺失值_04

话说今年的情人节

你是如何度过的

对于小编这种单身狗来说

只能一个人过了

Python实战—泰坦尼克号生还者数据分析_缺失值_31

好在还有广大的粉丝

Python实战—泰坦尼克号生还者数据分析_字段_32

写写文章、研究研究数据分析

生活过的也不是太单调


Python实战—泰坦尼克号生还者数据分析_数据_33

Python实战—泰坦尼克号生还者数据分析_缺失值_34

举报

相关推荐

0 条评论