
Цель и данные проекта
Цель: Выявить факторы популярности хип-хоп музыки через анализ её аудиохарактеристик.
Данные: 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))
Визуализации и анализ
Вывод: Распределение популярности смещено влево. Среднее значение — 37.8, а медиана — 58.0, что указывает на большое количество треков с очень низкой популярностью, формирующих «длинный хвост» распределения.
Данные: В датасете наиболее представлены Jack Harlow (46 треков), Lizzo (44) и Sidhu Moose Wala (39). Вывод: Топ отражает современную хип-хоп сцену (2020-е) и её глобализацию (артисты из США, Индии, Африки).
Вывод: Популярные треки (отмечены звёздочками) сконцентрированы в зоне умеренных значений (0.6-0.8). Это указывает на важность баланса, а не экстремальных значений.
Вывод: Хип-хоп объективно превосходит поп, рок, джаз и классику по уровню энергии. Он также лидирует по танцевальности, что опровергает стереотип о нём как о чисто «разговорном» жанре.
Примененные статистические методы
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?»
«Как стилизовать графики в стиле хип-хоп: тёмный фон, неоновые цвета?»
«Как структурировать презентацию анализа данных для учебного проекта?»