
ゆうき( @BASEBALLY15 )です^^
UdemyでのPythonの学習も後半戦に突入しました.
学習した内容を使って,『タイタニッック号』のデータを分析して欲しいです・・・
任せてください!
(Udemy 『実践Pythonデータサイエンス』を参考,Jupiternotebookを使用)

タイタニックとは?
処女航海中の1912年4月14日深夜、北大西洋上で氷山に接触、翌日未明にかけて沈没した。犠牲者数は乗員乗客合わせて1,513人(ほかに1,490人、1,517人、1,522または1,523人、1,609人などさまざまな説がある)であり、戦時中に沈没した船舶を除くと20世紀最大の海難事故であった[1]。
引用元:Wikipedia
学習内容
今回は,以下のcsvファイルを使って,データ分析を行いたいと思います.
保存する際は,『名前を付けて保存』で,Jupiternotebookと同じディレクトリに保存してください.
ライブラリ
今回のデータ分析で使うライブラリは,今まで使ってきたものと同じです.
それでは,見ていきましょう^^
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
コード
まずは,train.csvを読み込みます.
#csvファイルの読み込み
titanic_dframe = pd.read_csv("train.csv")
#実行
titanic_dframe.head()
すると,以下の表が表示されます.
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S |
1 | 2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th… | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
2 | 3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S |
3 | 4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S |
4 | 5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S |
そして,この表の中から,男女ごとの生存した方と,亡くなった方の人数をグラフに表示したいと思います.
『0』が亡くなった方で,『1』が生存した方を表しています.
sns.countplot("Survived",data=titanic_dframe,hue="Sex")

このグラフを見ると,男性で亡くなった方が圧倒的に多いことが読み取れます.
おそらく,女性を優先して救助していたからではないでしょうか?
次に,タイタニック号に乗っていた乗客の年齢層を調べてみましょう.
ヒストグラムを使うと,年齢層を調べることが出来ます.
titanic_dframe["Age"].hist(bins=100)

このグラフから,主に20代から30代の方が多いことが分かります.
また,以外にも,10歳以下も多く,家族で乗っていた人が多かったのだと思います.
titanic_dframe.describe().Age #年齢ごとの平均や最小値,最大値などを表示
count 714.000000
mean 29.699118
std 14.526497
min 0.420000
25% 20.125000
50% 28.000000
75% 38.000000
max 80.000000
次に,カーネル密度推定を使って,『Survived』と『Age』の関係性を見ていこうと思います.
#FacetGrid()は,一つのプロットの中に,複数のプロットを表示できる
fig = sns.FacetGrid(titanic_dframe,hue="Survived",aspect=4)
#Ageに関して,カーネル密度関数を表示する.shadeは影があるかどうか
fig.map(sns.kdeplot,"Age",shade=True)
#最高齢を決めておく
oldest=titanic_dframe.Age.max()
#x軸の範囲を決めておく
fig.set(xlim=(0,oldest))
#legendで凡例を表示させる
fig.add_legend()

カーネル密度推定は,あくまで,推定を行っているので,
年齢がマイナスやかなり高い値になることがあります.
そこで,以下のコードで最大値と最小値を予め指定しておきます.
#最高齢を決めておく
oldest=titanic_dframe.Age.max()
#x軸の範囲を決めておく
fig.set(xlim=(0,oldest))
このグラフから,10歳以下の生存率が高いことが分かります.
女性と一緒に助けられたからではないかと思います.
終わりに
今回は,タイタニック号に乗っていた乗客についてデータ分析を行ってみました.
タイタニック号の事故は映画になっていますが,今回の様に,
データ分析を行ったうえで見ると,見方が変わるのではないでしょうか?