Analisando dados do Spotify no R

Todo ano os cientistas de dados do Spotify criam uma retrospectiva musical dos seus usuários. Essa apresentação é compartilhada por muitas pessoas nas redes sociais, que debatem acerca das suas preferências. A plataforma permite o acesso a alguns destes dados por meio de uma API. Para acessa-la com facilidade, podemos utilizar o pacote {spotifyr}.

Primeiramente, deve ser feito um cadastro no site do Spotify (https://developer.spotify.com/). Assim, podemos obter a chave pessoal para acessar a API. Basta colocar o ID e essa chave da seguinte maneira:

library(tidyverse)
library(spotifyr)
library(ggridges)

Sys.setenv(SPOTIFY_CLIENT_ID = 'xxxxxxxx')
Sys.setenv(SPOTIFY_CLIENT_SECRET = 'xxxxxxx')

access_token <- get_spotify_access_token()

Existem várias funções diferentes que podemos fazer neste pacote. Podemos obter características sonoras, datas de lançamento, popularidade, entre outras coisas. É possível também obter seus próprios dados de consumo. Por exemplo, a função "get_my_saved_albuns", retorna todos os álbuns das músicas que você curtiu. Esta função possui um limite de 50 álbuns, assim como outras semelhantes. Assim é preciso utilizar um loop para obter todos os seus álbuns.

No caso, selecionei os meus álbuns com as variáveis de data de lançamento e popularidade. Com esta categoria, criei uma variável binária para separar os álbuns entre populares e não-populares, utilizando um limite de 50 na escala do aplicativo.

lista = list()

for (i in seq(0,10)){
  x = i*50

  lista[[i+1]] <- get_my_saved_albums(limit = 50, offset = x)

  if (nrow(lista[[i+1]]) < 50){
  break
  }
}

meus_albuns <- bind_rows(lista, .id = "column_label") %>%
select(album.artists, album.name, album.popularity, album.release_date) %>%
mutate(album.release_date = stringr::str_extract(album.release_date, "^.{4}")) %>%
mutate(faixa_popularidade = ifelse(album.popularity > 50,"Populares", "Não-Populares"))

Assim, é possível criar um gráfico para observar o seu gosto em relação aos anos de lançamento.

 


ggplot(meus_albuns) +
geom_histogram(aes(x = album.release_date, fill = faixa_popularidade),stat="count", alpha = 0.8) +
theme_minimal() +
scale_x_discrete(breaks=seq(1969, 2020, 5)) +
scale_fill_brewer(palette = "Dark2") +
ylab("Álbuns na playlist") +
xlab("Ano de lançamento")

 

Outra possibilidade interessante é extrair informações de bandas ou gêneros específicos. Podemos, por exemplo, selecionar a banda Pearl Jam para analisar alguma característica sonora do conjunto. Um dado interessante é observar a chamada "valência" das músicas. Basicamente, a valência descreve a positividade musical de uma canção. Músicas com valência mais altas soam mais positivas.

Assim, selecionamos os álbuns de estúdio da banda para acompanhar a distribuição das músicas pela valência, que parece aumentar ao longo dos anos.

 


PJ <- get_artist_audio_features('Pearl Jam') %>%
mutate(ano_album = paste0(album_release_year, " - ", album_name)) %>%
filter(album_name %in% c("Ten", "Vs.", "Vitalogy", "No Code",
"Yield", "Binaural", "Riot Act",
"Pearl Jam", "Backspacer", "Lightning Bolt",
"Gigaton"))

ggplot(PJ, aes(x = valence, y = ano_album, fill = ano_album)) +
geom_density_ridges(alpha = 0.5, jittered_points = TRUE) +
theme_ridges() +
guides(fill=FALSE,color=FALSE) +
ggtitle("Valência dos álbuns do Pearl Jam")

 

________________________

(*) Para entender mais sobre a linguagem R e suas ferramentas, confira nosso Curso de Introdução ao R para análise de dados.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Previsões do Boletim Focus em Anos Eleitorais

Eleições são momentos de incerteza, mas os dados do Boletim Focus mostram que nem toda incerteza é igual. Ao analisar as previsões de inflação, juros e câmbio nos anos que antecederam as eleições de 2014, 2018 e 2022, este post investiga como o mercado revisa cenários macroeconômicos ao longo do tempo.

Como Medir o Ciclo das Concessões de Crédito usando Python

Este exercício apresenta uma análise quantitativa da relação entre o ciclo de concessões de crédito, a atividade econômica e a política monetária no Brasil. Utilizando a linguagem Python, o estudo aplica técnicas de decomposição de séries temporais (X13-ARIMA e Filtro HP) para isolar os componentes cíclicos dos dados. Os resultados da modelagem econométrica confirmam a pró ciclicidade do crédito em relação ao hiato do produto e sua sensibilidade às variações no hiato da taxa de juros real.

Choque de juros e renda em bens duráveis e não duráveis usando Python

Este artigo analisa a dinâmica do consumo no Brasil utilizando Python e modelos de Vetores Autorregressivos (VAR). Ao segregar bens duráveis e não duráveis, o estudo quantifica a sensibilidade a choques de juros e renda. Criamos todo o processo através do ciclo de dados: coleta, tratamento, análise de dados, modelagem e apresentação dos resultados, tudo automatizado usando a linguagem Python.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.