ゆうき( @BASEBALLY15 )です^^

データ分析の勉強をしているのですが,何か分析するものはないですかね・・・

自分自身, 今まで,Udemyの動画で学習したので,それを応用させた課題に取り組もうと思います.

今回は,タイタニック事故のデータを用いて,生死を分けた要因について,分析しようと思います^^

分析で用いたデータ

データ分析では,このcsvファイルを用います.

PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedcabin_first_nameFamilyFamily_yes_no
01no3Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS3.011
12yes1Cumings, Mrs. John Bradley (Florence Briggs Th…female38.010PC 1759971.2833C85C3.011
23yes3Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS5.000
34yes1Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S7.011
45no3Allen, Mr. William Henrymale35.0003734508.0500NaNS3.000

タイタニックに乗っていた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
0C
1C
2E
3G
4C

そして,titanic_dframeに”Cabin”の頭文字を追加したいと思います.

#titanic_dframeの表に"cabin_first_name"を追加する.(Cabinの頭文字)
titanic_dframe["cabin_first_name"] = cabin_dframe

#実行
titanic_dframe

すると,このように表示され,一番右に,”Cabin”の頭文字が追加されています.

PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedcabin_first_name
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNSC
1211Cumings, Mrs. John Bradley (Florence Briggs Th…female38.010PC 1759971.2833C85CC
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNSE
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123SG
4503Allen, Mr. William Henrymale35.0003734508.0500NaNSC

次に,”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

すると以下の表が完成します.

PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedcabin_first_nameFamily
01no3Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS3.01
12yes1Cumings, Mrs. John Bradley (Florence Briggs Th…female38.010PC 1759971.2833C85C3.01
23yes3Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS5.00
34yes1Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S7.01
45no3Allen, Mr. William Henrymale35.0003734508.0500NaNS3.00

一番,右の項目に”Family”が追加され,家族の人数が表示さています.

そして,家族連れと生存率の関係性についてグラフを表示させたいと思います.

sns.countplot("Family",data=titanic_dframe,hue="Survived")
家族連れと生存率の関係性

結果

このグラフから,一人で来ていた方の生存率が最も低いことが分かりました.

10人で来ていた人は,そもそも少ないでしょうから,その生存者が少ないのも当然ですね^^

終わりに

今回は,タイタニックの事故について,データ分析を行いました.

今後も,プロダクトを投稿していくので,

楽しみにしていてください^^

Q &A

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA