Original size 895x1294

Анализ популярности в Spotify

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

Введение

Spotify — одна из главных платформ для музыки, и популярность там почти прикладной KPI. От популярности зависят рекомендации, попадание в плейлисты, рост аудитории и заработок артиста.

Для своего проекта по анализу данных, я выбрала делать анализ именно этой темы, потому что это актуальная и интересная тема для молодежи. Большинство людей слушают музыку каждый день, и это становиться неотъемлемой частью их жизни.

Источник данных:

https://github.com/karlicoss/spotifyexport

Вид графиков:

- Точечные диаграммы - Гистограмма распределения длительностей - Столбчатые диаграммы - Линейные графики

Для создания визуальной части графиков, я вдохновлялась цветовым решением приложения «Spotify».

- Тёмный фон (как интерфейс Spotify / dark mode) - Неоновые/кислотные акценты - Высокая контрастность текста

Что я изучала?

1. Корреляционная матрица 2. Расшифровка главного фактора (artist_popularity) через scatter: распределение, потолок, шум. 3. Частные гипотезы: - длительность (распределение + связь + тренд) - explicit (цветовая группировка) - тип релиза (сравнение групп) - жанровый срез (топ жанров) - временная динамика (количество треков по годам)

Этапы работы

1. Импорт и загрузка

Код: import pandas as pd import numpy as np

df = pd.read_csv («spotify_data clean.csv»)

print (df.shape) # (8582, 15) print (df.head (3))

2. Приведение типов и инженерия признаков

• explicit переводим в 0/1 (для корреляций и моделей). • из album_release_date достаём год release_year.

Код: df[«explicit_numeric»] = df[«explicit»].astype (int)

df[«album_release_date»] = pd.to_datetime (df[«album_release_date»], errors="coerce») df[«release_year»] = df[«album_release_date»].dt.year

3. Контроль качества

Код: missing = df.isna ().mean ().sort_values (ascending=False) print (missing.head (5))

Original size 1253x449

4. Корреляционный анализ (основной статистический блок)

Код: num_cols = [ «track_popularity», «artist_popularity», «artist_followers», «explicit_numeric», «track_duration_min», «release_year», «album_total_tracks» ]

corr_with_target = df[num_cols].corr (numeric_only=True)[«track_popularity»].sort_values (ascending=False) print (corr_with_target)

Original size 593x295

5. Проверка значимости связи

Код: from scipy.stats import pearsonr

r, p = pearsonr (df[«artist_popularity»], df[«track_popularity»]) print (r, p)

Original size 1255x604
Original size 1157x840

6. Аггрегации для сравнений

Код: top_artists = ( df.groupby («artist_name») .agg (artist_pop=(«artist_popularity»,"mean»), track_count=(«track_id»,"count»)) .sort_values («artist_pop», ascending=False) .head (15) ) print (top_artists)

Original size 1201x570

Сравнение типов альбомов:

Код: album_types = ( df.groupby («album_type») .agg (avg_popularity=(«track_popularity»,"mean»), avg_duration=(«track_duration_min»,"mean»), track_count=(«track_id»,"count»)) .reset_index () ) print (album_types)

Original size 1228x500

Подготовка жанров

Код: genres = df.dropna (subset=[«artist_genres»]).copy () genres[«genre»] = genres[«artist_genres»].str.split (», «) genres = genres.explode („genre“)

пример метрики: сумма популярности топ-10 треков на жанр

top_genres = ( genres.sort_values („track_popularity“, ascending=False) .groupby („genre“) .head (10) .groupby („genre“)[„track_popularity“].sum () .sort_values (ascending=False) .head (15) ) print (top_genres)

Original size 1172x546
Original size 1233x575

Также для работы была использована нейросеть «Sora» для генерации изображения на обложку.

Используемые статистические методы

1. Описательная статистика: среднее, медиана, диапазон, стандартное отклонение 2. Корреляционный анализ - оценка линейной связи факторов с track_popularity, - проверка значимости через p-value 3. Группировки/агрегации - сравнение средних по категориям (album_type, категории популярности артиста), - топ-N подход (топ артистов, топ жанров). 4. Трендовые линии/регрессия - линейный тренд для связей, - нелинейный тренд для длительности

Выводы

1. Самый сильный фактор среди рассмотренных — популярность артиста (r ≈ 0.467): умеренная связь, но далеко не «гарантия хита» 2. Подписчики коррелируют слабее (r ≈ 0.232) 3. Explicit и длительность дают слабый положительный эффект (≈ 0.13 и 0.11) — то есть «есть тенденция», но она небольшая. 4. Год релиза и размер альбома почти не связаны с популярностью трека (около нуля). Популярность скорее зависит от артиста или контекста, чем от времени.

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