然而不幸的是本節使用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 inlinetitanic = sns.load_dataset("titanic")titanic.head() titanic.isnull().sum() #查看是否具有缺失值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()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)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) 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')乘客艙位等級越高,生還的可能性越大,單獨的乘客生還的機率也更大一些。只能一個人過了
好在還有廣大的粉絲