ステップ4:誰が生き残ったのかを調べる

🎯 このステップでやること「女性は助かったのでは?」という仮説を、データで確かめる。所要時間:約8分。この章でいちばん面白いところです。


4-1. 性別で生存率を比べる

映画『タイタニック』では、救命ボートに 「女性と子どもが先」 と叫ぶ場面がありました。本当にそうだったのか、データに聞いてみます。

📋 コード

train.groupby("Sex")["Survived"].mean()

✅ こう出れば成功

Sex
female    0.742038
male      0.188908
Name: Survived, dtype: float64

読み方:

性別生存率
female(女性)74.2%
male(男性)18.9%

🎯 4倍近い差です。 史実が、111年越しにデータから裏付けられました。この瞬間の感覚が、Kaggleの本体です。 スコアでも順位でもなく、「データが何かを教えてくれる」この瞬間です。

4-2. 客室の等級で比べる

📋 コード

train.groupby("Pclass")["Survived"].mean()

✅ こう出れば成功

Pclass
1    0.629630
2    0.472826
3    0.242363
Name: Survived, dtype: float64
等級生存率
1(一等・富裕層)63.0%
2(二等)47.3%
3(三等)24.2%

等級が下がるほど、生存率が下がっています。 救命ボートは上層デッキにあり、三等船室は船底に近かった、という史実と一致します。

4-3. 性別と等級を組み合わせる

📋 コード

train.groupby(["Sex", "Pclass"])["Survived"].mean()

✅ こう出れば成功

Sex     Pclass
female  1         0.968085
        2         0.921053
        3         0.500000
male    1         0.368852
        2         0.157407
        3         0.135447
Name: Survived, dtype: float64

一等客室の女性は96.8%が生存。三等客室の男性は13.5%しか生存していません。同じ船に乗っていて、ここまで差がつく。これがデータを見るということです。

4-4. 年齢を見る

📋 コード

train.groupby("Survived")["Age"].mean()

✅ こう出れば成功死亡者の平均年齢が約30.6歳、生存者が約28.3歳。差はわずかです。

💡 平均だけ見ると「年齢は効かない」ように見えます。でも「子どもは優先された」はずです。平均は、こういう部分的な効果を隠してしまいます。

📋 コード(子どもだけ取り出して確かめる)

child = train[train["Age"] < 10]
print("10歳未満の人数:", len(child))
print("10歳未満の生存率:", child["Survived"].mean())

✅ こう出れば成功 10歳未満は62人、生存率は 約61%。全体の38%より、はっきり高いです。

「平均では見えない差が、区切って見ると現れる」 ── これが特徴量エンジニアリング(ステップ11でやります)の出発点です。

4-5. グラフで見る(おまけ・やらなくてOK)

📋 コード

import matplotlib.pyplot as plt
import seaborn as sns

sns.histplot(data=train, x="Age", hue="Survived", bins=30, multiple="stack")
plt.show()

年齢ごとの生存・死亡の積み上げグラフが出ます。左端(幼児)だけ、生存の色の比率が高いことが目で見てわかります。

⚠️ グラフが出なくても先に進めます。この章ではグラフは使いません。


💡 何をしたのか(読み飛ばし可)

いまやった作業には名前があります。EDA(探索的データ分析) といいます。

EDA = データを眺めて、「何が効きそうか」の当たりをつける作業。

使ったコードの形は、たった1つです。

train.groupby("Embarked")["Survived"].mean()

これは「その列の値ごとに、生存率の平均を出せ」という命令です。"Embarked" の部分を "SibSp" や "Parch" に変えれば、他の列もすぐ調べられます。試してみてください。

いまわかったこと(まとめ)

列効きそうか
Sex◎ 非常に強い(74% vs 19%)
Pclass◎ 強い(63% → 24%)
Age○ 子どもだけ効く
SibSp / Parch△ 家族構成として効きそう
Fare○ Pclassと似た傾向
Cabin✕ 8割が空欄
Name / Ticket△ 加工すれば使える(ステップ11)

この表が、次からの作業の設計図になります。


✅ ここまでできたら

次のステップで、ついに提出ファイルを作ります。 しかも機械学習なしで、たった5行で。