
Введение
В рамках данного проекта были проанализирована база данных с сайта Kaggle по студийной дискографии группы Oasis. Для исследования использовались табличные данные, агрегированные по альбомам, включающие год выпуска, количество треков, среднюю длительность композиций, средний темп, уровень громкости, показатели популярности, а также количественные характеристики текстов песен (общее число слов, количество уникальных слов и эмоциональная окраска текста). Интерес к анализу дискографии Oasis обусловлен тем, что группа является одним из ключевых представителей британской музыкальной сцены 1990-х годов, а её творчество хорошо документировано и охватывает длительный период времени. Это делает дискографию Oasis показательной для исследования эволюции музыкального стиля, структуры композиций и текстов, а также для сопоставления художественных изменений с динамикой популярности группы. Для визуализации данных были выбраны несколько типов графиков. Линейные графики используются для отображения громкости треков и доли акустического звучания. Столбчатые диаграммы применяются для сравнения альбомов по отдельным параметрам, например ритмической подвижности треков, доли речевых элементов в вокале и энергии треков. Тепловая карта используется для выявления возможных взаимосвязей между характеристиками звучания. Такой набор визуализаций позволяет одновременно рассматривать как динамику показателей, так и различия между отдельными альбомами.
Для оформления графиков я использовала черно-белую цветовую палитру, вдохновленную обложкой альбома «Don’t Believe the Truth» и эстетикой строгой Великобритании.

Обложка альбома «Don’t Believe in Truth» — Oasis
Используемые цвета:
График 1
Ритмическая подвижность треков — Данные: danceability — Тип графика: столбчатая диаграмма — Цель анализа: сравнить альбомы по степени ритмической структурированности и определить, насколько музыка Oasis ориентирована на телесное восприятие
Анализ ритмической подвижности треков
Код для диаграммы
Код для стилизации кода:
import matplotlib.pyplot as plt
code_text = «»» import pandas as pd import matplotlib.pyplot as plt
df = pd.read_csv («Oasis.csv.xls»)
dance_album = ( df.groupby («album_name»)[«danceability»] .mean () .sort_values () )
plt.figure (figsize=(10, 5)) plt.bar (dance_album.index, dance_album.values, color="black»)
plt.title ( «Rhythmic Mobility of Oasis Albums\n (Danceability)», loc="left», fontsize=14 )
plt.ylabel («Average danceability») plt.xlabel («Album»)
plt.xticks (rotation=30, ha="right»)
plt.gca ().spines[«top»].set_visible (False) plt.gca ().spines[«right»].set_visible (False)
plt.tight_layout () plt.show () «»»
fig, ax = plt.subplots (figsize=(12, 8)) ax.axis ('off')
fig.patch.set_facecolor (‘#1c1c1c) plt.text (0, 1, code_text, fontfamily='monospace', fontsize=12, color='white', va='top', ha='left', linespacing=1.3)
plt.text (0.95, 0.02, «Oasis — Don’t Believe the Truth», fontsize=10, color='grey', ha='right', va='bottom', alpha=0.7)
plt.tight_layout () plt.savefig («oasis_code_style.png», dpi=300, facecolor=fig.get_facecolor ()) plt.show ()
Анализ и вывод:
На представленной столбчатой диаграмме показано среднее значение параметра danceability для релизов группы Oasis. Показатель danceability отражает степень ритмической структурированности треков и их ориентацию на телесное, движенческое восприятие. Из графика видно, что значения danceability варьируются в относительно узком диапазоне — от низких значений у ранних релизов до более высоких у поздних альбомов. Это указывает на то, что на протяжении всей дискографии Oasis сохраняет достаточно стабильный ритмический характер, не делая резких стилистических скачков. При этом можно заметить постепенное увеличение показателя danceability в более поздних альбомах. Релизы конца 1990-х и 2000-х годов демонстрируют более выраженную ритмическую упорядоченность по сравнению с ранними работами группы. Это может свидетельствовать о смещении фокуса от сырого и перегруженного звучания к более выверенной и структурированной форме. Анализ показывает, что музыка Oasis в целом не ориентирована на танцевальное восприятие в традиционном смысле, однако со временем группа постепенно увеличивает ритмическую чёткость своих композиций. Ранние альбомы отличаются более хаотичным и плотным звучанием, тогда как поздние релизы демонстрируют большую ритмическую организованность. Это отражает эволюцию музыкального подхода Oasis — от импульсивного бритпоп-звучания к более контролируемой и зрелой структуре композиций.
График 2
Доля речевых элементов в вокале — Данные: speechiness — Тип графика: столбчатая диаграмма — Цель анализа: выявить, в каких альбомах вокал ближе к разговорной манере и как меняется подача текста со временем
Анализ доли речевых элементов в вокале
Код для диаграммы
Код для стилизации кода:
import matplotlib.pyplot as plt
code_text = «»» import pandas as pd import matplotlib.pyplot as plt
df = pd.read_csv («Oasis.csv.xls») speech_album = df.groupby («album_name»)[«speechiness»].mean ().sort_values ()
plt.figure (figsize=(12, 6)) bars = plt.bar (speech_album.index, speech_album.values, color="black»)
plt.title («Speechiness of Oasis Albums\n (Share of Speech Elements in Vocals)», fontsize=16, fontweight='bold', fontfamily='monospace', loc='left', color='white') plt.ylabel («Average speechiness», fontsize=12, color='white', fontfamily='monospace') plt.xlabel («Album», fontsize=12, color='white', fontfamily='monospace')
plt.xticks (rotation=30, ha="right», color='white', fontsize=10, fontfamily='monospace') plt.yticks (color='white', fontsize=10, fontfamily='monospace')
ax = plt.gca () ax.spines[«top»].set_visible (False) ax.spines[«right»].set_visible (False) ax.spines[«left»].set_color ('white') ax.spines[«bottom»].set_color ('white')
ax.set_facecolor ('#1c1c1c') plt.gcf ().patch.set_facecolor ('#1c1c1c')
plt.plot ([-0.5, len (speech_album)-0.5], [speech_album.max ()*1.05]*2, color='white', linewidth=2) plt.plot ([-0.5, len (speech_album)-0.5], [-0.01]*2, color='white', linewidth=2)
plt.tight_layout () plt.savefig («oasis_speechiness_black_white.png», dpi=300, facecolor=plt.gcf ().get_facecolor ()) plt.show () «»»
fig, ax = plt.subplots (figsize=(12, 8)) ax.axis ('off')
fig.patch.set_facecolor ('#000000') plt.text (0, 1, code_text, fontfamily='monospace', fontsize=12, color='white', va='top', ha='left', linespacing=1.3)
plt.text (0.95, 0.02, «Oasis — Don’t Believe the Truth», fontsize=10, color='black', ha='right', va='bottom', alpha=0.7, fontfamily='monospace')
plt.tight_layout () plt.savefig («oasis_code_style.png», dpi=300, facecolor=fig.get_facecolor ()) plt.show ()
Анализ и вывод
На столбчатой диаграмме представлено среднее значение параметра speechiness для альбомов группы Oasis. Данный показатель отражает долю речевых элементов в вокале и позволяет оценить, насколько подача текста приближается к разговорной манере, а не к традиционному мелодическому пению. Из графика видно, что значения speechiness для всех альбомов остаются относительно низкими и варьируются в узком диапазоне. Это указывает на то, что вокальный стиль Oasis на протяжении всей дискографии преимущественно основан на мелодическом исполнении, а не на речитативе или разговорной интонации. Таким образом, группа сохраняет устойчивую ориентацию на классическую рок-песенную форму. При этом можно заметить постепенное увеличение показателя speechiness в более поздних релизах. Альбомы 2000-х годов демонстрируют несколько более высокую долю речевых элементов по сравнению с ранними работами середины 1990-х. Это может свидетельствовать о некотором изменении вокальной подачи — появлении более свободной, разговорной интонации и снижении дистанции между исполнителем и слушателем. В целом анализ показывает, что, несмотря на небольшие колебания, Oasis не делает резких стилистических поворотов в вокальной манере. Незначительный рост speechiness в поздних альбомах можно интерпретировать как элемент творческой эволюции, а не как отказ от фирменного мелодического подхода группы.
График 3
Громкость треков — Данные: loudness — Тип графика: линейный график — Цель анализа: проверить, влияет ли уровень громкости песен на популярность альбомов
Анализ громкости треков
Код для графика
Код для стилизации кода:
import matplotlib.pyplot as plt import numpy as np import random
code_text = «»» import pandas as pd import matplotlib.pyplot as plt
df = pd.read_csv («Oasis.csv.xls»)
loudness_album = df.groupby («album_name»)[«loudness»].mean ().sort_index ()
plt.figure (figsize=(12, 6)) plt.plot (loudness_album.index, loudness_album.values, marker='o', color='white', linewidth=2)
plt.title («Average Loudness of Oasis Albums», fontsize=16, fontweight='bold', loc='left', color='white', fontfamily='monospace') plt.ylabel («Loudness (dB)», fontsize=12, color='white', fontfamily='monospace') plt.xlabel («Album», fontsize=12, color='white', fontfamily='monospace')
plt.xticks (rotation=30, ha="right», color='white', fontsize=10) plt.yticks (color='white', fontsize=10)
ax = plt.gca () ax.spines[«top»].set_visible (False) ax.spines[«right»].set_visible (False) ax.spines[«left»].set_color ('white') ax.spines[«bottom»].set_color ('white')
ax.set_facecolor ('#1c1c1c') plt.gcf ().patch.set_facecolor ('#1c1c1c')
plt.plot ([-0.5, len (loudness_album)-0.5], [loudness_album.max ()*1.05]*2, color='white', linewidth=2) plt.plot ([-0.5, len (loudness_album)-0.5], [loudness_album.min ()*0.95]*2, color='white', linewidth=2)
plt.text (len (loudness_album)-0.1, loudness_album.min ()*0.93, «Inspired by Don’t Believe the Truth», fontsize=10, color='lightgrey', ha='right', va='bottom', alpha=0.8, fontfamily='monospace')
plt.tight_layout () plt.savefig («oasis_loudness_black_white.png», dpi=300, facecolor=plt.gcf ().get_facecolor ()) plt.show () «»»
fig, ax = plt.subplots (figsize=(12, 9)) ax.axis ('off')
fig.patch.set_facecolor ('white') ax.set_facecolor ('white')
for _ in range (50): x = random.uniform (0, 1) y = random.uniform (0, 1) width = random.uniform (0.01, 0.05) height = random.uniform (0.02, 0.1) rect = plt.Rectangle ((x, y), width, height, color='#1c1c1c', alpha=0.3) ax.add_patch (rect)
plt.text (0.05, 0.95, code_text, fontfamily='monospace', fontsize=12, color='black', va='top', ha='left', linespacing=1.3)
plt.tight_layout () plt.savefig («oasis_code_white_black_stripes.png», dpi=300, facecolor='white') plt.show ()
Анализ и вывод
На линейном графике показано среднее значение параметра loudness для альбомов Oasis. Показатель громкости отражает общий уровень звукового давления и связан с продюсерскими решениями, а также с тенденциями музыкальной индустрии конкретного периода. Из графика видно, что уровень громкости заметно колеблется от альбома к альбому. Ряд релизов характеризуется более высоким средним значением loudness, тогда как другие демонстрируют существенное снижение громкости. Это говорит об отсутствии линейной и однозначной динамики данного параметра в дискографии группы. Особенно заметны резкие перепады громкости между соседними релизами. Такие изменения могут быть связаны как с экспериментами со звучанием, так и с различиями в сведении и мастеринге. Кроме того, на уровень громкости могли влиять общие индустриальные тренды, включая так называемую «войну громкости», характерную для конца 1990-х и начала 2000-х годов. Анализ графика не позволяет сделать вывод о прямой зависимости между громкостью и популярностью альбомов. Некоторые из наиболее известных и коммерчески успешных релизов Oasis не обязательно обладают максимальными значениями loudness. Это указывает на то, что популярность группы определяется в большей степени композиционными, текстовыми и стилистическими факторами, а не исключительно техническими параметрами звучания.
График 4
Энергия треков — Данные: energy — Тип графика: столбчатая диаграмма — Цель анализа: визуализировать динамику энергетики альбомов и понять, какие релизы были более агрессивными или спокойными
Анализ энергии треков
Код для диаграммы
Код для стилизации кода:
import matplotlib.pyplot as plt import numpy as np import random
code_text = «»» import pandas as pd import matplotlib.pyplot as plt
df = pd.read_csv («Oasis.csv.xls»)
energy_album = df.groupby («album_name»)[«energy»].mean ().sort_values ()
plt.figure (figsize=(12, 6)) bars = plt.bar (energy_album.index, energy_album.values, color=»#1c1c1c»)
plt.title («Energy of Oasis Albums\n (Average Track Energy)», fontsize=16, fontweight='bold', loc='left', color='#ffffff', fontfamily='monospace') plt.ylabel («Average energy», fontsize=12, color='#ffffff', fontfamily='monospace') plt.xlabel («Album», fontsize=12, color='#ffffff', fontfamily='monospace')
plt.xticks (rotation=30, ha="right», color='#ffffff', fontsize=10, fontfamily='monospace') plt.yticks (color='#ffffff', fontsize=10, fontfamily='monospace')
ax = plt.gca () ax.spines[«top»].set_visible (False) ax.spines[«right»].set_visible (False) ax.spines[«left»].set_color ('#ffffff') ax.spines[«bottom»].set_color ('#ffffff')
ax.set_facecolor ('#000000') plt.gcf ().patch.set_facecolor ('#000000')
plt.plot ([-0.5, len (energy_album)-0.5], [energy_album.max ()*1.05]*2, color='#ffffff', linewidth=2) plt.plot ([-0.5, len (energy_album)-0.5], [-0.01]*2, color='#ffffff', linewidth=2)
plt.tight_layout () plt.savefig («oasis_energy_black_white_mixed.png», dpi=300, facecolor=plt.gcf ().get_facecolor ()) plt.show () «»»
fig, ax = plt.subplots (figsize=(12, 9)) ax.axis ('off')
fig.patch.set_facecolor ('#ffffff') ax.set_facecolor ('#ffffff')
for _ in range (60): x = random.uniform (0, 1) y = random.uniform (0, 1) width = random.uniform (0.01, 0.07) height = random.uniform (0.02, 0.1)
color = random.choice (['<h3>000000', '</h3>1c1c1c'])
rect = plt.Rectangle ((x, y), width, height, color=color, alpha=0.2)
ax.add_patch (rect)
plt.text (0.05, 0.95, code_text, fontfamily='monospace', fontsize=12, color='#000000', va='top', ha='left', linespacing=1.3)
plt.tight_layout () plt.savefig («oasis_code_energy_stylish.png», dpi=300, facecolor=fig.get_facecolor ()) plt.show ()
Анализ и вывод
На столбчатой диаграмме представлено среднее значение параметра energy для альбомов Oasis. Данный показатель отражает интенсивность и «напористость» звучания, включая плотность аранжировок, уровень громкости и общее ощущение динамики треков. Из графика видно, что уровень энергии в целом возрастает от ранних альбомов к более поздним релизам. Ранние работы группы характеризуются умеренными значениями energy, тогда как альбомы конца 1990-х и 2000-х годов демонстрируют более высокую энергетическую насыщенность. Это может свидетельствовать о постепенном смещении музыкального стиля Oasis в сторону более плотного и агрессивного звучания. Увеличение энергии может быть связано с усложнением аранжировок, усилением гитарного давления и общей ориентацией на более «стадионный» формат исполнения. При этом важно отметить, что даже альбомы с относительно низкими значениями energy не являются полностью спокойными или минималистичными. Oasis сохраняет достаточно высокий уровень энергетики на протяжении всей дискографии, что соответствует жанровым рамкам бритпопа и альтернативного рока. Таким образом, изменения показателя energy отражают не смену жанра, а внутреннюю эволюцию звучания группы.
График 5
Доля акустического звучания — Данные: acousticness — Тип графика: линейный график — Цель анализа: проследить изменения в использовании акустических инструментов и определить, становилось ли звучание группы более мягким и камерным
Анализ доли акустического звучания
Код для диаграммы
Код для стилизации кода:
import matplotlib.pyplot as plt import random
code_text = «»» import pandas as pd import matplotlib.pyplot as plt
df = pd.read_csv («Oasis.csv.xls»)
acoustic_album = df.groupby («album_name»)[«acousticness»].mean ().sort_index ()
plt.figure (figsize=(12, 6)) plt.plot (acoustic_album.index, acoustic_album.values, marker='o', color='#1c1c1c', linewidth=2)
plt.title («Acousticness of Oasis Albums\n (Average Track Acousticness)», fontsize=16, fontweight='bold', loc='left', color='#ffffff', fontfamily='monospace') plt.ylabel («Acousticness», fontsize=12, color='#ffffff', fontfamily='monospace') plt.xlabel («Album», fontsize=12, color='#ffffff', fontfamily='monospace')
plt.xticks (rotation=30, ha="right», color='#ffffff', fontsize=10, fontfamily='monospace') plt.yticks (color='#ffffff', fontsize=10, fontfamily='monospace')
ax = plt.gca () ax.spines[«top»].set_visible (False) ax.spines[«right»].set_visible (False) ax.spines[«left»].set_color ('#ffffff') ax.spines[«bottom»].set_color ('#ffffff')
ax.set_facecolor ('#000000') plt.gcf ().patch.set_facecolor ('#000000')
plt.plot ([-0.5, len (acoustic_album)-0.5], [acoustic_album.max ()*1.05]*2, color='#ffffff', linewidth=2) plt.plot ([-0.5, len (acoustic_album)-0.5], [acoustic_album.min ()*0.95]*2, color='#ffffff', linewidth=2)
plt.text (len (acoustic_album)-0.1, acoustic_album.min ()*0.92, «Inspired by Don’t Believe the Truth», fontsize=10, color='lightgrey', ha='right', va='bottom', alpha=0.8, fontfamily='monospace')
plt.tight_layout () plt.savefig («oasis_acousticness_black_white.png», dpi=300, facecolor=plt.gcf ().get_facecolor ()) plt.show () «»»
fig, ax = plt.subplots (figsize=(12, 9)) ax.axis ('off')
fig.patch.set_facecolor ('#000000') ax.set_facecolor ('#000000')
for _ in range (70): x = random.uniform (0, 1) y = random.uniform (0, 1) width = random.uniform (0.01, 0.07) height = random.uniform (0.02, 0.1) rect = plt.Rectangle ((x, y), width, height, color='#1c1c1c', alpha=random.uniform (0.15, 0.3)) ax.add_patch (rect)
lines = code_text.strip ().split ('\n')
y = 0.95 for line in lines: x_offset = random.uniform (0.0, 0.03) plt.text (0.05 + x_offset, y, line, fontfamily='monospace', fontsize=12, color='#ffffff', va='top', ha='left', linespacing=1.3) y -= 0.04
plt.text (0.95, 0.02, «Inspired by Don’t Believe the Truth», fontsize=10, color='#ffffff', ha='right', va='bottom', alpha=0.8, fontfamily='monospace')
plt.tight_layout () plt.savefig («oasis_acousticness_code_black_white.png», dpi=300, facecolor=fig.get_facecolor ()) plt.show ()
Анализ и вывод:
На линейном графике представлено среднее значение параметра acousticness для альбомов группы Oasis. Данный показатель отражает степень использования акустических инструментов и «незаполненного» звучания в композициях, позволяя оценить, насколько музыка склоняется к более мягкой, камерной и интимной форме. Из графика видно, что уровень acousticness в дискографии Oasis не демонстрирует устойчивого линейного тренда, а изменяется волнообразно. В ранних альбомах показатель находится на умеренном уровне, что соответствует характерному для бритпопа сочетанию электрического гитарного звучания с акустическими элементами. В середине дискографии наблюдаются заметные колебания: отдельные альбомы демонстрируют повышение доли акустического звучания, за которым следует резкое снижение. Это указывает на период экспериментирования с аранжировками и форматом композиций, когда группа чередует более насыщенные рок-треки с камерными и лиричными работами. Особенно низкие значения acousticness приходятся на альбомы, ориентированные на плотное и перегруженное звучание, где преобладают электрические гитары и высокий уровень энергии. В то же время более поздние релизы демонстрируют небольшое увеличение доли акустических элементов, что может свидетельствовать о стремлении к более сдержанному и выверенному звучанию. В целом анализ показывает, что Oasis не движется в сторону полной акустичности, однако с течением времени группа начинает более осознанно использовать акустические инструменты как выразительное средство. Акустическое звучание выполняет вспомогательную роль, усиливая эмоциональную составляющую композиций и подчеркивая их лирический характер. Это отражает переход от импульсивного и громкого раннего стиля к более зрелой и нюансированной музыкальной форме.
Заключительная часть
Сравнение ключевых аудиохарактеристик — Данные: danceability, speechiness, acousticness, loudness, energy — Тип графика: тепловая карта — Цель анализа: получить обобщённое представление о характере каждого альбома и визуально сравнить их между собой по нескольким параметрам одновременно
Сравнение ключевых аудиохарактеристик
Код для диаграммы:
import pandas as pd import matplotlib.pyplot as plt import numpy as np
df = pd.read_csv («Oasis.csv.xls»)
features = [«danceability», «speechiness», «acousticness», «loudness», «energy»] album_features = df.groupby («album_name»)[features].mean ()
album_features_norm = (album_features — album_features.min ()) / ( album_features.max () — album_features.min () )
plt.figure (figsize=(14, 8)) heatmap = plt.imshow ( album_features_norm.values, aspect="auto», cmap="gray», interpolation="nearest» )
plt.xticks ( ticks=np.arange (len (features)), labels=features, rotation=30, ha="right», fontsize=11, fontfamily="monospace», color=»#ffffff» )
plt.yticks ( ticks=np.arange (len (album_features_norm.index)), labels=album_features_norm.index, fontsize=11, fontfamily="monospace», color=»#ffffff» )
plt.title ( «Key Audio Characteristics of Oasis Albums\n (Comparative Heatmap)», loc="left», fontsize=16, fontweight="bold», fontfamily="monospace», color=»#ffffff» )
ax = plt.gca () ax.spines[«top»].set_visible (False) ax.spines[«right»].set_visible (False) ax.spines[«left»].set_visible (False) ax.spines[«bottom»].set_visible (False)
ax.set_facecolor (»#000000»)
plt.text ( len (features) — 0.2, len (album_features_norm.index) — 0.3, «Inspired by Don’t Believe the Truth», fontsize=10, color=»#bfbfbf», ha="right», va="bottom», fontfamily="monospace», alpha=0.8 )
plt.tight_layout () plt.savefig («oasis_heatmap_black_white.png», dpi=300, facecolor=plt.gcf ().get_facecolor ()) plt.show ()
Вывод
Тепловая карта ключевых аудиохарактеристик предоставляет обобщённое визуальное представление музыкального профиля каждого альбома Oasis и позволяет одновременно сравнить их по нескольким параметрам. Использование нормализованных значений делает различия между альбомами более наглядными и подчеркивает относительные акценты в звучании. Из графика видно, что ранние альбомы группы характеризуются высокой энергией и громкостью при сравнительно низкой доле акустического звучания и речевых элементов. Это соответствует импульсивному, насыщенному и агрессивному стилю раннего бритпопа, где основное внимание уделяется плотному электрическому звучанию и напору. Альбомы середины дискографии демонстрируют большую неоднородность: наблюдаются колебания показателей danceability и acousticness, что указывает на экспериментальный период, в котором группа варьирует аранжировки и структуру композиций, не отказываясь при этом от своего фирменного звучания. Поздние релизы выделяются более сбалансированным распределением характеристик. Энергия и громкость становятся более контролируемыми, тогда как акустические элементы используются осознаннее и точечнее. Это свидетельствует о переходе Oasis к более зрелому и выверенному музыкальному языку, где выразительность достигается не за счёт максимальной интенсивности, а через баланс и нюансировку. В совокупности все рассмотренные графики показывают, что дискография Oasis развивается не через резкие стилистические разрывы, а через постепенную трансформацию. Группа сохраняет устойчивые черты — мелодичную вокальную подачу, высокую энергию и рок-ориентированное звучание — одновременно адаптируя их под изменяющийся художественный контекст и собственный творческий опыт. Таким образом, проведённый анализ подтверждает, что Oasis представляет собой пример музыкальной эволюции внутри чётко очерченного стиля: от сырой и напористой экспрессии к более сдержанной, зрелой и структурированной форме, что и обеспечивает целостность и узнаваемость их дискографии.
Описание применения генеративной модели
Midjourney — генерация обложки
Adobe Color — генерация цветовой палитры
Chat GPT — запросы с целью рекомендаций по улучшению кода