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

Onde encontrar dados e ferramentas para text mining?

A aplicação das técnicas de mineração de texto pode trazer análises quantitativas informativas sobre a emoção, tom, categoria e outros padrões de interesse em documentos textuais. O primeiro passo é identificar, coletar e preparar estes dados brutos. Neste artigo, apresentamos bases de dados públicas de Economia e Finanças que podem ser exploradas, assim como ferramentas de programação úteis.

O que é mineração de textos e sua relação com IA?

Com uma matéria prima em comum, a mineração de textos e a inteligência artificial generativa usam grandes volumes de dados não estruturados para fins distintos e com aplicações em Economia, Finanças, Marketing e outras áreas. Mas quando devemos usar uma técnica e não a outra? O que é possível fazer e o que é mineração de textos? Neste artigo introduzimos estes tópicos e fornecemos alguns exemplos de aplicações.

Avaliando a evolução do Funcionalismo Público nos Estados Brasileiros usando Controle Sintético no R

O objetivo deste exercício é introduzir o uso do método de Controle Sintético na linguagem de programação R, aplicando-o a um exemplo prático relevante para a análise de políticas públicas. Vamos focar na utilização dessa técnica para avaliar o impacto do Regime de Recuperação Fiscal (RRF) sobre o número de vínculos do poder executivo nos estados brasileiros, com ênfase no caso do Rio de Janeiro.

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.