見出し画像

PythonでSpotify2017年トップ100を分析してみた前編

はじめに

今回は音楽配信サービスとして世界的にも有名なSpotifyのデータセットを使用し、2017年のトップ100を分析してみました。

経緯

Kaggleを見ていたところ、今回する使用するデータセットが見つかったからです。

学習内容

・foliumの使い方を知る
・2017年の曲別再生数やアーティスト別再生数などの結果を知る

使用するライブラリ

以下、使用するライブラリとなります。

・python 3.7.0
今回使用したプログラミング言語python 3.7.0
・jupyter notebook
プログラムを実行し、結果を記録しながら、分析をするためのツール
・pandas
データの読み込みや統計量の表示など、データ分析に簡単にするためのライブラリ
・matplotlib
グラフ描画ツール
・seaborn
matplotlibの機能をより美しく、またより簡単に実現するためのライブラリ
・folium
データを地図上に可視化する

データセット

以下、CSVファイルをこちらからダウンロードしてください。

・data.csv
Spotifyが利用可能な53カ国200位までの2017年日次ランキング
・featuresdf.csv
2017年のSpotifyトップ100曲の詳細データ。

Regionの見方

分析結果に行く前に、今後度々登場するRegionの見方となります。

・JPN→日本
・USA→アメリカ
・GBR→イギリス
・BRA→ブラジル
・PHL→フィリピン

国別総再生数

plt.figure(figsize=(15,8))
ax = sns.barplot(x=df_streams_total["Country"], y=df_streams_total["Streams"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)

・アメリカがダントツでトップ
・アメリカに続いてイギリスが2位。世界のミュージックシーンを牽引するトップ2だと思うのでこの結果も妥当かと思う
・続いてブラジル、メキシコ。中南米で人工の多い国2つも上位にランキング
・気になる国としてはフィリピンがアジアの中で1番再生数が多い
・日本は中の下にランク

国別総再生数を世界地図で表示

上記棒グラフで表示したデータをfoliumを使って世界地図上に表示します。foliumの使い方についてはこちらを参照ください。

country_geo = '/xxx/world-countries.json'

map = folium.Map(location=[51, -0.1], zoom_start=2.4)

map.choropleth(geo_data=country_geo, data=df_map,
             columns=['Region', 'Streams'],
             key_on='feature.id',
             fill_color='YlGnBu',
             legend_name='Streams at total')
map

・棒グラフと同じ結果が地図上に表示されている
・Spotify未対応の地域は黒く塗りつぶされている
・アフリカ、中東、東欧は未対応の国が多い

曲別月次総再生数

plt.figure(figsize=(15,8))
ax = sns.barplot(x=df_track_name["Track Name"], y=df_track_name["Streams"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)

・Ed SheeranのShape of Youがダントツでトップ
・2位、3位はLuis FonsiのDespacitoのリミックスとオリジナル。リミックスのほうが順位が上

アーティスト別月次総再生数

plt.figure(figsize=(15,8))
ax = sns.barplot(x=df_artist["Artist"], y=df_artist["Streams"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)

・Ed Sheeranがダントツで一位
・ベスト10まですべて男性アーティスト

Shape of You 月次総再生数

featuresdf.csvによると、2017年でランキングトップはEd SheeranShape of Youとなっています。この曲の月次総再生数を分析してみます。ちなみにCDのリリースは2017年1月6日のようです。

plt.figure(figsize=(15,8))
ax = sns.pointplot(x=df_trackname["Datetime"].dt.strftime('%Y/%m').sort_values(), y=df_trackname.Streams, hue=df_trackname.Region)
ax.set_xticklabels(ax.get_xticklabels(), rotation=30)

・イギリスは発売月である1月に一番再生されている
・アメリカ、ブラジル、フィリピンは3月に一番再生されている

Ed Sheeran 月次総再生回数

今度はShape of YouをリリースしたアーティストEd Sheeranの全曲総再生回数を分析してみます。

plt.figure(figsize=(15,8))
ax = sns.pointplot(x=df_artist["Datetime"].dt.strftime('%Y/%m').sort_values(), y=df_artist.Streams, hue=df_artist.Region)
ax.set_xticklabels(ax.get_xticklabels(), rotation=30)

・アメリカは1月が一番再生数が多く、その後減少し、9月からまた増加している
・イギリスは3月が一番再生数が多く、その後減少
・他の国はほぼ横ばい

日本の曲別月次総再生数

plt.figure(figsize=(15,8))
ax = sns.barplot(x=df_trackname_jpn["Track Name"], y=df_trackname_jpn["Streams"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)

・Shape of Youは日本のランキングでもぶっちぎりの一位
・ONE OK ROCKのWherever you are,清水翔太の My Boo, DAOKO×米津玄師の打上花火がベストテンにランクイン

日本のアーティスト別月次総再生数

plt.figure(figsize=(15,8))
ax = sns.barplot(x=df_artist_jpn["Artist"], y=df_artist_jpn["Streams"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)

・Ed Sheeranは日本のアーティストランキングでもトップ
・清水翔太、ONE OK ROCK、AAAと3組のアーティストがベスト10入り
・K-POPアイドルのTWICEが3位

月別再生数の平均

何月が一番一日あたりの再生数が多いかを表示します。

plt.figure(figsize=(15,8))
ax = sns.pointplot(x=df_streams_month["Datetime"].dt.strftime('%Y/%m').sort_values(), y=df_streams_month["Streams"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=30)

・1月が一番一日あたりの再生数が少ない
・3月が一番一日あたりの再生数が多い

日本の月別再生数の平均

plt.figure(figsize=(15,8))
ax = sns.pointplot(x=df_streams_month_jpn["Datetime"].dt.strftime('%Y/%m').sort_values(), y=df_streams_month_jpn["Streams"])
ax.set_xticklabels(ax.get_xticklabels(), rotation=30)

・1月から12月にかけて右肩上がりで上昇
・2016年9月から日本でもスタートしたSpotify。サービスが世間に浸透してきたため、2017年は再生数が月毎に増加していったのかもしれない

まとめ

・アメリカは総再生数が他の国に比べて多い
・2017年の曲で最も再生数が多かったのはEd SheeranのShape of You
・最も再生数が多かったアーティストはEd Sheeran
・日本ではspotifyに登録されている曲の再生数が毎月増加

後悔

このデータセットを見つける前に、以下のページを見つけました。

これを使えば面白そうな分析ができそう!と喜んだのも束の間、エントリーの期限が過ぎていてデータセットが入手できませんでした。しかし、このようなおもしろそうな企画が海外発のアプリだと一般的にあることも知りました。このような後悔はしないように情報収集に精を出すこととします。

R, Pythonで分析した結果のアウトプットをする場として利用しています。現時点の目標は"就職"することです。興味あること:R、 Python、 英語、そして筋トレです。