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/) для структурирования данных и написания кода. Когда это было возможно с моим уровнем знания Питона, я правила форматирование кода самостоятельно. В других случаях я по нескольку раз переписывала промпты, чтобы получить более подходящий результат визуализации данных. Промпты я писала на английском языке, так как на нём у меня это получается успешнее. Примеры промптов приведены в проекте. Там, где нейросеть использовалась для генерации текста, я перепроверяла его на ошибки и делала сноски. Более подробно использование нейросети описано внутри проекта.

Материалы