ПРИЛОЖЕНИЕ 6

 

ЭТАЛОН ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ №5 (ЛР5): ВИЗУАЛИЗАЦИЯ ДАННЫХ СРЕДСТВАМИ MATPLOTLIB И SEABORN

 

Ниже приведён пример эталонного кодового каркаса для выполнения лабораторной работы. Эталон демонстрирует:

·           загрузку данных;

·           подготовку таблицы для визуализации;

·           построение основных типов графиков;

·           базовое оформление графиков.

Использование эталона не освобождает обучающегося от самостоятельной интерпретации полученных результатов.

1. ИМПОРТ БИБЛИОТЕК

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style("whitegrid")

2. ЗАГРУЗКА ДАННЫХ

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

print(df.head())
print(df.info())

3. ГИСТОГРАММА РАСПРЕДЕЛЕНИЯ

Анализ распределения длительности треков.

plt.figure(figsize=(8,5))

plt.hist(df["duration_sec"].dropna(), bins=20)

plt.xlabel("Длительность трека (сек)")
plt.ylabel("Количество треков")
plt.title("Распределение длительности треков")

plt.show()

Альтернативный вариант через Seaborn:

sns.histplot(df["duration_sec"].dropna(), bins=20)

plt.xlabel("Длительность трека (сек)")
plt.title("Распределение длительности треков")

plt.show()

4. BOXPLOT (ВЫЯВЛЕНИЕ ВЫБРОСОВ)

plt.figure(figsize=(8,5))

sns.boxplot(x=df["views"])

plt.title("Распределение количества просмотров")
plt.xlabel("Просмотры")

plt.show()

5. СТОЛБЧАТАЯ ДИАГРАММА

genre_views = df.groupby("genre")["views"].mean().sort_values(ascending=False)

plt.figure(figsize=(10,5))

genre_views.plot(kind="bar")

plt.ylabel("Среднее количество просмотров")
plt.title("Среднее число просмотров по жанрам")

plt.show()

6. ДИАГРАММА РАССЕЯНИЯ

plt.figure(figsize=(7,5))

plt.scatter(df["energy"], df["danceability"])

plt.xlabel("Energy")
plt.ylabel("Danceability")
plt.title("Зависимость энергичности и танцевальности")

plt.show()

Вариант через Seaborn:

sns.scatterplot(data=df, x="energy", y="danceability")

plt.title("Energy vs Danceability")

plt.show()

7. ТЕПЛОВАЯ КАРТА КОРРЕЛЯЦИЙ

corr = df[
    ["duration_sec", "energy", "danceability", "tempo", "views"]
].corr()

plt.figure(figsize=(7,6))

sns.heatmap(corr, annot=True, cmap="coolwarm", fmt=".2f")

plt.title("Матрица корреляций")

plt.show()

8. МНОГОМЕРНАЯ ВИЗУАЛИЗАЦИЯ (PAIRPLOT)

sns.pairplot(
    df[["duration_sec", "energy", "danceability", "tempo"]],
    corner=True
)

plt.show()

Такой график позволяет одновременно увидеть:

9. РЕКОМЕНДУЕМАЯ СТРУКТУРА ПРОГРАММЫ

Рекомендуется следующая организация кода:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


def load_data():
    return pd.read_csv("data/spotify_edu_dataset_ru_complex.csv")


def main():
    df = load_data()

    # построение графиков
    # histogram
    # boxplot
    # bar chart
    # scatter plot
    # heatmap
    # pairplot


if __name__ == "__main__":
    main()