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

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:
pip install pandas plotly openpyxlDica: 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:
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:
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:
tabela = tabela.rename(columns={
"Beats.Per.Minute": "BPM",
"Loudness..dB..": "Volume",
"Energy": "Energy",
"Danceability": "Danceability",
"Valence.": "Valence"
})| Coluna Original | Novo Nome |
|---|---|
| Beats.Per.Minute | BPM |
| Loudness..dB.. | Volume |
| Energy | Energy |
| Danceability | Danceability |
| Valence. | Valence |
Passo 4: Selecionando colunas relevantes
Filtre apenas as colunas que serão usadas na análise:
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.
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:
tabela["BPM"] = tabela["BPM"] / 2Isso 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:
- Some 11 para eliminar valores negativos (transforma -11 em 0 e -2 em 9).
- Multiplique por 10 para escalar de 0 a 90.
tabela["Volume"] = (tabela["Volume"] + 11) * 10Resultado: 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:
medias = tabela.mean()| Característica | Média (0 a 100) |
|---|---|
| BPM | 60 (equivalente a 120 BPM reais) |
| Volume | ~50 |
| Energy | 64 |
| Danceability | 71 |
| Valence | 54 |
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
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”.

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!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








