0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita100万記事感謝祭!記事投稿キャンペーン開催のお知らせ

Spotify再生回数推移の動くグラフを作る

Last updated at Posted at 2025-01-13

はじめに

完成形はこちら。

動くグラフの生成自体はBar chart race generatorを使わせていただきました。
今回は必要なデータの加工方法を記載します。
データ加工はGoogle SpreadsheetとPythonを組み合わせて行いましたが、全部Pythonでもいけると思います。

手順

アーティスト名別で作成する場合の手順を記載します。曲名別で作成する場合も同様です。

  1. Spotifyの再生履歴データをリクエストする

  2. データが届いたらJSONからCSVに変換する
    ※アーティスト名や曲名が半角数字だけのものが含まれるとBar chart race generatorが誤作動するので、除外するかクォーテーション等で囲っておく

  3. dateとartist_name以外の列を削除する

  4. query関数を使って、dateとartist_nameをキーにして1日ごとの再生回数を集計する

    =QUERY(A:B, "SELECT A, B, COUNT(B) WHERE A IS NOT NULL GROUP BY A, B ORDER BY A ASC", 1)
    

    image.png

  5. 【Python】各アーティストを聴いていない日があるとBar chart raceのグラフが0にリセットされてしまうため、日付×アーティスト名の組み合わせが網羅されるように加工する

    Python
    count_per_day = pd.read_csv('/content/drive/MyDrive/MachineLearning/Spotify/count_per_day.csv')
    # CSVから日付とアーティスト名をそれぞれ切り出して重複削除し、それらの全組み合わせを作成する
    date_artist_cross = pd.merge(count_per_day['date'].drop_duplicates(), count_per_day['artist_name'].drop_duplicates(), how='cross')
    # 各アーティストを聴いていない日は0回、聴いている日は元のCSVの回数をコピー
    count_per_day_filled = pd.merge(date_artist_cross, count_per_day, on=['date', 'artist_name'], how='left').fillna(0)
    
    # 加工後のデータをダウンロード
    from google.colab import files
    final.to_csv('count_per_day_filled.csv', encoding='utf_8_sig', index=False)
    files.download('count_per_day_filled.csv')
    

  6. 加工したCSVに対してSUMIFS関数を適用し、その日までの累計再生回数を集計する

    =SUMIFS(C$2:C2, B$2:B2, B2, A$2:A2, "<="&A2)
    

    image.png

  7. 6.のCSVから4.で集計した列を削除し、「date」「artist_name」「その日までの累計再生回数」の3列にする

  8. 7.のCSVをBar chart race generatorにアップロードし、アニメーションを生成する

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?