Исходный размер 1140x1834

Титаник — анализ пассажиров

PROTECT STATUS: not protected

ВВЕДЕНИЕ

В последнее время мне всё чаще стала интересна тема «Титаника». Возможно, из-за феномена Баадера — Майнхофа я стал замечать его упоминание в разных элементах массовой культуры, а также в обычных диалогах с друзьями.

Вот и в этот раз, при поиске определённых данных для анализа, я нашёл информацию о пассажирах «Титаника».

big
Исходный размер 960x620

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

Сайт https://hubofdata.ru/dataset/titanic

Загрузка данных и обработка

В коде использованы библиотеки pandas, matplotlib.pyplot и seaborn

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns

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

url = "https://hubofdata.ru/dataset/ca6d4c26-ea00-432d-b0d7-1c29d34a991f/resource/8de4874e-0d72-4a24-bc3d-f80f239385e2/download/train.csv" data = pd.read_csv(url)

Просмотр первых строк данных

print(data.head())

Проверка на пропущенные значения

print(data.isnull().sum())

Заполнение пропущенных значений в столбце 'Age' медианным значением

data['Age'].fillna(data['Age'].median(), inplace=True)

Удаление строк с пропущенными значениями в столбце 'Embarked'

data.dropna(subset=['Embarked'], inplace=True)

Рисуем диаграммы

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

plt.figure(figsize=(10, 6)) sns.histplot(data['Age'], bins=30, kde=True, color='blue') plt.title('Распределение возрастов пассажиров') plt.xlabel('Возраст') plt.ylabel('Количество пассажиров') plt.show()

Исходный размер 1452x824

Столбчатая диаграмма. Распределение возрастов пассажиров.

На графике виден яркий пик. Интересно, что больше всего людей на «Титанике» было в возрасте около 28 лет. Вероятно, это тот возраст, в котором уже можно спокойно путешествовать, если имеешь средства для этого.

Также, возможно, многие пассажиры третьего класса в этом возрасте ехали на заработки в Америку.

2. Количество выживших и погибших в зависимости от пола

plt.figure(figsize=(8, 6)) sns.countplot(x='Sex', hue='Survived', data=data, palette='Set2') plt.title('Выживаемость по полу') plt.xlabel('Пол') plt.ylabel('Количество пассажиров') plt.legend(['Погибшие', 'Выжившие']) plt.show()

Исходный размер 1104x824

Гистограмма. Выживаемость по полу.

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

3. Распределение пассажиров по классам кают

plt.figure(figsize=(8, 6)) data['Pclass'].value_counts().plot(kind='pie', autopct='%1.1f%%', colors=['gold', 'lightcoral', 'lightgreen']) plt.title('Распределение пассажиров по классам кают') plt.ylabel('') plt.show()

Исходный размер 786x722

Круговая диаграмма. Распределение пассажиров по классам кают.

В данном случае, распределение пассажиров по классам представлено выше. Интересно, что в сумме пассажиров 2-го и 1-го класса около 45%.

4. Зависимость выживаемости от класса каюты

plt.figure(figsize=(10, 6)) sns.countplot(x='Pclass', hue='Survived', data=data, palette='Set2') plt.title('Зависимость выживаемости от класса каюты', fontsize=16) plt.xlabel('Класс каюты', fontsize=14) plt.ylabel('Количество пассажиров', fontsize=14) plt.legend(['Погибшие', 'Выжившие'], title='Выживаемость', fontsize=12) plt.xticks([0, 1, 2], ['1 класс', '2 класс', '3 класс'], fontsize=12) plt.grid(axis='y', linestyle='--', alpha=0.7) plt.show()

Исходный размер 1328x852

Зависимость выживаемости от класса каюты

Как известно, пассажиры 3-го класса дальше всех были расположены от шлюпок. Следовательно, им сложнее было добраться до спасательных средств.

Исходный размер 602x389

Каюта третьего класса

Заключение

Этот анализ оказался весьма интересным. В целом, он подтвердил мои догадки, но также дал возможность узнать что-то новое в этой теме.

Исходный размер 900x600
Титаник — анализ пассажиров
Проект создан 19.03.2025