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

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

PROTECT STATUS: not protected

Введение

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

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

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

https://github.com/karlicoss/spotifyexport

Файл для анализа:

https://www.kaggle.com/datasets/wardabilal/spotify-global-music-dataset-20092025

Блокнот с кодом:

https://colab.research.google.com/drive/164uAGBKOECdpFLCc7haIhhzOT5avxHLa?usp=sharing

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

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

Для создания визуальной части графиков, я вдохновлялась цветовым решением приложения «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» для генерации изображения на обложку.

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

Анализ популярности в Spotify
Проект создан 14.01.2026
Мы используем файлы cookies для улучшения работы сайта и большего удобства его использования. Более подробную информац...
Показать больше