ОП.09 Обработка и анализ данных
Практическая работа №1
Тема: Загрузка и первичный анализ датасета «Титаник»
Цель работы: Научиться загружать данные в Pandas, выполнять первичный анализ структуры, выявлять пропуски и аномалии, строить простые визуализации.
Время выполнения: 2 академических часа
Инструменты: Python + Jupyter Notebook, библиотеки pandas, matplotlib
ЗАДАНИЕ ДЛЯ СТУДЕНТА
Этап 1. Загрузка данных (10 минут)
1. Скачайте датасет titanic.csv по ссылке:
https://www.kaggle.com/c/titanic/data (файл train.csv)
Альтернативная ссылка:
https://github.com/datasciencedojo/datasets/raw/master/titanic.csv
2. Создайте новый блокнот Jupyter: Файл → Создать → Notebook
3. Импортируйте библиотеки и загрузите данные:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('titanic.csv') # укажите путь к файлу
Этап 2. Первичный осмотр (20 минут)
Выполните команды:
df.head() # первые 5 строк
df.tail() # последние 5 строк
df.info() # типы данных и количество ненулевых значений
df.describe() # статистика по числовым столбцам
Вопросы для самопроверки:
• Сколько строк и столбцов в датасете?
• Какие столбцы имеют пропуски? Сколько пропусков в каждом?
• Каков средний возраст пассажира? Минимальный? Максимальный?
Этап 3. Очистка данных (30 минут)
Выполните преобразования:
# 1. Удалите ненужные столбцы
df.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1, inplace=True)
# 2. Проверьте результат
df.head()
# 3. Заполните пропуски в возрасте средним значением
df['Age'].fillna(df['Age'].mean(), inplace=True)
# 4. Заполните пропуски в Embarked наиболее частым значением
most_common = df['Embarked'].mode()[0]
df['Embarked'].fillna(most_common, inplace=True)
# 5. Проверьте, что пропусков больше нет
df.info()
Этап 4. Анализ и визуализация (40 минут)
Постройте графики с помощью matplotlib:
# 1. Гистограмма распределения возраста
plt.hist(df['Age'], bins=20, edgecolor='black')
plt.title('Распределение возраста пассажиров')
plt.xlabel('Возраст')
plt.ylabel('Количество')
plt.show()
# 2. Столбчатая диаграмма: выживаемость по классу
survival_by_class = df.groupby('Pclass')['Survived'].mean()
survival_by_class.plot(kind='bar', color=['red', 'blue', 'green'])
plt.title('Доля выживших по классу билета')
plt.xlabel('Класс')
plt.ylabel('Доля выживших')
plt.xticks(rotation=0)
plt.show()
# 3. Сравнение выживаемости мужчин и женщин
survival_by_sex = df.groupby('Sex')['Survived'].mean()
survival_by_sex.plot(kind='pie', autopct='%1.1f%%')
plt.title('Выживаемость: мужчины vs женщины')
plt.ylabel('')
plt.show()
Этап 5. Выводы (10 минут)
Напишите текстовый ответ в ячейке Markdown на вопросы:
1. Какая категория пассажиров выживала чаще: мужчины или женщины?
2. Как класс билета влияет на выживаемость?
3. Какие ещё закономерности вы заметили?
КРИТЕРИИ ОЦЕНКИ
| Критерий |
Макс. балл |
| Код выполнен без ошибок |
2 |
| Все этапы пройдены (1-5) |
2 |
| Пропуски корректно обработаны |
2 |
| Построены 3 графика |
2 |
| Выводы осмысленны и по делу |
2 |
| Итого |
10 |
ОТВЕТ ДЛЯ ПРЕПОДАВАТЕЛЯ (эталонный результат)
Нажмите, чтобы увидеть ответы
Этап 2. Вопросы:
• 891 строка, 12 столбцов
• Пропуски: Age (177), Cabin (687), Embarked (2)
• Средний возраст ≈ 29.7, min = 0.42, max = 80
Этап 5. Выводы (ожидаемые ответы):
1. Женщины выживали значительно чаще (≈74%), чем мужчины (≈19%)
2. Пассажиры 1 класса выживали чаще (≈63%), 2 класса (≈48%), 3 класса (≈24%)
3. Дополнительно можно заметить: молодые пассажиры выживали чаще пожилых
Ожидаемые графики:
• Гистограмма возраста — колоколообразная форма, пик в районе 20–30 лет
• Столбчатая диаграмма — убывание от 1 к 3 классу
• Круговая диаграмма — преобладание выживших женщин
Автор: УМК СПО
Лицензия: Бесплатное использование с указанием источника
|