ステップ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行で。