Pythonによるデータ分析② タイタニックの生存予測をしよう!



タイタニックの生存予測をしたいけど、まず何をやればいいのかわからないよ!

この記事では、Python初心者でもできるように、タイタニック生存予測をレクチャーしていきます!

記事にでてくるコードは配布しております。下記LINE@からダウンロードください。

メッセージにて、「データ分析」とお送りいただければダウンロードができます。

友だち追加

このシリーズを読むとわかること

  • Python初心者でも、そもそもデータ分析とはなにかざっくり理解する
  • ランダムフォレストを用いて、タイタニックの生存予測を分析することができる

今回は、

  • タイタニックの生存データを把握する
  • データ処理を処理しデータを確認する

という流れをサンプルコードとともに解説をします!

第2回以降では、実際にタイタニック号の生存予測を行い、データ分析の一連の流れを学んでいきます!

その中でも今回は、データの加工やデータ分析の前におこなう、「データの現状の把握」をメインに行います。

なぜなら、データの加工や分析をするにはまずどういったデータなのかを把握しないと、正しくない加工の仕方をしてしまったり予測精度に影響を及ぼしてしまうかです。

例えば、課題のタイタニックの生存予測ですと、欠けているデータが非常に多く加工の重要度が高いです。

なので、データを現状把握しどういった加工方法をすればいいのかを考える必要性があります。

そのようなことを本記事で一緒に学んでいきましょう!!

タイタニック号の生存データを把握しよう!

タイタニック

分析するデータを読みこむ

まずは、下記のLINE@から「データ分析第2回」のファイルと「csv_data」のフォルダをダウンロードします。

メッセージにて、「データ分析」とお送りいただければダウンロードができます。

友だち追加 フォルダ

データ分析のファイルのコードを実行し、ファイルデータを読み込みます。

python コード python コード

今回読み込むタイタニック号のデータは以下のようなデータです。

python データ

これをみると、891人(行)の生存データがあることがわかります。

ためしにデータの生存割合をみる

次に、ためしに891人の生存割合を見ていきましょう!

今回は例として、客室のクラス(階級)によって生存割合がどう変わるのかをみていきます。

予想は、下記です。

「客室のクラスが高い = お金持ちがいる」⇛ その分、生存可能性が高くなるのでは?

実際に下記のようなコードを書き、積み上げ棒グラフを表示させましょう!

積み上げ棒グラフとは

棒グラフの一種で、同じ項目内の要素を上に積み上げようにして表現されたグラフ

python コード 積み上げ棒グラフ

このグラフはX軸が客室のクラスで、Y軸が人数を表しています。

加えて、その中でもオレンジ色が生存者、青色が志望者を表しています。

グラフをみると、意外にも生存割合が客室クラスの良し悪し関係ないことがわかります。

why
このように、予想と結果が違うことがデータ分析の面白味なのかも知れないね!



データを処理し生存データを確認しよう!

この章では、データをなんとなく把握した上で、分析をするためのデータ処理を行い、再度データを確認します!

ここでのデータ処理では、以下の2つことを行います!

  1. 欠損値があるデータを処理(削除・穴埋め)する
  2. 必要であればダミー変数を用いてデータを置き換える

1, 2の順に用語も含めた説明をします。

1は、欠損値のあるデータを削除したり穴埋めを行います。

欠損値とは

無回答や非該当など、集計から除去すべき値。

今回の場合ですと、タイタニック号のチケットから生存データを作られたましたが、チケットの回答必須ではない部分はどうしても欠損値が生まれてしまいます。

そこで、欠損値があるデータの行または列を削除したり、欠損値を別の値で穴埋めしたりし処理を行います。

2では、性別などの数値ではない定性的な情報に関しては、ダミー変数を用いてデータを置き換えていきます。

ダミー変数とは

性別や国といった数値ではない情報(変数)を数字に変換する手法のこと。具体的には、数字ではないデータを「0」と「1」だけに変換。

ダミー変数は、例えば「男性→0」「女性→1」という具合に、文字列を数値に変換し、分析をする際0,1で変化があるかみる際に用いられます。

タイタニック号では、女性や子供が優先的に助けられた話がありますので、本当にそうなのか性別を分析したいため使います!

下記のようなコードを書き、性別をダミー変数に書き換えたり、欠損値をもつ行を削除します。

python コード python コード

結果を表示すると、891人(行)から183人(行)に大幅に削減されてしまっていることがわかります。

加えて、183人(行)での生存割合の積み上げ棒グラフをみてみましょう。

python コード

実際にグラフをみますと、891人(行)でのデータと形が大分違います。

この場合、人数が多い(データ数が多い)方がもともとのデータのことを反映しているので、人数が少ないまま分析するのは正確な予想をすることがその分難しくなってしまいます。

そのため、削除方法を再度考える必要があります。

再度データ処理をおこなう

先ほどデータ処理をしたところ、データを削減しすぎてしまいました。

それを踏まえて、データを削除しすぎないようデータ処理を行っていきます。

削除しすぎないように、データ処理をおこなうポイントとしては以下の2点が挙げられます。

  1. 行(人数)を削除せず、なるべく予測と関係データ列から削除をおこなう
  2. 欠損値があるデータ列を確認し、削除するべきか穴埋めすべきなのか考える

1, 2の順に用語も含めた説明をします。

1は、要するに生存データの数を減らないようにするということです。

データを減らさないようにするには、まずは予測と関係ないデータを削除し、関係ないデータに含まれる欠損値なども一気に削除します。

これをすることで、分析する際に考えるべきことを減らすことにつながります。

2は、欠損値がどのデータにあるか確認し、そのデータに合わせた処理の方法を考える、ということです。

欠損値を埋めるとしても、年齢や所得など様々なデータの欠損値があるので、それに合わせた処理をしなくては、予測精度に影響を及ぼしてしまうからです。

実際のデータをもとに上記のことをおこなってみます。

性別をダミー変数に置き換えたり、CabinやNameといった生存確率に影響を及ぼさないデータ列を削除します。

python コード python コード

891人(行)のままデータを削除しました!

加えて、積み上げ棒グラフも表示させていきます!

python コード

こちらも最初とおなじような生存割合になっています!

加えて、今回は年齢が生存に影響を及ぼしているかみてみます!

python コード

こちらをみると、たしかに若い世代のほうが生存割合が多い印象です。

最後に、次回の詳細なデータ処理をするために、現在の欠損値の個数を確認します。

python コード

これをみると、年齢のデータに欠損値が多いことがわかります。

次回に、こうした欠損値を穴埋めしたり削除したりしていきます!



まとめ

今回は、

        • タイタニックの生存データを把握する
        • データ処理を処理しデータを確認する

        という流れをサンプルコードとともに解説をしました!

        次回は、実際に予測に向けたデータの前処理をおこなっていきます!

        実は、今回おこなったデータ処理はほんの一部です。

        タイタニックの生存データの処理はより色んなことをおこなっていきますので、是非マスターしていきましょう!

        記事にでてくるコードはLINE@にて配布をしております!
        LINEのメッセージ欄に「データ分析」とお送りいただければ、ダウンロードリンクを送付いたします!

        コード配布はLINE@にて!

        友だち追加

        コメントを残す

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

        CAPTCHA