Análise de dados de músicas do Spotify com Python

Neste post você encontra o código completo e aprende a fazer análise de dados com Python baseada nas características das músicas mais populares Spotify.

Utilizaremos uma base gratuita do Kaggle com as 50 músicas mais ouvidas de 2019. Vamos analisar padrões como batidas por minuto (BPM), energia, dançabilidade e valência para criar um gráfico de radar que revela o “DNA” de uma música de sucesso. Tudo isso explicado de forma clara e prática, passo a passo, usando as bibliotecas Pandas e Plotly.

Segue lendo para aprender!

Para baixar os arquivos utilizados na aula, preencha:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

O que é a base de dados do Top 50 do Spotify?

A base de dados do Top 50 do Spotify de 2019, disponível no Kaggle (e no arquivo que pode ser baixado aqui em cima), contém informações detalhadas sobre as músicas mais populares do ano.

Ela inclui colunas como nome da música, artista, gênero, BPM, energia, dançabilidade, volume e valência.

Quais características vamos analisar?

  • BPM (Batidas por Minuto): Mede o ritmo da música, geralmente entre 80 e 200.
  • Energia: Uma escala de 0 a 100 que indica o quão enérgica é a música (ex.: 80 para músicas animadas, 40 para mais calmas).
  • Dançabilidade: Também de 0 a 100, mostra o quão fácil é dançar a música.
  • Volume: Medido em decibéis (dB), geralmente em valores negativos (ex.: -11 a -2).
  • Valência: De 0 a 100, indica se a música é alegre (próxima de 100) ou triste (próxima de 0).
Neste post você vai aprender a fazer análise de dados com Python baseada nas características das músicas mais populares Spotify.

Como preparar o ambiente para a análise?

Antes de começar, precisamos configurar o ambiente com as bibliotecas certas.

Quais bibliotecas vamos usar?

  • Pandas: Pra carregar, manipular e analisar a base de dados.
  • Plotly: Pra criar visualizações interativas, como o gráfico de radar.
  • OpenPyXL: Opcional, para exportar os dados para o Excel.

Como instalar as bibliotecas?

No terminal, execute:

Codigo
pip install pandas plotly openpyxl

Dica: Se você não tem muita noção da biblioteca Pandas pra Python, veja este post com uma Introdução ao Pandas para você sair do zero em uma aula.

Como carregar e preparar os dados?

Passo 1: Importando as bibliotecas

No Python, importe as bibliotecas necessárias:

Python
import pandas as pd

import plotly.express as px
  • Pandas (apelidado de pd) será usado para manipular os dados.
  • Plotly Express (apelidado de px) facilita a criação de gráficos interativos.

Passo 2: Carregando a base de dados

Carregue o arquivo CSV com os dados:

Python
tabela = pd.read_csv("top50.csv", encoding="latin1")

Por que usar encoding="latin1"?

É que a base contém caracteres especiais (por exemplo, “Señorita”, que tem esse ñ com til), e o encoding latin1 garante que esses caracteres sejam lidos corretamente.

Passo 3: Renomeando colunas

Para facilitar a análise, vamos renomear as colunas com nomes mais intuitivos:

Python
tabela = tabela.rename(columns={

"Beats.Per.Minute": "BPM",

"Loudness..dB..": "Volume",

"Energy": "Energy",

"Danceability": "Danceability",

"Valence.": "Valence"

})

Coluna OriginalNovo Nome
Beats.Per.MinuteBPM
Loudness..dB..Volume
EnergyEnergy
DanceabilityDanceability
Valence.Valence

Passo 4: Selecionando colunas relevantes

Filtre apenas as colunas que serão usadas na análise:

Python
tabela = tabela[["BPM", "Volume", "Energy", "Danceability", "Valence"]]

Por que fazer isso? Reduzir a base às colunas principais torna a análise mais focada e o código mais limpo.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Como normalizar os dados para comparação?

Para criar o gráfico de radar, todas as colunas precisam estar na mesma escala (0 a 100). Energia, dançabilidade e valência já estão nessa escala, mas BPM e Volume precisam de ajustes.

Normalizando o BPM

O BPM varia entre 85 e 190. Para aproximá-lo de 0 a 100, dividimos por 2:

Python
tabela["BPM"] = tabela["BPM"] / 2

Isso resulta em valores entre aproximadamente 42,5 e 95, mantendo a escala próxima de 0 a 100.

Normalizando o Volume

O volume está em decibéis negativos (-11 a -2). Para convertê-lo:

  1. Some 11 para eliminar valores negativos (transforma -11 em 0 e -2 em 9).
  2. Multiplique por 10 para escalar de 0 a 90.
Python
tabela["Volume"] = (tabela["Volume"] + 11) * 10

Resultado: Todas as colunas agora estão em uma escala comparável (aproximadamente 0 a 100).

Como calcular as médias das características?

Para descobrir o “DNA” das músicas do Top 50, calculamos a média de cada coluna:

Python
medias = tabela.mean()
CaracterísticaMédia (0 a 100)
BPM60 (equivalente a 120 BPM reais)
Volume~50
Energy64
Danceability71
Valence54

Como criar o gráfico de radar?

O gráfico de radar (ou polar chart) é ideal para visualizar as médias das características em um formato circular.

Código para o gráfico

Python
fig = px.line_polar(r=medias.values, theta=medias.index, line_close=True, range_r=[0, 100], title="DNA das Músicas Top 50 do Spotify")

fig.show()

  • r: Valores das médias (ex.: 60, 50, 64, 71, 54).
  • theta: Nomes das colunas (BPM, Volume, Energy, Danceability, Valence).
  • line_close=True: Conecta o último ponto ao primeiro, fechando o círculo.
  • range_r=[0, 100]: Define a escala de 0 a 100.
  • title: Adiciona o título “DNA das Músicas Top 50 do Spotify”.
gráfico de radar mostrando dançabilidade como principal fator

O que o gráfico revela sobre o Top 50 do Spotify?

O gráfico de radar mostra o “DNA” médio das músicas mais populares:

  • Dançabilidade (71): As músicas do Top 50 são altamente dançantes, ideais para festas e playlists animadas.
  • Energia (64): Moderadamente enérgicas, com um equilíbrio entre faixas agitadas e calmas.
  • Valência (54): Tendem a ser neutras, misturando faixas alegres e mais introspectivas.
  • BPM (60, equivalente a 120 BPM reais): Ritmo médio, comum em pop e eletrônica.
  • Volume (~50): Níveis de volume moderados, adequados para streaming.

Insight principal: Para criar uma música com potencial de Top 50, foque em alta dançabilidade, energia moderada e um BPM próximo de 120.

Como refinar a análise?

Você pode refinar incluindo outras métricas, como:

  • Mediana: Substitua mean() por median() para ver se os resultados mudam.
  • Gêneros específicos: Filtre a base por gênero (ex.: pop, hip-hop) e compare os DNAs.
  • Outras colunas: Inclua variáveis como duração ou acusticidade para análises mais profundas.

Conclusão

Aqui você aprendeu como usar Python, Pandas e Plotly para analisar o Top 50 do Spotify e descobrir o que torna uma música um sucesso.

Vimos que a dançabilidade é o fator mais marcante, seguida por energia moderada e um BPM médio de 120.

Com esse conhecimento, você pode criar suas próprias análises ou até aplicar essas técnicas em outros conjuntos de dados. Experimente a base do Kaggle e personalize o código para explorar mais padrões!

Aprenda ainda mais com guias como estes na seção sobre Python do nosso blog!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos