Лабораторная работа 5. Анализ данных в Python
Современный анализ данных опирается на работу с табличными структурами: каждая строка — это наблюдение (объект), а каждый столбец — его характеристика (признак).
В Python основной инструмент для работы с такими данными — библиотека pandas
, которая предоставляет:
DataFrame
— двумерную структуру данных, похожую на таблицу в Excel или БД.Series
— одномерную структуру, обычно представляющую один столбец.
📈 Этапы анализа данных
📥 Загрузка данных — чтение из файлов (CSV, Excel), баз данных или API.
🔍 Первичный анализ — проверка структуры, типов данных, пропусков.
🧹 Очистка данных — удаление/заполнение пропусков, приведение типов.
🛠 Преобразование — создание новых признаков, фильтрация, сортировка.
📊 Аналитика — группировка, агрегирование, статистика.
📉 Визуализация — представление данных в виде графиков.
📚 Выводы — интерпретация результатов анализа.
📚 Подсказки: основные методы и их назначение
Ниже приведены часто используемые методы pandas
и их функции.
📥 Загрузка и обзор данных
Метод | Назначение |
---|---|
df = pd.read_csv("file.csv") | Читает CSV-файл и записывает в DataFrame |
df.head(количество строк) / df.tail(количество строк) | Показывает первые 5 и последние 10 строк |
df.info() | Отображает информацию о типах данных и пропусках |
df.describe() | Статистика числовых столбцов |
df.shape | Размер таблицы (строки, столбцы) |
df.columns | Список названий всех столбцов |
df.dtypes | Тип данных каждого столбца |
🧹 Очистка и подготовка данных
Метод | Назначение |
---|---|
df.isnull().sum() | Считает количество пропусков |
df.dropna() | Удаляет строки с пропусками |
df.fillna("Unknown") | Заполняет пропуски указанным значением |
df['col'].astype(int) | Преобразует тип данных столбца |
df.duplicated() | Проверяет наличие дубликатов |
df.drop_duplicates() | Удаляет дубликаты строк |
🔍 Извлечение и фильтрация
Метод | Назначение |
---|---|
df['column'] | Извлекает один столбец |
df[['col1', 'col2']] | Извлекает несколько столбцов |
df.iloc[0:5] | Извлекает строки по индексу |
df[df['column'] > 100] | Фильтрует строки по условию |
df.sort_values('column') | Сортирует таблицу по значениям |
🛠 Преобразование данных
Метод | Назначение |
---|---|
df['new_col'] = df['col1'] + df['col2'] | Создание нового столбца |
pd.to_datetime(df['date']) | Преобразует текст в формат даты |
.dt.year | Извлекает год из даты |
df['col'].apply(func) | Применяет функцию к каждому элементу |
📚 Теория: функция lambda
и создание категориальных признаков
Иногда необходимо создать новый признак (столбец), который классифицирует объекты по категориям. Такой столбец называется категориальным — его значения принадлежат ограниченному набору категорий.
Например:
Страна: 🇷🇺 Россия, 🇩🇪 Германия, 🇺🇸 США
Тип вуза: государственный, частный
Возрастная группа: Ancient / Old / Modern
Для таких задач часто используется функция lambda
— это короткая анонимная функция, которую можно применить к каждому элементу столбца:
lambda аргументы: выражение
Пример: классификация по возрасту университета:
df['Age_Group'] = df['Age'].apply( lambda x: 'Ancient' if x > 300 else ('Old' if x >= 100 else 'Modern') )
📌 Здесь lambda x: ...
— это мини-функция, которая проверяет значение x
и возвращает одну из трёх категорий.
Категориальные признаки удобны для:
группировки данных;
построения диаграмм;
анализа распределения.
📉 Теория: визуализация данных в Python
Визуализация — важнейший этап анализа. Даже сложные зависимости часто становятся очевидны именно на графиках. Основные библиотеки: Matplotlib, pandas.plot, Seaborn.
В pandas
можно строить графики напрямую из DataFrame с помощью метода .plot()
или .hist()
.
📊 Основные типы графиков
Тип | Назначение | Пример кода |
---|---|---|
📈 Линейный график | Изменение данных во времени | df['year_founded'].plot() |
📊 Столбчатая диаграмма | Сравнение категорий | df['country'].value_counts().plot(kind='bar') |
📉 Гистограмма | Распределение числовых данных | df['Age'].hist(bins=20) |
🥧 Круговая диаграмма | Доли категорий | df['Age_Group'].value_counts().plot(kind='pie') |
📌 Пояснение к основным параметрам:
kind
— тип графика ('bar'
,'pie'
,'line'
,'hist'
)bins
— количество интервалов (для гистограмм)title
— заголовок графикаxlabel
,ylabel
— подписи осей
Пример:
import matplotlib.pyplot as plt df['Age'].hist(bins=20) plt.title("Распределение возраста университетов") plt.xlabel("Возраст (лет)") plt.ylabel("Количество") plt.show()
🧑💻 Практическая часть
1. Подготовка среды и загрузка данных
Задания:
Импортируйте
pandas
иnumpy
.Загрузите CSV-файл с данными.
Отобразите первые и последние 5 строк таблицы.
Определите размер таблицы и типы данных.
Проверьте наличие пропусков.
2. Первичный анализ данных
Задания
- Удалите дубликаты
- Найдите столбцы с пропущенными значениями и заполните их.
- Для форматирования даты используйте следующий код:
- Посчитайте количество уникальных стран.
Найдите минимальный и максимальный год основания университетов.
Рассчитайте средний и медианный год основания.
Отсортируйте университеты по году основания.
3. Очистка и преобразование данных
3.1. Преобразование типов
Создайте столбец с годом основания.
3.2. Создание столбца age
Рассчитайте возраст университета на 2025 год.
3.3. Категориальный столбец age_group
С помощью
lambda
создайте категориальный столбец:🏛️
Ancient
— старше 300 лет📜
Old
— 100–300 лет🎓
Modern
— младше 100 лет
4. Аналитика и статистика
Задания:
Найдите самый старый и самый новый университет.
Рассчитайте средний и медианный возраст.
Определите 10 стран с наибольшим количеством университетов.
top_10_countries = df['country'].value_counts().head(10)
или
df.groupby('country').size().sort_values(ascending=False).head(10)
Найдите средний возраст университетов по странам.
Определите страны с самой «старой» и самой «молодой» системой образования.
Подсчитайте количество университетов по возрастным категориям.
5. Визуализация данных
Задания:
Постройте гистограмму распределения годов основания.
Постройте столбчатую диаграмму топ-10 стран.
Постройте круговую диаграмму распределения категорий a
ge_group
.
6. Итоги и выводы
Задания:
Сформулируйте 4–5 выводов:
Какие страны лидируют по количеству университетов?
Каков средний возраст вузов?
Какие годы были наиболее активными?
Какие категории университетов преобладают?
- 7 октября 2025, 21:24