Исходный размер 895x1294

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

PROTECT STATUS: not protected

Введение

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))

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

• 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

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

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

Исходный размер 1253x449
  1. Корреляционный анализ (основной статистический блок)

Код: 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)

Исходный размер 593x295
  1. Проверка значимости связи

Код: from scipy.stats import pearsonr

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

Исходный размер 1255x604
Исходный размер 1157x840
  1. Аггрегации для сравнений

Код: 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)

Исходный размер 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)

Исходный размер 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)

Исходный размер 1172x546
Исходный размер 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. Год релиза и размер альбома почти не связаны с популярностью трека (около нуля). Популярность скорее зависит от артиста или контекста, чем от времени.
Анализ популярности в Spotify
Проект создан 14.01.2026
Мы используем файлы cookies для улучшения работы сайта и большего удобства его использования. Более подробную информац...
Показать больше