LoginSignup
1
1

More than 5 years have passed since last update.

PandasでiTunesライブラリ分析 2

Last updated at Posted at 2019-01-07

前回、ライブラリ内のエンコード別の性能の相関について調べました。
今回は自分がどういう音楽を好み、どういうふうに聴いているのか調べます。

大体1曲あたり何回聴いているのか?

3万曲ある中で、前回1回以上聴いている曲は約14%であるということが判明しました。
今回は、曲ひとつあたりに対して聴いた回数ごとのヒストグラムで把握したいと思います。

ax = sns.distplot(df[['再生回数']], hist=True, kde=False, rug=True, norm_hist=False)
d = ax.set(xlabel='曲数', ylabel='再生回数')

再生回数sns_distplot.png

グラフからは1曲5回以下くらいしか聴いてないけど、好きな曲はとことん聴くタイプだということがわかります。私はシングルではなく必ずアルバムで買っていたのでそれも影響しているのかもしれません。ヒストグラムと一緒に出したrugplotを見ると、120回以上再生している曲もあることがわかります。ここです。1
再生回数sns_distplot.png

実際には120回以上再生している曲は何曲あるのでしょう?調べてみます。

playtimes = 120
print(F"{len(df):,}曲中{playtimes:,}回以上再生している曲数は{len(df[(df['再生回数'] >= playtimes)]):,}曲あります")

'''
30,415曲中120回以上再生している曲数は2曲あります
'''

2曲ありました。さてこの曲はなんでしょう?調べてみましょう。

print(df[['名前', '再生回数']][(df['再生回数'] >= playtimes)])
'''
                      名前  再生回数
9747    Chega de Saudade   122
9901  Aquarela Do Brasil   125
'''

僕の大好きなBossaNovaの法王、Joao Gilbertoの2曲でした。
逆に、スキップ数が多いものはどれでしょう?

#  スキップが0以下のものは除外したデータから昇順ソート
skipdf = df[(df['スキップ回数'] > 0)].sort_values('スキップ回数', ascending=False)

# スキップ回数が多い上位5曲を表示
print(skipdf[['名前', 'スキップ回数']][:5])
'''
                                                名前  スキップ回数
1243                            Fly Me to the Moon      25
16508                                   Cigarettes      24
10498          California Gurls (feat. Snoop Dogg)      22
9747                              Chega de Saudade      22
1280   Fade Into Darkness (Instrumental Radio Mix)      22
'''

結構意外な結果でした。でもよく考えてみると確かにスキップが多い曲でした。データは嘘をつきませんね。2

スキップ回数と再生回数の相関を見る

好きな曲は最後まで聴くし、そうでない曲は飛ばすのでスキップ回数と再生回数は関係がないと考えたので散布図にしました。
iTunesの再生数管理は曲が末端まで行き、はじめてカウントされる仕組みなので、スキップとは関係無いように見えますが、再生をしないとスキップもできない、誤った操作によるスキップやアルバム前後曲によるスキップ飛ばしは再生回数の関数を持つのであまり意味のない比較かもしれません。

skipsrs = skipdf['スキップ回数']
lengsrs = skipdf['時間'] / 60
print(type(lengsrs))

plt.figure(figsize=(20, 12))
plt.xlabel("時間(分)")
plt.ylabel("スキップ数")
plt.scatter(lengsrs, skipsrs, c="g", alpha=0.5, marker='o', )

スキップ回数と再生回数の関係性plt_scatter.png
回帰曲線を足します。

plt.plot(lengsrs, np.poly1d(np.polyfit(lengsrs, skipsrs, 1))(lengsrs), color="r", label='')

スキップ回数と再生回数の関係性回帰曲線を足すplt_scatter.png

どうやら正の相関があるようです。しかし、前述の通りあまり意味がない調査でした。

スキップ回数と時間の相関を見る

スキップ回数と時間の相関も見ました。これも前段と同じく相関はないと考えます。
スキップ回数と曲の長さの関係性plt_scatter.png
回帰曲線を足します。

plt.plot(playsrs, np.poly1d(np.polyfit(playsrs, skipsrs, 1))(playsrs), color="r", label='')

スキップ回数と曲の長さの関係性回帰曲線を足すplt_scatter.png
相関はないようです。

まとめ

今回は再生回数から好きな曲やその他のデータとの関連性を見ていきました。次こそは自分の趣味嗜好を分析していきたいと思います。また今回ラブのデータも取得できていれば、スキップ数や再生回数との関連がもっと面白いものになっていたでしょう。このデータはやはり大切なのでしょうね。

詰まったこと

グラフの記述方法がわかっても統計の知識が希薄だとどのようにグラフの選択をすればいいのか詰まってしまう場面が多かった。統計検定取得を目指し頑張っていきたい。


  1. この吹き出し画像はseabornで書き出したグラフをillustratorで編集しました。seabornにはこの機能はありません。 

  2. Fly Me to the MoonCigarettesはプレイリストから面倒で消していなかったもの。Chega de Saudadeはヘビーローテーションですが曲の終わりにスタンディングオベーションが長くて飛ばしてしまう曲でした。その証拠に再生回数も多いです。 

1
1
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
1
1