LoginSignup
7
7

More than 3 years have passed since last update.

Spotify APIを使って日本のトップチャート分析

Last updated at Posted at 2019-07-17

はじめに

Spotify APIを使い、日本のトップチャートの楽曲情報をCSVに出力する方法を紹介します。
今回はGoogle ColaboratoryでSpotify APIを使い、日本のトップチャートの分析を行いました。
Google ColaboratoryはJupyter notebookを基盤としたオープンソースプロジェクトで、Chromeのデスクトップ版で動作します。
Colaboratoryを使えば、Chromeブラウザ上で簡単にPythonの実行環境を作ることができます。

Google Colaboratoryを使えばブラウザ上でPythonの実行環境が簡単に手に入る

APIキーの取得

こちらは前回の記事で紹介しているのでそちらを参考にしてみてください。
Spotify APIで楽曲情報やアーティスト情報を取得してみた

準備

まずはSpotifyのAPIを扱うためのライブラリである「spotipy」をインストール。
ドキュメントはこちらにあるみたいです。

!pip install spotipy

「pandas」をインポートします。
「spotipy」や「json」もインポートしOAuth2で通信できる状態にします。

import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import json

client_id = '発行したCLIANT ID'
client_secret = '発行したCLIANT SECRET'
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

次にSpotify ChartsからインポートするCSVをダウンロードしておきます。
スクリーンショット 2019-07-17 10.37.37.png
今回は日本のDairy TOP200のデータを使用しました。

CSV読み込み

ダウンロードしたCSVをGoogle Colaboratoryにアップロードし、Pandasでファイルを読み込んでいきます。
以下の記事を参考にさせていただきました。

google Colaboratoryでファイルを読み込む方法
pandasでcsv/tsvファイル読み込み(read_csv, read_table)

# google Colaboratoryでファイルを読み込む
from google.colab import files
uploaded = files.upload()

# PandasでCSVを読み込む、最初の行は省略
songs = pd.read_csv("regional-jp-daily-latest.csv", index_col = 0, header = 1)
songs.head(10)

# インデックスをリセットし、振り直す
songs = songs.reset_index()
songs.head(10)

コードを実行すると、ファイルを選択できるので先ほどダウンロードしたregional-jp-daily-latest.csvを読み込むと以下の結果が返ってきます。
スクリーンショット 2019-07-17 14.44.06.png

楽曲情報取得

まずデータを格納するためのPandasのDataFrameを作ります。
そのあとに、楽曲数分の情報をSpotifyのaudio_featuresを使って読み込んでいます。

pandas.DataFrame.from_dict
pandas.DataFrame, Seriesのインデックスを振り直すreset_index

# PandasのDataFrame作成
song_info = pd.DataFrame()

# 楽曲数分の情報を取得
for url in songs["URL"]: 
  df = pd.DataFrame.from_dict(spotify.audio_features(url))
  song_info = song_info.append(df)
song_info.head(10)

# song_infoのインデックスを振り直す
song_info = song_info.reset_index(drop = True)
song_info.head(10)

実行結果がこちら
スクリーンショット 2019-07-17 14.42.32.png
楽曲の「アコースティック感」や「曲の過激さ」、「踊りやすさ」、「テンポ」など詳細な情報を取得することができました。

CSVファイルに出力

先ほど楽曲の基本情報(songs)と楽曲の詳細情報(song_info)を結合して、CSVファイルに出力していきます。

pd.concat([songs, song_info], axis = 1).to_csv("songs.csv")
files.download('songs.csv') 

実行すると以下のCSVファイルをダウンロードすることができました。
スクリーンショット 2019-07-17 15.26.21.png

さいごに

今回Spotify APIを使い、日本のトップチャートの楽曲情報をCSVに出力することができ、Spotifyの楽曲にはたくさんの情報が付加されていて、楽曲の研究のすごさに驚きました。
自分的にも今どのようなジャンルの楽曲の人気があるのか、その楽曲はどんな情報をもった楽曲なのかということを知ることができ、満足しています。
また、Spotify APIを使い何かやってみたいと思います。

Spotify APIに興味がある方は良ければ、以下の記事も読んでみてください。
Spotify APIで楽曲情報やアーティスト情報を取得してみた

参考

こちらの記事を参考にさせていただきました。
Spotifyでトップチャートの曲(と自分の曲)の分析

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7