Original size 1750x2480

Waterparks: статистика прослушивания

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

Концепция

Waterparks — популярная американская поп-панк группа, активная с 2011 года. Их музыкальный стиль сильно менялся со временем, и прямо сейчас они находятся в новой переломной точке для своего творчества. Именно поэтому мне хочется проанализировать количество прослушиваний сквозь всю дискографию группы — мне было бы интересно соотнести получившиеся результаты с их новым релизом, когда он выйдет.

Для анализа я собрала датасет из треков, дат их выпуска, их отношения к альбому или эре, количеству прослушиваний на Spotify и других интересовавших меня параметров. Источники информации: Genius, Spotify, Kworb, страница Waterparks на Band Wiki и AZLyrics. Для форматирования данных я использовала ChatGPT:

big
Original size 1800x1033

Этапы работы

Для обработки данных я пользовалась ChatGPT. В промптах я указывала, какие данные из таблицы нужно проанализировать, к какому виду их привести и как оформить.

big
Original size 1800x178

В процессе я корректировала промпты, чтобы уточнять детали графиков, править визуализацию и расширять или сужать выборку информации.

Original size 1800x120

Стилизация

Original size 1800x900

Для стилизации графиков я использовала цвета с обложек альбомов Waterparks, а так же шрифт, вдохновлённый почерком вокалиста Остена Найта, кириллическую версию (= модификацию найденного в интернете латинского шрифта) которого я сделала сама.

Original size 1800x350

Графики

Первая диаграмма — линейная, чтобы быстро сравнить, какие релизы Waterparks набрали больше прослушиваний.

Original size 1216x542

Этот график сильно меня расстроил, потому что крайний альбом Waterparks — Intellectual Property — на мой взгляд, самый сильный, и поэтому заслуживает намного большего внимания.

Original size 1800x1099
Original size 1800x91

Порядок действий в коде выше (ChatGPT):

  1. Загружаю таблицу из Google Sheets (скачиваю как .xlsx) и читаю лист Tracks через Pandas.
  2. Оставляю нужные строки (только релизы Waterparks) и привожу колонку со стримами к числовому формату.
  3. Группирую данные по релизу (альбом/EP) и считаю сумму стримов по всем трекам внутри каждого релиза.
  4. Сортирую релизы по суммарным стримам (по убыванию), чтобы получить рейтинг.
  5. Создаю горизонтальную столбчатую диаграмму: по оси Y — названия релизов, по оси X — сумма прослушиваний.
  6. Назначаю каждому релизу свой цвет (заранее заданная палитра).
  7. Настраиваю оформление: чёрный фон, белый текст, нужный шрифт, аккуратные вертикальные линии-сетки, убираю рамку.
  8. Добавляю заголовок и подпись оси X («Всего прослушиваний») и показываю график.

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

Вторая диаграмма — точечный график популярности треков по датам релиза. Несмотря на то, что предыдущий график тоже даёт эту информацию, мне хотелось наглядно это подтвердить.

Original size 1407x637
Original size 1800x675

Третий график — тепловая карта. График показывает, какие по счёту внутри альбома треки набрали наибольшее количество прослушиваний.

Original size 1155x557

Интересно, что сильнее всего здесь выделяются не самые популярные треки, а наименее популярный трек за всю дискографию группы — 7-й трек в альбоме FANDOM. Песня называется Group Chat и длится всего 14 секунд — в ней участники группы по очереди называют свои имена.

Original size 1723x743

Порядок действий в коде (ChatGPT):

  1. Загружаю таблицу из Google Sheets и читаю лист Tracks через Pandas.
  2. Оставляю только нужные релизы (альбомы) и привожу стримы к числам.
  3. Определяю порядок треков: беру колонку с номером трека, а если её нет — создаю номер по порядку строк внутри каждого альбома.
  4. Строю сводную таблицу (pivot): строки = альбомы, колонки = номер трека, значения = стримы.
  5. Делаю шкалу удобной для сравнения: применяю log10(стримов), чтобы большой разброс не «сломал» цвета.
  6. Рисую heatmap через imshow: каждая ячейка — один трек в альбоме, цвет показывает уровень прослушиваний.
  7. Ставлю кастомную палитру: красный = низкие, жёлтый = средние, зелёный = высокие значения.
  8. Выравниваю сетку: включаю линии по границам ячеек, чтобы квадраты были ровные и аккуратные.
  9. Добавляю подписи осей («Номер трека», названия альбомов), цветовую шкалу справа и оформляю стиль (чёрный фон, белый текст, без рамки).

Четвёртый график — круговые диаграммы, показывающие долю топ-треков внутри альбомов.

Original size 1781x472

Несмотря на то, что Greatest Hits, Entertainment и Intellectual Property набрали почти одинаковое количество прослушиваний, процент топ-треков внутри них сильно различается. Самый заслушанный по количеству песен альбом Waterparks — Double Dare, хотя в общем чарте он занимает только второе место.

Original size 1723x1144

Пятая диаграмма показывает соотношение прослушиваний и доли нецензурной лексики в текстах песен. Мне показалось интересным проанализировать это, потому что со временем тексты группы сильно поменялись, и я хотела посмотреть, отпугнуло ли это аудиторию.

Original size 1357x607
Original size 1800x675

Порядок действий в коде (ChatGPT):

  1. Загружаю таблицу из Google Sheets и читаю лист Tracks в Pandas.
  2. Привожу к числам колонки со стримами, explicit word count и overall word count, убираю пустые строки.
  3. Считаю для каждого трека долю нецензурной лексики: explicit% = explicit word count / overall word count × 100.
  4. Строю scatter: по X — explicit%, по Y — прослушивания в Spotify.
  5. Включаю логарифмическую шкалу по Y, чтобы треки с очень разными стримами читались на одном графике.
  6. Рисую heatmap через imshow: каждая ячейка — один трек в альбоме, цвет показывает уровень прослушиваний.
  7. При желании раскрашиваю точки по альбомам/эпохам (один цвет = один релиз).
  8. Добавляю линию тренда (линейная регрессия/аппроксимация), чтобы визуально оценить направление связи.
  9. Оформляю график в общем стиле: чёрный фон, белые подписи на русском, аккуратная сетка, без рамки.

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

В проекте я использовала ChatGPT 5.2 (https://chatgpt.com/) для структурирования данных и написания кода. Когда это было возможно с моим уровнем знания Питона, я правила форматирование кода самостоятельно. В других случаях я по нескольку раз переписывала промпты, чтобы получить более подходящий результат визуализации данных. Промпты я писала на английском языке, так как на нём у меня это получается успешнее. Примеры промптов приведены в проекте. Там, где нейросеть использовалась для генерации текста, я перепроверяла его на ошибки и делала сноски. Более подробно использование нейросети описано внутри проекта.

Материалы

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