大数跨境
0
0

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

Python实战—泰坦尼克号生还者数据分析 大话数据分析
2020-02-14
1
导读:本文利用seaborn自带的泰坦尼克号生还乘客的数据集,经过数据清洗,并且可视化,做泰坦尼克号生还者数据分析。

今天给大家讲一个凄美的故事
有“永不沉没”的美誉的“泰坦尼克号”
1912年从英国出发,驶向美国纽约
然而不幸的是
泰坦尼克号与一座冰山相撞
泰坦尼克船体断裂成两截后沉入大西洋底
2224名船员及乘客中,1517人丧生
其中仅333具罹难者遗体被寻回
以此背景,做出本节数据分析


一、数据来源

  


本节使用seaborn自带的泰坦尼克号生还乘客的数据集,其中各字节所代表的含义如下:survived alive乘客生还情况、pclass class船舱等级、sex who乘客性别、age 乘客年龄、sibsp parch是否带有家属,统一用alone字段代表是否有家属、fare船票价格、embarked和embark_town上船地点。
import numpy as np #导入库import pandas as pdimport seaborn as snsimport matplotlib.pyplot as plt%matplotlib inline
titanic = sns.load_dataset("titanic")titanic.head() #数据概览

二、问题研究

  


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


三、数据清洗

  


titanic.isnull().sum() #查看是否具有缺失值
age和deck字段存在缺失值。
titanic.info() #数据情况
sns.set(style="darkgrid", palette="muted", color_codes=True)    sns.distplot(titanic[titanic['age'].notnull()]['age']) #distplot函数查看乘客的年龄分布
对年龄的缺失值处理,并且用distplot函数查看乘客的年龄分布,发现年龄呈正态分布。
titanic['age'] = titanic['age'].fillna(titanic['age'].mean())sns.distplot(titanic['age'])
年龄呈正态分布,用年龄的均值进行缺失值的填充,再对年龄分布可视化。
sns.countplot(x="embarked",data=titanic) #绘制类别计数柱状图
titanic['embarked'] = titanic['embarked'].fillna('S')titanic.isnull().sum()
利用正确的登船地点S进行缺失值填充。
titanic.head()
titanic = titanic.drop(['survived','pclass','sibsp','parch','who','adult_male','deck','embark_town'],axis=1)titanic.head() #删除多余的字段,数据清洗

四、数据探索

  


sns.countplot(x="sex",data=titanic)
由上图可以看出,男性乘客比女性乘客多。
sns.boxplot(x='sex',y='age',data=titanic)
由上图可看出,男性与女性的年龄分布很相近,但女性乘客的年龄跨度更大一点。
sns.countplot(x="class",data=titanic)
对于船舱等级计数,第三级船舱数量最多。
sns.violinplot(x="class", y="age", data=titanic)
结合船舱等级,绘制乘客年龄分布箱线图,头等舱的年龄跨度较大,第三级船舱的中年人分布最多。
sns.countplot(x="alone",data=titanic)
对alone字段计数,单独的乘客数量更多一些。
sns.countplot(x="alive",data=titanic)
对生还字段可视化,未生还的乘客人数更多一些。
sns.countplot(x='alive',hue='sex',data=titanic)
hue='sex'添加性别变量,生还中女性占大多数。
g = sns.FacetGrid(titanic, col='sex') #利用网格技术g.map(sns.countplot, 'alive') #不同性别生还情况
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() #年龄等级
sns.countplot(x='age_level',data=titanic)
分级年龄可视化,成年人乘客数量占比很大,小孩和年长者占比很小。
sns.countplot(x='alive',hue='age_level',data=titanic)
乘客年龄与生还关系,乘客年龄与生还乘客之间的关系并不明显,小孩的生还几率比较大,老人却相对较小。
g = sns.FacetGrid(titanic, col='class', row='alone') #网格技术g.map(sns.countplot, 'alive')
乘客舱位等级越高,生还的可能性越大,单独的乘客生还的几率也更大一些。

话说今年的情人节
你是如何度过的
对于小编这种单身狗来说
只能一个人过了
好在还有广大的粉丝
写写文章、研究研究数据分析

生活过的也不是太单调


点击下面链接 查看历史文章

Python实战—地图可视化

Python实战—小费数据集应用

Python实战—七夕节表白神器

【声明】内容源于网络
0
0
大话数据分析
数据分析的收集者、整理者、分享者、实践者
内容 408
粉丝 0
大话数据分析 数据分析的收集者、整理者、分享者、实践者
总阅读27
粉丝0
内容408