Исходный размер 1024x1434

Titanic Dataset: закономерности выживания

PROTECT STATUS: not protected

«Титаник» — крупнейший пассажирский лайнер начала XX века, который в ночь с 14 на 15 апреля 1912 года столкнулся с айсбергом и затонул в Северной Атлантике, унеся жизни более 1500 человек.

Введение

Тема Титаника — это не просто исторический факт или сюжет известного фильма. Для меня этот корабль и его трагедия имеют особое значение. Первый раз фильм «Титаник» я посмотрела уже в осознанном возрасте, когда могла не только воспринимать эмоции, но и задумываться над происходящим. И, хотя многие ожидают, что после просмотра вызовут слёзы, меня он тронул скорее глубиной размышлений.

История Титаника — это история о человеческих судьбах, социальных различиях, выборе и случайности. Анализ данных о пассажирах позволяет взглянуть на трагедию с другой стороны — через призму цифр и фактов, понять, какие факторы действительно влияли на выживаемость, и сделать выводы, которые выходят за рамки эмоций.

Этот проект — попытка соединить личное впечатление с объективным исследованием, используя современные инструменты анализа данных. Важно не только помнить о трагедии, но и учиться на её уроках, видеть закономерности и понимать, как социальные и демографические факторы влияют на исходы в экстремальных ситуациях.

big
Исходный размер 1920x1080

Изображение сгенерировано с помощью нейросети leonardo.ai Промпт: A realistic scene inside the passenger liner Titanic at the moment of iceberg collision at night: people in panic, fear and confusio

Для меня этот анализ важен не только с точки зрения технической работы с данными, но и как возможность глубже понять человеческие истории, стоящие за цифрами. Это помогает осознать, как разные обстоятельства влияли на судьбы людей, и учит ценить значимость анализа данных для понимания сложных исторических событий и принятия решений в будущем.

Именно поэтому для анализа данных я выбрала датасет о пассажирах Титаника с сайта https://www.kaggle.com/c/titanic/data. Он включает информацию о возрасте, поле, социальном классе, стоимости билетов, количестве родственников на борту и факте выживания.

Данные я решила представить с помощью четырёх видов графиков: столбчатые диаграммы для категориальных данных (например, пол и класс), линейные графики для анализа временных трендов (например, распределение по возрасту), график рассеяния для изучения корреляции между возрастом и вероятностью выживания, а также круговые диаграммы для отображения распределения пассажиров по категориям.

Этапы работы

Загрузка данных

Для начала я импортировала необходимые библиотеки: pandas для анализа, matplotlib и seaborn для визуализации. Затем загрузила датасет train.csv и сразу перевела значения в столбце пола на русский язык для удобства восприятия графиков.

Исходный размер 1920x1080

Визуализация данных

В блоке "настройка визуализации" я создаю единый стиль для всех графиков проекта, чтобы визуализации выглядели современно, были легко читаемыми и гармонично сочетались между собой. Для этого я использую несколько специальных команд:

plt.style.use('dark_background') — эта команда задаёт тёмный фон для всех графиков, благодаря чему цвета выглядят более насыщенно, а данные — более контрастно и выразительно.

plt.rcParams['font.family'] = 'DejaVu Sans' — здесь я выбираю шрифт DejaVu Sans для всех подписей и заголовков на графиках. Этот шрифт современный, хорошо читается и поддерживает кириллицу, что важно для русскоязычных подписей.

sns.set_palette('bright') — эта команда устанавливает яркую цветовую палитру для всех элементов графиков, создаваемых с помощью библиотеки seaborn. Яркие цвета делают визуализации более привлекательными и позволяют легко различать разные категории данных на графиках.

Таким образом, с помощью этих команд я заранее задаю стиль, шрифт и цветовую палитру, чтобы все визуализации в проекте были выполнены в единой эстетике, выглядели аккуратно, современно и были удобны для восприятия.

Исходный размер 1920x1080

Анализ данных

Выживаемость по полу

В блоке "выживаемость по полу" я анализирую, как различается доля выживших среди мужчин и женщин на Титанике.

Сначала я группирую данные по признаку пола (Sex) и для каждой группы вычисляю среднее значение в столбце Survived — это и есть доля выживших среди мужчин и женщин. Затем строю столбчатую диаграмму с помощью команды sns.barplot(x='Sex', y='Survived', data=df): по оси X откладывается пол, а по оси Y — доля выживших. Я добавляю заголовок графика (plt.title('Выживаемость по полу')) и подписи осей (plt.xlabel('Пол'), plt.ylabel('Доля выживших')), чтобы график был информативным и легко читаемым. Команда plt.show() выводит готовую визуализацию.

Этот график позволяет быстро увидеть, что женщины имели значительно больше шансов на спасение по сравнению с мужчинами, что отражает социальные особенности эвакуации на Титанике.

Исходный размер 1920x1080

Распределение возраста

В блоке "распределение возраста" я исследую, как распределён возраст пассажиров Титаника, чтобы понять, какие возрастные группы были наиболее представлены на борту и могли ли они влиять на шансы выжить. Для этого я использую гистограмму — график, который показывает, сколько пассажиров приходится на каждый возрастной интервал.

Сначала я выбираю столбец Age из датасета, который содержит возраст всех пассажиров.

Этот график позволяет увидеть, в каких возрастных группах было больше всего пассажиров, а также выявить, были ли на борту дети, молодёжь или пожилые люди. Анализ распределения возраста помогает выявить потенциальные группы риска и понять, как возраст мог влиять на вероятность выживания на Титанике.

Исходный размер 1920x1080

Доля выживших и погибших

В блоке "доля выживших и погибших" я анализирую общее распределение пассажиров Титаника по факту выживания.

Я подсчитываю количество выживших и погибших с помощью команды df['Survived'].value_counts().

Становится очевидно, что выжила лишь небольшая часть пассажиров, а большинство, к сожалению, погибло. Такой способ представления информации сразу даёт зрителю общее представление о трагедии и служит хорошим вступлением к более детальному анализу факторов выживания.

Исходный размер 1920x1080

Выживаемость по классам

В блоке "выживаемость по классам" я подробно анализирую, как класс билета влиял на шансы пассажиров Титаника выжить. Для этого сначала работаю с таблицей данных: использую столбец Pclass, который обозначает класс билета (1, 2 или 3), и столбец Survived, где указано, выжил пассажир или нет (1 — выжил, 0 — погиб).

Сначала я группирую таблицу по столбцу Pclass с помощью метода groupby, чтобы объединить всех пассажиров одного класса в отдельные группы. Затем для каждой группы рассчитываю среднее значение по столбцу Survived — это и есть доля выживших в каждом классе. Например, если в первом классе 100 пассажиров, из которых 60 выжили, то среднее значение будет 0.6

Исходный размер 1920x1080

Корреляция между признаками

В блоке "корреляция между признаками" я исследую, как различные числовые характеристики пассажиров Титаника связаны между собой, чтобы выявить факторы, которые могли оказывать влияние на выживаемость. Для этого я работаю с таблицей данных следующим образом:

Сначала из всего датасета выбираются только числовые столбцы, такие как возраст (Age), класс билета (Pclass), стоимость билета (Fare), количество братьев/сестёр и родителей/детей на борту (SibSp, Parch), а также бинарные признаки, например, пол (если он был предварительно закодирован числом) и сам факт выживания (Survived). Это делается автоматически при помощи метода .corr(numeric_only=True), который строит корреляционную матрицу только по числовым данным1.

Исходный размер 1920x1080

Итоговые графики

Titanic Dataset: закономерности выживания
Проект создан 02.07.2025