
ゆうき( @BASEBALLY15 )です^^
データ分析の勉強をしているのですが,何か分析するものはないですかね・・・
自分自身, 今まで,Udemyの動画で学習したので,それを応用させた課題に取り組もうと思います.
今回は,タイタニック事故のデータを用いて,生死を分けた要因について,分析しようと思います^^

分析で用いたデータ
データ分析では,このcsvファイルを用います.
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | cabin_first_name | Family | Family_yes_no | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | no | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S | 3.0 | 1 | 1 |
1 | 2 | yes | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th… | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C | 3.0 | 1 | 1 |
2 | 3 | yes | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S | 5.0 | 0 | 0 |
3 | 4 | yes | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S | 7.0 | 1 | 1 |
4 | 5 | no | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S | 3.0 | 0 | 0 |
タイタニックに乗っていた891人のデータを使い,以下の項目について分析しました.
- PassengerID: 乗客ID
- Survived: 生存結果 (0: 死亡,1:生存)
- Pclass: 乗客の階級 1が一番位が高い
- Name: 乗客の名前
- Sex: 性別
- Age: 年齢
- SibSp 兄弟、配偶者の数。
- Parch 両親、子供の数。
- Ticket チケット番号。
- Fare 乗船料金。
- Cabin 部屋番号
- Embarked 乗船した港
ライブラリと準備
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
#csvファイルの読み込み
titanic_dframe = pd.read_csv("train.csv")
分析課題1-乗客がいたデッキと生存者の関係性-
まず,”Cabin”の項目から,頭文字を取り除く作業を行います.
#"Cabin"のデータからNaNのデータを取り除く
deck = titanic_dframe.Cabin.dropna()
#"Cabin"から頭文字だけを取り出す
#空の箱を用意する
numbers = []
for number in deck:
#"Cabin"のデータから,頭文字のみを取り出す
numbers.append(number[0])
#データフレーム化する
cabin_dframe = DataFrame(numbers)
#cabin_dframeのカラムを"Cabin"と名付ける
cabin_dframe.columns =["Cabin"]
#実行
cabin_dframe
すると,以下の表が表示されます.
Cabin | |
---|---|
0 | C |
1 | C |
2 | E |
3 | G |
4 | C |
そして,titanic_dframeに”Cabin”の頭文字を追加したいと思います.
#titanic_dframeの表に"cabin_first_name"を追加する.(Cabinの頭文字)
titanic_dframe["cabin_first_name"] = cabin_dframe
#実行
titanic_dframe
すると,このように表示され,一番右に,”Cabin”の頭文字が追加されています.
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | cabin_first_name | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S | C |
1 | 2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th… | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C | C |
2 | 3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S | E |
3 | 4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S | G |
4 | 5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S | C |
次に,”Survived”が0の時,つまり亡くなった方の場合を”no”と表示し,
1の時つまり,生存した方の場合を”yes”と表示します.
#生存者と死者の数
titanic_dframe.Survived = titanic_dframe.Survived.map({0:"no",1:"yes"})
#実行
titanic_dframe.Survived
そして,デッキと生存率の関係性とグラフに表してみると・・・
#乗客のいたデッキと生存率の関係性についてグラフを表示する
#アルファベットを数字に変換
titanic_dframe.cabin_first_name = titanic_dframe.cabin_first_name.map({"A":1,"B":2,"C":3,"D":4,"E":5,"F":6,"G":7})
#実行
sns.countplot("cabin_first_name",data=titanic_dframe,hue="Survived")

結果
下のデッキの方が,早くに沈むので,下にいた人の方が生存率が低いと予想していましたが,
以外にも,真ん中のデッキにいた人が最も,生存率が低いことが分かりました.
分析課題2-家族連れと生存者の関係性-
家族連れの人を表示させたいので,”SibSp“と”Parch“の人数を足した値を,
新たに表示させたいと思います
#家族連れであることと,生還率の関係を調べる
titanic_dframe["Family"] = titanic_dframe["SibSp"] + titanic_dframe["Parch"]
#実行
titanic_dframe
すると以下の表が完成します.
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | cabin_first_name | Family | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | no | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S | 3.0 | 1 |
1 | 2 | yes | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th… | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C | 3.0 | 1 |
2 | 3 | yes | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S | 5.0 | 0 |
3 | 4 | yes | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S | 7.0 | 1 |
4 | 5 | no | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S | 3.0 | 0 |
一番,右の項目に”Family”が追加され,家族の人数が表示さています.
そして,家族連れと生存率の関係性についてグラフを表示させたいと思います.
sns.countplot("Family",data=titanic_dframe,hue="Survived")

結果
このグラフから,一人で来ていた方の生存率が最も低いことが分かりました.
10人で来ていた人は,そもそも少ないでしょうから,その生存者が少ないのも当然ですね^^
終わりに
今回は,タイタニックの事故について,データ分析を行いました.
今後も,プロダクトを投稿していくので,
楽しみにしていてください^^