ЛАБОРАТОРНАЯ РАБОТА №4

ТАБЛИЧНЫЙ АНАЛИЗ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ PANDAS

 

1. ЦЕЛЬ РАБОТЫ

Целью лабораторной работы является формирование навыков табличного анализа данных с использованием библиотеки Pandas, включая:

·           создание и загрузку DataFrame;

·       работу с типами данных и пропусками;

·       фильтрацию и сортировку данных;

·       группировку и агрегирование;

·       построение сводных таблиц;

·       сравнение табличной модели с алгоритмической (ЛР2) и числовой (ЛР3).

Лабораторная работа закрепляет переход к профессиональной аналитической модели обработки данных.

2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ

2.1. DataFrame как табличная модель

В предыдущих лабораторных работах данные рассматривались либо как список словарей (list[dict]), либо как отдельные числовые массивы (ndarray). В Pandas используется более удобная и мощная структура – DataFrame. DataFrame можно представить как полноценную таблицу, где:

·       каждая строка – это отдельное наблюдение (например, трек);

·       каждый столбец – это признак (жанр, длительность, просмотры и т.д.);

·       индекс позволяет обращаться к строкам и управлять их порядком.

В отличие от:

·           list[dict], DataFrame предоставляет встроенные методы фильтрации, группировки и агрегирования;

·           ndarray, DataFrame может одновременно хранить числовые, категориальные и текстовые данные.

Создание таблицы из CSV-файла выполняется одной командой:

import pandas as pd

df = pd.read_csv("data/spotify_edu_dataset_ru_complex.csv")

После загрузки данные становятся единым объектом анализа, к которому можно применять табличные операции высокого уровня.

2.2. Типы данных и пропуски

После загрузки данных в DataFrame важно понять, как Pandas интерпретировал столбцы. Для этого используются методы:

df.info()
df.dtypes

Метод info() позволяет увидеть:

·       количество строк,

·       типы данных по каждому столбцу,

·       наличие пропусков.

Метод dtypes показывает тип каждого столбца отдельно. Это важно, поскольку числовые признаки могут быть автоматически распознаны как строки, если в них присутствуют некорректные значения.

Работа с пропусками. Для анализа пропущенных значений используется:

df.isna().sum()

Эта команда показывает количество пропусков в каждом столбце. Если числовой столбец содержит строки или некорректные значения, его можно привести к числовому типу следующим образом:

df["duration_sec"] = pd.to_numeric(df["duration_sec"], errors="coerce")

Параметр errors="coerce" означает, что некорректные значения будут автоматически заменены на NaN. Таким образом, Pandas позволяет контролируемо привести данные к корректному типу и подготовить их к дальнейшему анализу.

2.3. Фильтрация и сортировка

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

Фильтрация. Если требуется отобрать строки, удовлетворяющие определённому условию, используется логическое выражение:

df[df["energy"] > 0.8]

В данном случае будут выбраны только те треки, у которых показатель energy превышает 0.8. Такой способ фильтрации интуитивно напоминает работу с таблицей: мы задаём условие для столбца и получаем подтаблицу, содержащую только подходящие строки.

Сортировка. Для упорядочивания данных по значению признака используется метод sort_values():

df.sort_values("views", ascending=False)

Здесь строки таблицы сортируются по количеству просмотров в порядке убывания, что позволяет быстро определить наиболее популярные треки. Таким образом, фильтрация и сортировка в Pandas выполняются декларативно: мы задаём условие или критерий упорядочивания, а библиотека самостоятельно обрабатывает всю таблицу. Это существенно упрощает код по сравнению с алгоритмической реализацией в ЛР2.

2.4. Группировка и агрегирование

Одной из самых важных возможностей Pandas является группировка данных.
Она позволяет анализировать не отдельные строки, а целые группы наблюдений, объединённые по какому-либо признаку. Например, если требуется узнать среднее количество просмотров по жанрам, используется конструкция:

df.groupby("genre")["views"].mean()

В этом случае:

·  данные разбиваются на группы по значению столбца genre;

·  для каждой группы вычисляется среднее значение views.

Результатом будет таблица, где каждому жанру соответствует среднее число просмотров.

Несколько агрегатов одновременно. Pandas позволяет рассчитывать несколько статистических показателей за один шаг:

df.groupby("genre").agg({
    "views": "mean",
    "duration_sec": "median"
})

Здесь для каждой группы по жанру:

·       вычисляется среднее количество просмотров;

·       определяется медианная длительность трека.

Такой подход значительно упрощает анализ по сравнению с алгоритмической реализацией в ЛР2 или обработкой отдельных массивов в ЛР3. Таким образом, группировка и агрегирование переводят анализ на более высокий уровень: мы работаем не с отдельными значениями, а с закономерностями внутри категорий.

2.5. Сводные таблицы (pivot)

Сводная таблица позволяет обобщить данные по заданному признаку и получить компактное представление агрегированных результатов. В Pandas для этого используется функция pivot_table():

pd.pivot_table(

    df,

    values="views",

    index="genre",

    aggfunc="mean"

)

В данном случае:

·       данные группируются по столбцу genre;

·       для каждого жанра рассчитывается среднее значение views;

·       результат представляется в виде новой таблицы.

По сути, сводная таблица выполняет ту же задачу, что и groupby(), но в более универсальной форме. Она позволяет:

·       использовать несколько уровней группировки;

·       рассчитывать разные агрегаты;

·       строить многомерные представления данных.

Сводные таблицы широко применяются в аналитике, поскольку позволяют быстро выявлять закономерности внутри категорий без написания сложной логики обработки.

3. ИСХОДНЫЕ ДАННЫЕ

В лабораторной работе используется файл:

data/spotify_edu_dataset.csv

Работа выполняется с тем же учебным набором данных, который был сформирован и очищен в ЛР2 и использовался для численного анализа в ЛР3. Таким образом, в ЛР4 анализ проводится уже над подготовленными данными, но в новой табличной модели представления – DataFrame.

4. ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ

Этап 1. Загрузка и первичный анализ данных

1)  Загрузить файл в DataFrame с использованием pd.read_csv().

2)  Вывести первые 5 строк таблицы.

3)  Проанализировать структуру данных (типы столбцов).

4)  Определить количество пропущенных значений по каждому столбцу.

Этап 2. Очистка типов данных

1)  Привести столбцы, содержащие числовые данные, к корректному числовому типу.

2)  Убедиться, что преобразование выполнено корректно: проверить типы столбцов и количество появившихся пропусков.

Этап 3. Фильтрация и сортировка

1)  Отобрать треки, у которых показатель energy превышает 0.8.

2)  Определить и вывести 10 треков с наибольшим числом просмотров.

3)  Найти треки, длительность которых превышает среднее значение по выборке.

Этап 4. Группировка и агрегирование

1)      Определить, сколько треков относится к каждому жанру.

2)      Рассчитать среднее количество просмотров для каждого жанра.

3)      Выявить жанр с наибольшим средним числом просмотров.

Этап 5. Построение сводной таблицы

1)  Построить сводную таблицу, отражающую среднее количество просмотров по каждому жанру.

2)  Сравнить полученные значения с результатами группировки, выполненной на этапе 4.

Этап 6. Сравнение с ЛР2 и ЛР3

1)  Сравнить объём и структуру кода.

2)  Оценить читаемость и уровень абстракции решения.

3)  Сформулировать вывод о преимуществах табличной модели анализа.

5. ИСПОЛЬЗОВАНИЕ ЭТАЛОННОГО КАРКАСА

Для выполнения лабораторной работы допускается использование эталонного кодового каркаса, приведённого в Приложении 5 («Эталон выполнения лабораторной работы №4»). Эталонный каркас демонстрирует:

·       рекомендуемую структуру работы с DataFrame;

·       порядок приведения типов данных;

·       примеры фильтрации, сортировки и группировки;

·       построение сводной таблицы.

Использование эталона не освобождает от самостоятельной работы.
В отчёте должны быть представлены:

·       собственные результаты выполнения этапов;

·       аналитическая интерпретация полученных показателей;

·       вывод о преимуществах табличной модели анализа.

Копирование кода без понимания логики его работы считается методически некоррект.

6. СОДЕРЖАНИЕ ОТЧЁТА

Отчёт по лабораторной работе должен быть оформлен в структурированном виде и содержать следующие разделы:

1)  Цель работы. Необходимо кратко сформулировать цель лабораторной работы и указать, какие навыки табличного анализа были освоены.

2)  Теоретическое обоснование. В связной форме изложить:

a.        особенности структуры DataFrame;

b.       принципы работы с типами данных и пропусками;

c.        роль группировки и агрегирования в табличном анализе.

3)  Код программы с комментариями. Решение должно быть структурировано (функции, логическая последовательность этапов). Комментарии должны пояснять:

·       назначение ключевых операций;

·       логику фильтрации, группировки и построения сводной таблицы.

4)      Результаты фильтрации и сортировки. В отчёте необходимо представить полученные выборки и кратко пояснить результаты.

5)      Результаты группировки и агрегирования. Следует привести вычисленные показатели по жанрам и дать краткую интерпретацию.

6)      Сводная таблица. Необходимо представить построенную сводную таблицу и сопоставить её результаты с результатами группировки.

7)      Сравнение с ЛР2 и ЛР3. Кратко проанализировать:

·       различие в объёме кода;

·       уровень абстракции;

·       удобство табличной модели.

8)        Ответы на контрольные вопросы.

9)        Выполнение заданий к СРО.

10)  Вывод по лабораторной работе. Вывод должен носить аналитический характер и отражать понимание перехода к табличной модели анализа данных.

7. КОНТРОЛЬНЫЕ ВОПРОСЫ

1)  В чём принципиальное отличие структуры DataFrame от модели list[dict], использованной в ЛР2? Какие преимущества даёт табличная модель?

2)  Почему библиотека Pandas считается более удобным инструментом для табличного анализа по сравнению с базовыми средствами Python и массивами NumPy?

3)  В чём различие между операцией groupby() и сортировкой данных? Какие задачи решает каждая из этих операций?

4)  Каким образом в Pandas обрабатываются пропущенные значения? Чем отличается поведение Pandas от NumPy при работе с пропусками?

5)  В чём состоит назначение сводных таблиц? В каких случаях их использование предпочтительнее обычной группировки?

8. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ОБУЧАЮЩЕГОСЯ (СРО)

1)  Рассчитать медианное количество просмотров по жанрам и сопоставить результаты со средними значениями. Сделать вывод о влиянии выбросов.

2)  Определить трёх исполнителей с наибольшим суммарным числом просмотров и кратко проанализировать полученный результат.

3)  Построить сводную таблицу по двум признакам (например, жанр и исполнитель) и интерпретировать выявленные закономерности.

4)  Сравнить результаты агрегирования, полученные средствами Pandas, с реализацией аналогичных вычислений в NumPy. Оценить различие в сложности кода.

5)  Проанализировать влияние пропущенных значений на результаты агрегирования (среднее, медиана) и пояснить, какие искажения могут возникать.

9. ВЫВОД ПО ЛАБОРАТОРНОЙ РАБОТЕ

В выводе необходимо представить аналитическое обобщение выполненной работы. Следует отразить:

·       каким образом произошёл переход от алгоритмической и числовой модели анализа к табличной модели (DataFrame);

·       какие преимущества предоставляет Pandas при выполнении фильтрации, группировки и агрегирования данных;

·       как изменился уровень абстракции и читаемость кода по сравнению с ЛР2 и ЛР3;

·       каким образом освоенные методы подготавливают к более сложным задачам анализа и визуализации данных.

Вывод должен носить аналитический характер и демонстрировать понимание роли табличной модели в профессиональной аналитике.

10. МЕТОДИЧЕСКАЯ СВЯЗЬ С ЛР5

В лабораторной работе №4 освоена табличная модель анализа данных с использованием DataFrame. Обучающийся научился выполнять фильтрацию, сортировку, группировку и агрегирование данных на уровне таблицы. В лабораторной работе №5 будет рассмотрена визуализация данных с использованием библиотек Matplotlib и Seaborn. Это позволит перейти от численного и табличного представления результатов к их графической интерпретации. Таким образом, ЛР5 л   огически продолжает ЛР4: если в текущей работе данные анализируются средствами таблицы, то в следующей – результаты анализа будут представлены в наглядной визуальной форме.