ЭТАЛОН ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ №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()