Почему именно Titanic
Представьте: одна ночь меняет судьбы тысяч людей. Билет 1-го класса или трюм 3-го? Женщина или мужчина? 25 лет или 60? Какие факторы решали — шлюпка или ледяная вода? Этот датасет — капсула времени 1912 года: классовое неравенство, морские традиции, волна европейской миграции в Америку. Цифры оживают, когда за ними стоят реальные истории миллионера Астора и сироты Хелен Ларсон. Идеальный кейс, где data science встречает историю.
Данные и источники
Я выбрала датасет Titanic из библиотеки Seaborn (sns.load_dataset ('titanic')) — 891 запись о пассажирах: survived (0/1), pclass (1-3), sex, age, sibsp, parch, fare, embarked, who, adult_male, deck, embark_town, alive, alone. Данные основаны на исторических записях катастрофы 15 апреля 1912 года, доступны в Kaggle, UCI ML Repository и Seaborn.
Выбор типов графиков
• Столбчатые диаграммы (графики 1,2,4): мгновенное сравнение категорий • Гистограмма (график 3): портрет пассажиров через возраст

Этапы работы
- Предобработка данных
python import seaborn as sns import pandas as pd df = sns.load_dataset('titanic') # 891 строк df['age'] = df['age'].fillna(df['age'].median()) # 177 пропусков → медиана 28 лет
- Стилизация графиков
Цветовая схема: • #FF6B6B (красный) — риск, гибель • #FFD166 (желтый) — средний риск • #4ECDC4 (бирюзовый) — спасение • #1A535C (темно-синий) — океан, мужчины Параметры: figsize=(8,5), dpi=100, четкие границы, академическая сетка.
График 1: Процент выживаемости
Объяснение: value_counts() считает 0/1, plt.bar() строит столбцы, savefig() сохраняет PNG.
Этот столбчатый график показывает абсолютное распределение выживших и погибших: из 891 пассажира выжило 342 человека (38%), а 549 — нет (62%). Красный столбец "Не выжил" доминирует, подчеркивая трагический масштаб катастрофы — более половины людей не дожили до спасения. Анализ выявляет низкую общую выживаемость, типичную для внезапной аварии без достаточных шлюпок (лишь на 1178 мест при 2224 пассажирах и экипаже). Это базовый инсайт, задающий контекст для дальнейшего разбора: дальнейшие графики покажут, кто имел преимущество в доступе к спасению.
График 2: Выживаемость по классу билета
Столбчатая диаграмма иллюстрирует долю выживших по классам: 1-й класс — ~63%, 2-й — ~47%, 3-й — всего ~25%. Градиент цветов от красного (низкая выживаемость) к зеленому (высокая) подчеркивает социальное неравенство. Анализ подтверждает приоритет элите: пассажиры 1-го класса располагались ближе к шлюпкам на верхних палубах, имели влияние на офицеров и лучше понимали инструкции. В 3-м классе (нижние палубы, иммигранты) барьеры и хаос снижали шансы — это отражает классовую структуру общества 1912 года.
График 3: Распределение возраста пассажиров
Гистограмма с 20 бинами показывает возрастной профиль: пик в 20–30 лет (молодые взрослые), средний возраст ~29,7 лет, диапазон от 0,4 до 80 лет. Распределение слегка правостороннее, с хвостом пожилых. Анализ указывает на типичную демографию трансатлантических рейсов: много трудоспособных мигрантов. Дети и пожилые составляют меньшинство, что влияет на выживаемость (женщины и дети первыми в шлюпки). Возраст коррелирует с классом — элита постарше, что усиливает их шансы.
График 4: Доля выживших по полу
Столбцы демонстрируют гендерный разрыв: женщины — 74% выживаемости, мужчины — лишь 19%. Синий для мужчин и красный для женщин визуально усиливают контраст. Анализ отражает политику "женщины и дети первыми": капитан Смит и офицеры следовали морскому этикету эпохи, спасая 74% женщин против 19% мужчин. Это спасло жизни, но выявило жертвенность мужчин (в основном рабочих 3-го класса). Фактор пола доминирует над классом в модели логистической регрессии.
Код выводит ключевые статистические показатели, чтобы быстро понять структуру данных и сделать первые выводы.
- Заголовок и оформление
"\n" — начинает вывод с новой строки. "="*50 — создает строку из 50 знаков "=" для визуального разделения. Это делает вывод в консоли аккуратным и читаемым.
- Базовая информация о пассажирах
len(df) — возвращает количество строк в DataFrame, то есть общее число пассажиров в наборе данных.
- Общая выживаемость
df['survived'] — столбец, где 1 означает "выжил", 0 — "не выжил". .mean() — для бинарных данных (0/1) среднее арифметическое равно доле единиц (то есть доле выживших). Умножаем на 100, чтобы получить проценты. :.1f — форматирование: вывести число с одним знаком после запятой.
Статистика по возрасту .mean(), .min(), .max() — стандартные статистические методы для числового столбца age. :.0f — форматирование без знаков после запятой (для целых лет).
Выживаемость по полу (ключевой фактор!)
Логика фильтрации: df[df['sex']=='female'] — создает "подтаблицу" (DataFrame), в которой остались только женщины. Затем для этой подтаблицы берется столбец ['survived'] и считается его среднее .mean(), что дает долю выживших среди женщин.
Аналогично для мужчин.




