
Я выбрала данные с информацией о треках, содержащие такие поля, как название песни, имя артиста, и набор числовых аудио-признаков (энергия, танцевальность, настроение и др.), а также жанр — в столбце Class. Данные были взяты из открытого источника Kaggle, где собраны популярные треки с разными характеристиками.
Почему именно эти данные?
1 — Музыка — важное культурное явление, и её анализ через цифровые признаки помогает понять особенности жанров, предпочтения слушателей, тренды. 2 — Эти данные хороши для практики анализа аудио-признаков и для классификации музыкальных жанров. 3 — Задача интересна и практически значима для рекомендационных систем и музыкальных сервисов.
Выбор типа графиков
Для визуализации я выбрала: Столбчатые диаграммы (bar plots) — для наглядного сравнения средних значений признаков по жанрам и распределения количества треков. Boxplot — для изучения распределений признаков внутри каждого жанра и выявления выбросов. Корреляционная тепловая карта (heatmap) — чтобы увидеть взаимосвязи между числовыми признаками.
Эти графики хорошо подходят для описательного анализа данных.
Этапы работы
1. Загрузка и первичный обзор данных import pandas as pd
df = pd.read_csv ('train.csv')
print (df.head ()) print (df.info ()) print (df['Class'].value_counts ())
Проверила пропуски:
print (df.isnull ().sum ())
Построила график распределения жанров:
import matplotlib.pyplot as plt import seaborn as sns
plt.figure (figsize=(10,6)) sns.countplot (y='Class', data=df, order=df['Class'].value_counts ().index, palette='pastel') plt.title ('Распределение треков по музыкальным жанрам') plt.xlabel ('Количество треков') plt.ylabel ('Жанр (Class)') plt.show ()
Построила корреляционную матрицу признаков:
plt.figure (figsize=(14,10)) sns.heatmap (df[features].corr (), annot=True, cmap='coolwarm', fmt=».2f») plt.title ('Корреляция числовых признаков') plt.show ()
Изучила распределение признаков energy и danceability по жанрам:
plt.figure (figsize=(12,6)) sns.boxplot (x='Class', y='energy', data=df, palette='Set3') plt.title ('Распределение энергии по музыкальным жанрам') plt.xlabel ('Жанр') plt.ylabel ('Energy') plt.xticks (rotation=45) plt.show ()
plt.figure (figsize=(12,6)) sns.boxplot (x='Class', y='danceability', data=df, palette='Set2') plt.title ('Танцевальность по жанрам') plt.xticks (rotation=45) plt.show ()
Рассчитала средние значения некоторых признаков по жанрам:
mean_feats = df.groupby ('Class')[['danceability', 'energy', 'loudness', 'speechiness', 'acousticness', 'valence']].mean () mean_feats.plot (kind='bar', figsize=(14,7), colormap='tab20') plt.title ('Средние значения признаков по жанрам') plt.ylabel ('Среднее значение') plt.xlabel ('Жанр') plt.xticks (rotation=45) plt.show ()
Стилизация графиков
Использовала палитры цветов пастельных оттенков (pastel, Set2, Set3, tab20), чтобы графики были лёгкими и приятными для восприятия.
Выравнивание осей и поворот меток x-оси для удобства чтения.
Заголовки и подписи шрифтом среднего размера, чтобы обеспечить читаемость без перегрузки.
Вдохновлялась современными аналитическими дашбордами с упором на чистоту и минимализм.