7.3 KiB
Лабораторная работа №1¶
Тема: Анализ биографических данных с помощью Python, Pandas и визуализации
Выполнил: Студент группы ИСЭбд-3 Осягина А. А.
Цель работы¶
Изучить методы работы с табличными данными в библиотеке pandas,
научиться проводить предварительный анализ, статистическую обработку
и визуализацию данных на примере биографического датасета.
Шаг 1. Импорт библиотек¶
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Для отображения графиков в Jupyter
%matplotlib inline
# Настройки графиков
sns.set(style="whitegrid")
Шаг 2. Загрузка данных¶
# Указываем путь к CSV (можно заменить на свой)
file_path = "biographies.csv"
# Чтение CSV в DataFrame
df = pd.read_csv(file_path)
# Просмотр первых строк
df.head()
Шаг 3. Первичный анализ данных¶
# Общая информация
df.info()
# Статистика по числовым столбцам
df.describe(include="all")
Шаг 4. Очистка данных¶
# Заполнение пропусков в 'Manner of death'
df['Manner of death'] = df['Manner of death'].fillna('unknown')
# Проверка пропусков
df.isnull().sum()
Шаг 5. Анализ по профессиям¶
occupation_counts = df['Occupation'].value_counts().head(10)
plt.figure(figsize=(10,5))
sns.barplot(x=occupation_counts.values, y=occupation_counts.index)
plt.title("Топ-10 профессий")
plt.xlabel("Количество персон")
plt.ylabel("Профессия")
plt.show()
Шаг 6. Анализ возраста смерти¶
plt.figure(figsize=(10,6))
sns.histplot(df['Age of death'].dropna(), bins=20, kde=True)
plt.title("Распределение возраста смерти")
plt.xlabel("Возраст")
plt.ylabel("Количество персон")
plt.show()
Шаг 7. Способы смерти¶
death_counts = df['Manner of death'].value_counts()
plt.figure(figsize=(10,6))
sns.barplot(x=death_counts.values, y=death_counts.index)
plt.title("Распределение способов смерти")
plt.xlabel("Количество персон")
plt.ylabel("Способ смерти")
plt.show()
Шаг 8. Анализ по странам¶
# Топ-10 стран по количеству персон
country_counts = df['Country'].str.split(';').explode().str.strip().value_counts().head(10)
plt.figure(figsize=(10,6))
sns.barplot(x=country_counts.values, y=country_counts.index)
plt.title("Топ-10 стран по количеству персон")
plt.xlabel("Количество персон")
plt.ylabel("Страна")
plt.show()
Выводы¶
- Датасет успешно загружен и очищен от пропусков.
- Наибольшее количество персон принадлежит к профессии Artist и Politician.
- Средний возраст смерти составляет ~60–70 лет.
- Основной способ смерти — natural causes, но встречаются также homicide, suicide, accident и capital punishment.
- Больше всего персон связано с Францией, Германией, Великобританией и США.
Контрольные вопросы¶
1. Какие основные типы данных поддерживает Pandas DataFrame?
Pandas поддерживает числовые типы (int, float), строки (object), даты (datetime), булевы значения и категориальные данные.
2. Для чего используется метод describe()?
Для получения основных статистических характеристик по данным (среднее, минимум, максимум, квартили и т.д.).
3. Как можно отобразить пропуски в данных?
С помощью методов isnull(), sum() или визуализации тепловой карты.
4. В чём разница между value_counts() и groupby()?
value_counts()считает частоту уникальных значений в Series.groupby()позволяет агрегировать данные по категориям и выполнять разные операции (сумма, среднее и др.).
5. Какие библиотеки используются для визуализации?
matplotlib и seaborn.