Original size 832x1248

Анализ хип-хопа на Spotify с помощью Pandas

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

Цель и данные проекта

Цель: Выявить факторы популярности хип-хоп музыки через анализ её аудиохарактеристик.

Данные: Spotify Tracks Dataset с Kaggle. Исходный объём — 114,000 треков, 21 характеристика на каждый. После фильтрации по жанру hip-hop для анализа отобрано 1,000 треков.

Инструменты: Python, Pandas, NumPy, Matplotlib, Seaborn.

Процесс работы с Pandas: этапы и код

1. Загрузка данных:

python import pandas as pd df = pd.read_csv ('dataset.csv') print (f"Загружено треков: {len (df):, }»)

2. Фильтрация и подготовка:

python Выделение хип-хоп треков hiphop_df = df[df['track_genre'] == 'hip-hop'].copy () Удаление нечисловых колонок для корреляционного анализа numeric_df = hiphop_df.select_dtypes (include=[np.number])

3. Предобработка для визуализации:

python Нормализация громкости и темпа для радар-чарта hiphop_df['loudness_norm'] = (hiphop_df['loudness'] — hiphop_df['loudness'].min ()) / (hiphop_df['loudness'].max () — hiphop_df['loudness'].min ())

4. Создание визуализаций (подробнее в соответствующих разделах).

Использование нейросетей (ChatGPT) в проекте

В процессе работы к ChatGPT обращалась для решения технических задач и генерации идей.

Примеры промптов и помощи:

Поиск решения: «Как исправить ValueError при расчете df.corr () из-за строковых колонок?» → ИИ подсказал метод select_dtypes.

Оптимизация кода: «Как стилизовать график в Matplotlib под хип-хоп эстетику: тёмный фон, неоновые цвета?»

Идеи для визуализации: «Какой тип графика лучше всего подойдет для сравнения средних значений по нескольким жанрам?» → Была предложена идея радар-чарта.

Форматы визуализации: изучающий и объясняющий

В проекте сознательно использованы оба подхода к визуализации данных.

1. Изучающие визуализации (Exploratory) — для поиска неизвестных паттернов и формирования гипотез.

Scatter plot «Энергия vs Танцевальность»: Позволил обнаружить, что популярные треки группируются в центре, а не на экстремальных значениях.

2. Объясняющие визуализации (Explanatory) — для четкого донесения уже найденных инсайтов до аудитории.

Барчарт топ-исполнителей: Наглядно показывает, кто чаще всего представлен в датасете.

Радар-чарт сравнения жанров: Позволяет сразу увидеть, по каким параметрам хип-хоп превосходит другие жанры.

Гистограмма популярности: Визуализирует вывод о «пирамиде популярности» в хип-хопе.

Стилизация графиков и источники вдохновения

Чтобы визуализации отражали тему проекта, была разработана кастомная стилизация.

Ключевые решения:

Цветовая палитра: Неоновые цвета (< h3>FF00FF, 00FFFF, #FFFF00), ассоциирующиеся с современной хип-хоп эстетикой и ночной клубной атмосферой.

Фон: Тёмный (dark_background), что повышает контрастность и создает драматичный эффект.

Источники вдохновения: Обложки хип-хоп альбомов 2020-х, инфографика Spotify Wrapped, визуальный язык уличного искусства и граффити.

Техническая реализация:

python plt.style.use ('dark_background') custom_palette = ['< h3>FF00FF', '00FFFF', '< h3>FFFF00', 'FF5500'] sns.set_palette (sns.color_palette (custom_palette))

Визуализации и анализ

Original size 1048x447

Вывод: Распределение популярности смещено влево. Среднее значение — 37.8, а медиана — 58.0, что указывает на большое количество треков с очень низкой популярностью, формирующих «длинный хвост» распределения.

Original size 662x449

Данные: В датасете наиболее представлены Jack Harlow (46 треков), Lizzo (44) и Sidhu Moose Wala (39). Вывод: Топ отражает современную хип-хоп сцену (2020-е) и её глобализацию (артисты из США, Индии, Африки).

Original size 500x446

Вывод: Популярные треки (отмечены звёздочками) сконцентрированы в зоне умеренных значений (0.6-0.8). Это указывает на важность баланса, а не экстремальных значений.

Original size 1093x438

Вывод: Хип-хоп объективно превосходит поп, рок, джаз и классику по уровню энергии. Он также лидирует по танцевальности, что опровергает стереотип о нём как о чисто «разговорном» жанре.

Примененные статистические методы

1. Описательная статистика (df.describe ()): Использована для получения сводных метрик (среднее, ст. отклонение, минимум/максимум) по числовым параметрам.

2. Корреляционный анализ Пирсона (df.corr ()): Применен для поиска линейных зависимостей. Метод select_dtypes позволил избежать ошибок из-за нечисловых данных.

3. Сравнение средних значений: Визуальное сравнение через радар-чарт для выявления отличий хип-хопа от других жанров.

4. Анализ распределений: Гистограмма использована для оценки формы распределения популярности.

5. Группировка и агрегация (groupby (), agg ()): Применены для расчёта средних значений по жанрам и составления топа исполнителей.

Итоговые выводы

1. Популярность не нормальна: Для хип-хопа характерна «пирамида» с массой малоизвестных треков и единицами хитов.

2. Важна акустика, а не только бит: На популярность положительно влияют живые инструменты.

3. Парадокс танцевальности: Самые танцевальные треки в среднем менее популярны, что указывает на важность других факторов (лирика, энергия).

4. Хип-хоп — жанр-лидер по энергии: По объективным аудиохарактеристикам он превосходит другие крупные жанры.

5. Идеальный темп: Средний темп 116.8 BPM соответствует оптимальному для восприятия рэп-чтения.

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

В работе использовалась генеративная модель GPT-4 от OpenAI через платформу ChatGPT. Ссылка на модель: https://openai.com/chatgpt.

Цель использования:

Искусственный интеллект применялся как вспомогательный инструмент в следующих целях:

Техническая поддержка — решение ошибок в коде Python/Pandas (около 20% помощи)

Идеи для визуализации — подбор типов графиков под конкретные задачи (около 15%)

Оптимизация кода — улучшение читаемости и эффективности (около 10%)

Структура презентации — организация логики изложения материала (около 25%)

Формулировка выводов — помощь в ясном изложении результатов анализа (около 30%)

Конкретные примеры применения:

Пример 1: Решение технической проблемы При расчёте корреляционной матрицы возникала ошибка из-за наличия строковых колонок в данных. ChatGPT предложил решение: использовать метод select_dtypes (include=[np.number]) для предварительного отбора только числовых данных перед расчётом корреляции.

Пример 2: Идеи для визуализации Для сравнения средних значений пяти характеристик по четырём музыкальным жанрам ИИ предложил использовать радар-чарт (radar chart) с предварительной нормализацией значений для корректного отображения.

Пример 3: Структура проекта При организации лонгрида ChatGPT помог разработать логичную структуру: постановка проблемы → описание метода → демонстрация визуализаций → формулировка выводов.

Использованные промпты:

В процессе работы были использованы следующие промпты:

«Как отфильтровать данные по жанру 'hip-hop' в Pandas DataFrame?»

«Какие статистические методы подойдут для анализа музыкальных характеристик?»

«Как создать heatmap корреляций с кастомной цветовой палитрой в Seaborn?»

«Как исправить проблему с отображением русских шрифтов в Matplotlib?»

«Какие выводы можно сделать из корреляции популярности и танцевальности -0.275?»

«Как стилизовать графики в стиле хип-хоп: тёмный фон, неоновые цвета?»

«Как структурировать презентацию анализа данных для учебного проекта?»

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