Original size 1140x1600

В цифрах: как менялась музыка Бьорк с 1993 по 2024?

PROTECT STATUS: not protected
The project is taking part in the competition

О проекте

Этот проект посвящён тому, как менялся звук Björk с 1993 по 2024 год — становилась ли музыка быстрее, громче и более «акустической» со временем. В основе — датасет со Spotify audio features для треков: для каждого трека есть дата релиза и численные характеристики звучания (например tempo, loudness, acousticness, energy и др.).

В фокусе несколько вопросов: — есть ли заметный тренд темпа (ускорение/замедление) или это скорее волны по периодам; — менялась ли громкость с годами (и насколько это похоже на общие тенденции продакшна); — стала ли музыка более акустической в поздние годы; — какие треки выглядят как экстремумы по сочетанию темпа и энергии и насколько они выбиваются из общей картины.

Чтобы перейти от отдельных треков к картине «по эпохам», я выделяю год релиза из release_date, считаю средние значения по годам и добавляю сглаживание (rolling mean на 3 года) — оно помогает увидеть общий рисунок, не теряясь в случайных скачках. Для оценки направления изменения использую линейный тренд (наклон прямой), а для поиска необычных точек — правило IQR (выбросы).

Все выводы построены вокруг визуализаций: две линейные диаграммы показывают динамику темпа и громкости по годам, сложенный столбчатый график объясняет, как менялась «акустичность» по десятилетиям, а scatter-график помогает увидеть взаимосвязь tempo и energy и выделить треки-экстремумы. В итоге получилась цельная история о том, что у Björk важнее не «ровный рост показателей», а смена периодов и подходов к звучанию.

В проекте я использую 4 визуализации:

Линейный график темпа (Tempo) по годам Показывает средний BPM в каждом году, сглаживание (rolling 3 года) и общий тренд (наклон), чтобы оценить, есть ли долгосрочное ускорение или темп меняется волнами.

Линейный график громкости (Loudness) по годам Сравнивает «тихие» и «громкие» периоды и показывает сглаженную линию, чтобы отделить общую тенденцию продакшна от резких годовых скачков.

100% stacked bar: «акустичность» по десятилетиям Делит acousticness на три диапазона (низкая/средняя/высокая) и показывает доли треков в каждом десятилетии — так видно, как меняется баланс между «электронным» и более акустическим звучанием.

Точечная диаграмма Tempo vs Energy + выбросы (IQR) Каждый трек — точка; цветом отмечен год релиза. График помогает увидеть, насколько быстрые треки действительно «энергичнее», и выделяет экстремальные треки, которые заметно выбиваются по темпу или энергии.

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

Original size 1920x951

Пошаговый план работы

Сначала я импортирую библиотеки, здесь я подключаю всё, что нужно:

pandas/numpy для обработки данных

matplotlib для графиков

font_manager для выбора шрифта

Original size 1447x120

Тут я загружаю CSV, привожу release_date к формату даты и убираю строки без даты. Потом добавляю year (год) и decade (десятилетие), чтобы анализировать изменения во времени.

Далее я проверяю названия альбомов и отмечаю лайвы/сборники/саундтреки. После этого создаю колонку set, чтобы отдельно анализировать основные студийные релизы (Studio / main releases), не смешивая их с переизданиями.

Original size 1474x228

Здесь я задаю визуальную основу: автоматически выбираю шрифт (Inter → Roboto → DejaVu Sans) и прописываю свою палитру цветов, чтобы все графики были в одном стиле.

Original size 1307x240

В конце я делаю две вспомогательные функции:

polish () убирает лишние рамки и оставляет сетку только по Y

savefig () сохраняет каждый график в папку bjork_outputs в хорошем качестве для презентации

Original size 1354x221

Агрегаты по годам (для блока yearly = df.groupby (…).agg (…))

Здесь я сворачиваю данные до уровня «год»: группирую треки по year и по типу релиза set, чтобы отдельно смотреть студийные и «прочие» релизы. Дальше внутри каждой группы я считаю:

n_tracks — сколько треков вышло в этом году

tempo_mean — средний темп (BPM)

loudness_mean — среднюю громкость (dB)

acoustic_mean — среднюю акустичность

energy_mean — среднюю энергию

Получается таблица yearly, на основе которой я дальше строю трендовые графики (по годам).

Original size 1903x218

Визуализация данных

0

Дальше я беру только Studio / main releases, сортирую по годам и строю линию среднего темпа по каждому году. Чтобы убрать случайные скачки и показать более читаемую картину, я добавляю сглаживание rolling mean по 3 годам (tempo_roll3). Затем я считаю линейный тренд через np.polyfit: получаю slope и intercept, чтобы нарисовать прямую, которая показывает направление изменения темпа «в среднем» (наклон в BPM/год). После этого я оформляю график: подписи осей, заголовок, легенда, применяю polish () для чистого вида, сохраняю картинку и показываю её.

На линии видно, что средний tempo не растёт ровно: он колеблется волнами вокруг условной «нормы» ~115–120 BPM. Есть яркие ускорения (например в конце 2000-х и в 2022–2024), и резкие провалы (особенно заметен 2020 год — как редкий «очень медленный» год в выборке). Линейный тренд почти горизонтальный (наклон −0.12 BPM/год), то есть глобально важнее пики и провалы, а не общий вектор.

0

Теперь я аналогично строю динамику громкости: снова беру годовые агрегаты, считаю сглаживание по 3 годам (loud_roll3) и рисую две линии — «сырое» среднее по году и сглаженную кривую. Этот график нужен, чтобы увидеть, менялась ли музыка в сторону более «громкого» мастеринга: в loudness значения ближе к 0 означают более громкий звук. Дальше я оформляю график тем же стилем, сохраняю PNG и вывожу на экран.

Громкость по годам ведёт себя более «показательно»: на сглаживании видно, что со временем значения в среднем становятся ближе к 0 dB, то есть записи в среднем звучат громче и плотнее. При этом встречаются резкие исключения — например, один из самых «тихих» провалов заметен около 2005 года, а один из самых «громких» пиков — около 2019. Это похоже на сочетание общей тенденции продакшна и отдельных релизных периодов, которые выбиваются.

0

На этом этапе я анализирую «акустичность» не по годам, а крупнее — по десятилетиям. Для этого я беру acousticness и разбиваю её на 3 диапазона с помощью pd.cut: низкая / средняя / высокая. Дальше я строю таблицу частот: группирую по decade и ac_bin, считаю количество треков в каждом бине, а затем перевожу числа в проценты внутри каждого десятилетия — чтобы получить 100% stacked bar (у каждого столбца сумма 100%). Так становится видно не просто среднее, а именно структуру: какая доля треков была «более акустической» в разные периоды. После оформления графика я сохраняю его и вывожу.

Этот график даёт самый ясный сдвиг: доля треков с высокой acousticness заметно растёт от десятилетия к десятилетию. В 1990-х преобладает «низкая» акустичность (примерно ~60%), а к 2020-м картина разворачивается: «высокая» акустичность становится доминирующей (примерно ~60%), а «низкая» падает до ~15%.

0

В финале я хочу понять связь между темпом и «энергией» трека. Для этого строю scatter: по оси X — tempo, по оси Y — energy, а цветом кодирую год релиза, чтобы видеть распределение по времени. Чтобы отметить нестандартные точки, я вычисляю границы выбросов по правилу IQR отдельно для tempo и energy и помечаю треки, которые выходят за границы. Плюс я считаю условную «экстремальность» через расстояние в z-оценках (z_dist) и подписываю топ-10 самых заметных точек, чтобы график был интерпретируемым, а не просто облаком. Дальше я оформляю график: легенда для выбросов, colorbar с годом, единый стиль через polish (), сохранение и вывод.

На точечном графике видно, что связь между темпом и энергией не жёсткая: быстрый трек не обязан быть «энергичным», и наоборот — энергия может быть высокой даже при не максимальном BPM. Основная масса точек собирается в зоне умеренных темпов и средних энергий, а по краям появляются «характерные» экстремумы: очень быстрые треки (вроде Oceania) и очень энергичные (вроде Declare Independence), а также крайне спокойные/медленные лайв-треки внизу слева. Эти крайние точки помогают понять диапазон: Björk работает и с «ударным» темпом, и с почти медитативной динамикой.

Заключение

В сумме графики складываются в цельную историю: темп у Björk не становится постоянно быстрее или медленнее, он меняется «проектами» и периодами — это видно по волнам и резким годовым отклонениям. Громкость в целом тянется к более «плотному» звучанию, но с заметными выбросами, что похоже на сочетание эпохи продакшна и намеренных художественных решений. Самый уверенный долгосрочный сдвиг — это рост «акустичности»: по десятилетиям явно увеличивается доля треков, которые Spotify распознаёт как более акустические. А scatter подтверждает, что стиль не сводится к одной оси: скорость и энергия часто расходятся, и именно в этом разнообразии — ключ к звучанию Björk на дистанции 1993–2024.

Используемые инструменты

Kaggle — источник данных

Python 3 — основной язык анализа данных

Jupyter Notebook — формат работы

Pandas — загрузка CSV, очистка данных, работа с датами (to_datetime), группировки и агрегаты (groupby, agg)

NumPy — численные операции и статистика (массивы to_numpy (), сглаживание через расчёты, линейный тренд np.polyfit, IQR)

Matplotlib — визуализация (line, bar, scatter), настройка оформления и сохранение графиков (savefig)

ChatGPT 5.2

Описание применения генеративной модели

В работе использовалась нейросеть ChatGPT 5.2 для помощи в написании и корректировке кода, подборе форматов графиков и формулировке текстовых комментариев к результатам.

We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more