Spotify Streaming Verlauf

By Philipp Leppert in R Freizeit

June 11, 2021

Benötigte R-Pakete:

library(tidyverse)
library(jsonlite)
library(lubridate)
library(gghighlight)

Datenbeschaffung

Vor kurzem hat meine Freundin beim Musikstreaminganbieter Spotify ihre Nutzerdaten beantragt und heruntergeladen. Eine Schritt-für-Schritt-Anleitung wie das funktioniert, findet man in den Account-Einstellungen unter Datenschutz. Laut Spotify umfasst der Downlad:

[…] eine Kopie deiner Playlists, deiner Suchanfragen, deines Streaming-Verlaufs des letzten Jahres, eine Liste der in deiner Bibliothek gespeicherten Elemente, die Zahl deiner Follower, die Zahl und die Namen der anderen Nutzer*innen und Künstler*innen, denen du folgst, sowie deine Zahlungs- und Abodaten.

Von Spotify bekommt man nach etwa 30 Tagen einen Link zu einer .zip Datei zur Verfügung gestellt, die ein Readme im PDF-Format sowie mehrere .json Dateien enthält. Für die meisten Spotify-Nutzer*innen ist das wahrscheinlich nicht das geläufigste Dateiformat. Die Dateien können zwar mit einem Texteditor betrachtet werden, jedoch lässt sich bspw. der Streaming-Verlauf aufgrund seiner Größe nicht gerade leicht erfassen.

Eintrag im Streaming-Verlauf
Eintrag im Streaming-Verlauf

Aus diesem Grund habe ich ein R-Skript erstellt, mit welchem die von Spotify zur Verfügung gestellten Dateien ausgewertet werden können.

Datenaufbereitung

Zunächst lese ich den Streaming-Verlauf mit der Funktion fromJSON() aus dem R-Paket jsonlite ein. Abhängig von den eigenen Hörgewohnheiten kann es eine oder mehrere Dateien für den Streaming-Verlauf geben. Nach dem Einlesen der Dateien kombiniere ich die Verläufe zu einem einzigen Datenbestand.

streamVerlauf1 <- fromJSON("data/StreamingHistory0.json", flatten = TRUE)
streamVerlauf2 <- fromJSON("data/StreamingHistory1.json", flatten = TRUE)
streamVerlauf3 <- fromJSON("data/StreamingHistory2.json", flatten = TRUE)

streamVerlauf_spotify <- bind_rows(streamVerlauf1,
                                   streamVerlauf2,
                                   streamVerlauf3)

Unten ist ein Ausschnitt der Daten dargestellt. Jede Zeile in diesem Datensatz repräsentiert dabei einen Zeitpunkt (endTime) an dem ein Musiktitel (trackName) eines Interpreten (artistName) abgespielt wurde. Auch die Abspieldauer des jeweiligen Titels ist vorhanden (msPlayed).

endTime artistName trackName msPlayed
2021-01-15 17:40 Kate Bush Wuthering Heights 269066
2021-01-15 17:44 Kate Nash Mariella 255546
2021-01-15 17:47 Maisie Peters In My Head 187827
2021-01-15 17:51 Yeah Yeah Yeahs Heads Will Roll 221000
2021-01-15 17:54 SUNMI Siren 199133
2021-01-15 17:58 Stromae sommeil 218653
2021-01-15 18:03 Wir Sind Helden Ein Elefant für dich 282653
2021-01-15 18:05 St. Vincent New York 123035
2021-01-16 10:55 Lorde Hard Feelings/Loveless 367391
2021-01-16 10:58 David Bowie Life on Mars? - 2015 Remaster 133913
2021-01-16 11:14 David Bowie Life on Mars? - 2015 Remaster 235986
2021-01-16 11:17 Ezra Furman Love You So Bad 219000
2021-01-16 11:21 Frog Judy Garland 217177
2021-01-16 11:24 Wings Live And Let Die 194613
2021-01-16 11:29 Chappell Roan Pink Pony Club 258034
2021-01-16 11:32 Kate Bush Babooshka - 2018 Remaster 199226
2021-01-16 11:33 Dominic Fike 10x Stronger 75585
2021-01-16 11:37 Lorde Writer In The Dark 216610
2021-01-16 11:40 BTS Fly To My Room 222242
2021-01-16 11:44 Halsey I HATE EVERYBODY 171015
2021-01-16 11:48 Kate Bush Wuthering Heights 269066
2021-01-16 11:52 Kate Nash Mariella 255546
2021-01-16 11:56 Maisie Peters In My Head 187827
2021-01-16 11:59 Yeah Yeah Yeahs Heads Will Roll 221000
2021-01-16 12:03 SUNMI Siren 199133
2021-01-16 12:06 Stromae sommeil 218653
2021-01-16 12:07 Wir Sind Helden Ein Elefant für dich 50533
2021-01-16 12:11 Wir Sind Helden Wenn es passiert 212360
2021-01-16 12:15 Wir Sind Helden Echolot 271386
2021-01-16 12:19 Wir Sind Helden Von hier an blind 210666
2021-01-16 12:22 Wir Sind Helden Zuhälter 210306
2021-01-16 12:27 Wir Sind Helden Ein Elefant für dich 282653
2021-01-16 12:30 Wir Sind Helden Darf ich das behalten 198466
2021-01-16 12:36 Wir Sind Helden Wütend genug 269386
2021-01-16 12:37 Wir Sind Helden Geht auseinander 26645
2021-01-16 12:40 Wir Sind Helden Gekommen um zu bleiben 190120
2021-01-16 12:44 Wir Sind Helden Nur ein Wort 236200
2021-01-16 12:47 Wir Sind Helden Ich werde ein Leben lang üben, dich so zu lieben, wie ich dich lieben will, wenn du gehst 172240
2021-01-16 12:51 Wir Sind Helden Bist du nicht müde 233653
2021-01-16 13:02 BTS Trivia <U+8F49> : Seesaw 246334
2021-01-16 13:05 j-hope P.O.P (Piece Of Peace) Pt. 1 181113
2021-01-16 13:08 Agust D People 197000
2021-01-16 13:12 BTS Trivia <U+627F> : Love 225697
2021-01-16 13:16 BTS 134340 230063
2021-01-16 13:17 j-hope Blue Side (Outro) 90539
2021-01-16 13:21 RM everythingoes 222493
2021-01-16 13:25 BTS Go Go 235779
2021-01-16 13:28 BTS Moon 191346
2021-01-16 14:01 Taylor Swift the 1 101263
2021-01-17 12:18 The Ronettes Be My Baby 160906
2021-01-17 12:22 Eurythmics Sweet Dreams (Are Made of This) - Remastered 216933
2021-01-17 12:26 Blondie Heart Of Glass 252186
2021-01-17 12:29 The Beach Boys God Only Knows - Remastered 1997 / Mono 173040
2021-01-17 12:31 Bill Withers Ain't No Sunshine 125093
2021-01-17 12:36 Paul Simon You Can Call Me Al 280000
2021-01-17 12:40 Iggy Pop The Passenger 283360
2021-01-17 12:44 Earth, Wind & Fire September 215093
2021-01-17 12:48 Jimi Hendrix All Along the Watchtower 240800
2021-01-17 12:51 Solomon Burke Cry to Me 154906
2021-01-17 12:53 The Monkees I'm a Believer - 2006 Remaster 136933
2021-01-17 12:54 The Monkees I'm a Believer - 2006 Remaster 30458
2021-01-17 12:56 The Beach Boys Wouldn't It Be Nice - Stereo / Remastered 153205
2021-01-17 12:59 Van Morrison Brown Eyed Girl 183506
2021-01-17 13:02 The Mamas & The Papas California Dreamin' - Single Version 162373
2021-01-17 13:05 The Monkees Daydream Believer 179613
2021-01-17 13:07 Little Peggy March I Will Follow Him 148160
2021-01-17 13:11 Sonny & Cher I Got You Babe 190080
2021-01-17 13:14 Steve Miller Band The Joker 213480
2021-01-17 13:17 Bruce Springsteen Hungry Heart 198973
2021-01-17 13:20 Roy Orbison Oh, Pretty Woman 176840
2021-01-17 13:23 The Archies Sugar Sugar 167213
2021-01-17 13:27 The Who My Generation - Stereo Version 198706
2021-01-17 13:31 John Cale Paris 1919 246799
2021-01-17 13:34 B.J. Thomas Raindrops Keep Fallin' on My Head - Rerecorded 178146
2021-01-17 13:37 The Monkees Daydream Believer 179613
2021-01-17 13:45 Don McLean American Pie 516893
2021-01-17 13:48 Johnny Nash I Can See Clearly Now - Edit 164733
2021-01-18 05:02 BTS Life Goes On 207481
2021-01-18 05:06 BTS Fly To My Room 222242
2021-01-18 05:10 BTS Blue & Grey 254950
2021-01-18 05:14 BTS Telepathy 202313
2021-01-18 05:18 BTS Dis-ease 239722
2021-01-18 05:21 BTS Stay 204800
2021-01-18 05:24 BTS Dynamite 199053
2021-01-18 05:36 BTS Life Goes On 207481
2021-01-18 05:40 BTS Fly To My Room 222242
2021-01-18 05:44 BTS Blue & Grey 254950
2021-01-18 05:47 BTS Telepathy 155572
2021-01-18 05:47 BTS Telepathy 46756
2021-01-18 05:51 BTS Stay 204800
2021-01-18 05:56 BTS Blue & Grey 254950
2021-01-18 05:59 BTS Life Goes On 207481
2021-01-18 06:02 BTS Fly To My Room 159413
2021-01-18 15:20 BTS Fly To My Room 62845
2021-01-18 15:20 BTS Telepathy 36469
2021-01-18 15:25 Epik High Rosario 302323
2021-01-18 15:30 Son Lux Easy (Switch Screens) [feat. Lorde] 262521
2021-01-18 15:30 Ezra Furman Restless Year 37458
2021-01-18 15:31 Troye Sivan Easy (with Kacey Musgraves feat. Mark Ronson) 19904
2021-01-18 15:31 JACKBOYS GATTI 34534
2021-01-18 15:34 Maisie Peters Maybe Don't (feat. JP Saxe) - HONNE Remix 175997

Bevor ich mit der Auswertung beginne, müssen noch die Datums- und Zeitangaben angepasst werden. Zum einen soll die Spalte endTime getrennt werden, sodass ich je eine Spalte für das Datum und die Uhrzeit erhalte. Hierfür nutze ich die Funktion ymd_hm() aus dem R-Paket lubridate. Die Uhrzeit ist in den Rohdaten in der Zeitzone UTC+0 codiert (@Spotify: das wäre eine nützliche Angabe im Readme gewesen), sodass ich noch eine Stunde für die Umwandlung in die Mitteleuropäische Zeitzone (UTC+1) addieren muss. Mit der Funktion floor_date() wird dann die Datums-/Zeitangabe auf den jeweiligen Tag gerundet. Die Abspieldauer wird zudem in Minuten umgewandelt (mPlayed).

streamVerlauf_spotify <- 
  streamVerlauf_spotify %>% 
  as_tibble() %>% 
  mutate(
    endTime_mez = ymd_hm(endTime) + hours(1),
    date = as_date(floor_date(endTime_mez, "day")), 
    mPlayed = round(msPlayed / (1000*60), digits = 2)
    )

Die fertig aufbereiteten Daten sehen so aus:

endTime artistName trackName msPlayed endTime_mez date mPlayed
2021-01-15 17:40 Kate Bush Wuthering Heights 269066 2021-01-15 18:40:00 2021-01-15 4.48
2021-01-15 17:44 Kate Nash Mariella 255546 2021-01-15 18:44:00 2021-01-15 4.26
2021-01-15 17:47 Maisie Peters In My Head 187827 2021-01-15 18:47:00 2021-01-15 3.13
2021-01-15 17:51 Yeah Yeah Yeahs Heads Will Roll 221000 2021-01-15 18:51:00 2021-01-15 3.68
2021-01-15 17:54 SUNMI Siren 199133 2021-01-15 18:54:00 2021-01-15 3.32
2021-01-15 17:58 Stromae sommeil 218653 2021-01-15 18:58:00 2021-01-15 3.64
2021-01-15 18:03 Wir Sind Helden Ein Elefant für dich 282653 2021-01-15 19:03:00 2021-01-15 4.71
2021-01-15 18:05 St. Vincent New York 123035 2021-01-15 19:05:00 2021-01-15 2.05
2021-01-16 10:55 Lorde Hard Feelings/Loveless 367391 2021-01-16 11:55:00 2021-01-16 6.12
2021-01-16 10:58 David Bowie Life on Mars? - 2015 Remaster 133913 2021-01-16 11:58:00 2021-01-16 2.23
2021-01-16 11:14 David Bowie Life on Mars? - 2015 Remaster 235986 2021-01-16 12:14:00 2021-01-16 3.93
2021-01-16 11:17 Ezra Furman Love You So Bad 219000 2021-01-16 12:17:00 2021-01-16 3.65
2021-01-16 11:21 Frog Judy Garland 217177 2021-01-16 12:21:00 2021-01-16 3.62
2021-01-16 11:24 Wings Live And Let Die 194613 2021-01-16 12:24:00 2021-01-16 3.24
2021-01-16 11:29 Chappell Roan Pink Pony Club 258034 2021-01-16 12:29:00 2021-01-16 4.30
2021-01-16 11:32 Kate Bush Babooshka - 2018 Remaster 199226 2021-01-16 12:32:00 2021-01-16 3.32
2021-01-16 11:33 Dominic Fike 10x Stronger 75585 2021-01-16 12:33:00 2021-01-16 1.26
2021-01-16 11:37 Lorde Writer In The Dark 216610 2021-01-16 12:37:00 2021-01-16 3.61
2021-01-16 11:40 BTS Fly To My Room 222242 2021-01-16 12:40:00 2021-01-16 3.70
2021-01-16 11:44 Halsey I HATE EVERYBODY 171015 2021-01-16 12:44:00 2021-01-16 2.85
2021-01-16 11:48 Kate Bush Wuthering Heights 269066 2021-01-16 12:48:00 2021-01-16 4.48
2021-01-16 11:52 Kate Nash Mariella 255546 2021-01-16 12:52:00 2021-01-16 4.26
2021-01-16 11:56 Maisie Peters In My Head 187827 2021-01-16 12:56:00 2021-01-16 3.13
2021-01-16 11:59 Yeah Yeah Yeahs Heads Will Roll 221000 2021-01-16 12:59:00 2021-01-16 3.68
2021-01-16 12:03 SUNMI Siren 199133 2021-01-16 13:03:00 2021-01-16 3.32
2021-01-16 12:06 Stromae sommeil 218653 2021-01-16 13:06:00 2021-01-16 3.64
2021-01-16 12:07 Wir Sind Helden Ein Elefant für dich 50533 2021-01-16 13:07:00 2021-01-16 0.84
2021-01-16 12:11 Wir Sind Helden Wenn es passiert 212360 2021-01-16 13:11:00 2021-01-16 3.54
2021-01-16 12:15 Wir Sind Helden Echolot 271386 2021-01-16 13:15:00 2021-01-16 4.52
2021-01-16 12:19 Wir Sind Helden Von hier an blind 210666 2021-01-16 13:19:00 2021-01-16 3.51
2021-01-16 12:22 Wir Sind Helden Zuhälter 210306 2021-01-16 13:22:00 2021-01-16 3.51
2021-01-16 12:27 Wir Sind Helden Ein Elefant für dich 282653 2021-01-16 13:27:00 2021-01-16 4.71
2021-01-16 12:30 Wir Sind Helden Darf ich das behalten 198466 2021-01-16 13:30:00 2021-01-16 3.31
2021-01-16 12:36 Wir Sind Helden Wütend genug 269386 2021-01-16 13:36:00 2021-01-16 4.49
2021-01-16 12:37 Wir Sind Helden Geht auseinander 26645 2021-01-16 13:37:00 2021-01-16 0.44
2021-01-16 12:40 Wir Sind Helden Gekommen um zu bleiben 190120 2021-01-16 13:40:00 2021-01-16 3.17
2021-01-16 12:44 Wir Sind Helden Nur ein Wort 236200 2021-01-16 13:44:00 2021-01-16 3.94
2021-01-16 12:47 Wir Sind Helden Ich werde ein Leben lang üben, dich so zu lieben, wie ich dich lieben will, wenn du gehst 172240 2021-01-16 13:47:00 2021-01-16 2.87
2021-01-16 12:51 Wir Sind Helden Bist du nicht müde 233653 2021-01-16 13:51:00 2021-01-16 3.89
2021-01-16 13:02 BTS Trivia <U+8F49> : Seesaw 246334 2021-01-16 14:02:00 2021-01-16 4.11
2021-01-16 13:05 j-hope P.O.P (Piece Of Peace) Pt. 1 181113 2021-01-16 14:05:00 2021-01-16 3.02
2021-01-16 13:08 Agust D People 197000 2021-01-16 14:08:00 2021-01-16 3.28
2021-01-16 13:12 BTS Trivia <U+627F> : Love 225697 2021-01-16 14:12:00 2021-01-16 3.76
2021-01-16 13:16 BTS 134340 230063 2021-01-16 14:16:00 2021-01-16 3.83
2021-01-16 13:17 j-hope Blue Side (Outro) 90539 2021-01-16 14:17:00 2021-01-16 1.51
2021-01-16 13:21 RM everythingoes 222493 2021-01-16 14:21:00 2021-01-16 3.71
2021-01-16 13:25 BTS Go Go 235779 2021-01-16 14:25:00 2021-01-16 3.93
2021-01-16 13:28 BTS Moon 191346 2021-01-16 14:28:00 2021-01-16 3.19
2021-01-16 14:01 Taylor Swift the 1 101263 2021-01-16 15:01:00 2021-01-16 1.69
2021-01-17 12:18 The Ronettes Be My Baby 160906 2021-01-17 13:18:00 2021-01-17 2.68
2021-01-17 12:22 Eurythmics Sweet Dreams (Are Made of This) - Remastered 216933 2021-01-17 13:22:00 2021-01-17 3.62
2021-01-17 12:26 Blondie Heart Of Glass 252186 2021-01-17 13:26:00 2021-01-17 4.20
2021-01-17 12:29 The Beach Boys God Only Knows - Remastered 1997 / Mono 173040 2021-01-17 13:29:00 2021-01-17 2.88
2021-01-17 12:31 Bill Withers Ain't No Sunshine 125093 2021-01-17 13:31:00 2021-01-17 2.08
2021-01-17 12:36 Paul Simon You Can Call Me Al 280000 2021-01-17 13:36:00 2021-01-17 4.67
2021-01-17 12:40 Iggy Pop The Passenger 283360 2021-01-17 13:40:00 2021-01-17 4.72
2021-01-17 12:44 Earth, Wind & Fire September 215093 2021-01-17 13:44:00 2021-01-17 3.58
2021-01-17 12:48 Jimi Hendrix All Along the Watchtower 240800 2021-01-17 13:48:00 2021-01-17 4.01
2021-01-17 12:51 Solomon Burke Cry to Me 154906 2021-01-17 13:51:00 2021-01-17 2.58
2021-01-17 12:53 The Monkees I'm a Believer - 2006 Remaster 136933 2021-01-17 13:53:00 2021-01-17 2.28
2021-01-17 12:54 The Monkees I'm a Believer - 2006 Remaster 30458 2021-01-17 13:54:00 2021-01-17 0.51
2021-01-17 12:56 The Beach Boys Wouldn't It Be Nice - Stereo / Remastered 153205 2021-01-17 13:56:00 2021-01-17 2.55
2021-01-17 12:59 Van Morrison Brown Eyed Girl 183506 2021-01-17 13:59:00 2021-01-17 3.06
2021-01-17 13:02 The Mamas & The Papas California Dreamin' - Single Version 162373 2021-01-17 14:02:00 2021-01-17 2.71
2021-01-17 13:05 The Monkees Daydream Believer 179613 2021-01-17 14:05:00 2021-01-17 2.99
2021-01-17 13:07 Little Peggy March I Will Follow Him 148160 2021-01-17 14:07:00 2021-01-17 2.47
2021-01-17 13:11 Sonny & Cher I Got You Babe 190080 2021-01-17 14:11:00 2021-01-17 3.17
2021-01-17 13:14 Steve Miller Band The Joker 213480 2021-01-17 14:14:00 2021-01-17 3.56
2021-01-17 13:17 Bruce Springsteen Hungry Heart 198973 2021-01-17 14:17:00 2021-01-17 3.32
2021-01-17 13:20 Roy Orbison Oh, Pretty Woman 176840 2021-01-17 14:20:00 2021-01-17 2.95
2021-01-17 13:23 The Archies Sugar Sugar 167213 2021-01-17 14:23:00 2021-01-17 2.79
2021-01-17 13:27 The Who My Generation - Stereo Version 198706 2021-01-17 14:27:00 2021-01-17 3.31
2021-01-17 13:31 John Cale Paris 1919 246799 2021-01-17 14:31:00 2021-01-17 4.11
2021-01-17 13:34 B.J. Thomas Raindrops Keep Fallin' on My Head - Rerecorded 178146 2021-01-17 14:34:00 2021-01-17 2.97
2021-01-17 13:37 The Monkees Daydream Believer 179613 2021-01-17 14:37:00 2021-01-17 2.99
2021-01-17 13:45 Don McLean American Pie 516893 2021-01-17 14:45:00 2021-01-17 8.61
2021-01-17 13:48 Johnny Nash I Can See Clearly Now - Edit 164733 2021-01-17 14:48:00 2021-01-17 2.75
2021-01-18 05:02 BTS Life Goes On 207481 2021-01-18 06:02:00 2021-01-18 3.46
2021-01-18 05:06 BTS Fly To My Room 222242 2021-01-18 06:06:00 2021-01-18 3.70
2021-01-18 05:10 BTS Blue & Grey 254950 2021-01-18 06:10:00 2021-01-18 4.25
2021-01-18 05:14 BTS Telepathy 202313 2021-01-18 06:14:00 2021-01-18 3.37
2021-01-18 05:18 BTS Dis-ease 239722 2021-01-18 06:18:00 2021-01-18 4.00
2021-01-18 05:21 BTS Stay 204800 2021-01-18 06:21:00 2021-01-18 3.41
2021-01-18 05:24 BTS Dynamite 199053 2021-01-18 06:24:00 2021-01-18 3.32
2021-01-18 05:36 BTS Life Goes On 207481 2021-01-18 06:36:00 2021-01-18 3.46
2021-01-18 05:40 BTS Fly To My Room 222242 2021-01-18 06:40:00 2021-01-18 3.70
2021-01-18 05:44 BTS Blue & Grey 254950 2021-01-18 06:44:00 2021-01-18 4.25
2021-01-18 05:47 BTS Telepathy 155572 2021-01-18 06:47:00 2021-01-18 2.59
2021-01-18 05:47 BTS Telepathy 46756 2021-01-18 06:47:00 2021-01-18 0.78
2021-01-18 05:51 BTS Stay 204800 2021-01-18 06:51:00 2021-01-18 3.41
2021-01-18 05:56 BTS Blue & Grey 254950 2021-01-18 06:56:00 2021-01-18 4.25
2021-01-18 05:59 BTS Life Goes On 207481 2021-01-18 06:59:00 2021-01-18 3.46
2021-01-18 06:02 BTS Fly To My Room 159413 2021-01-18 07:02:00 2021-01-18 2.66
2021-01-18 15:20 BTS Fly To My Room 62845 2021-01-18 16:20:00 2021-01-18 1.05
2021-01-18 15:20 BTS Telepathy 36469 2021-01-18 16:20:00 2021-01-18 0.61
2021-01-18 15:25 Epik High Rosario 302323 2021-01-18 16:25:00 2021-01-18 5.04
2021-01-18 15:30 Son Lux Easy (Switch Screens) [feat. Lorde] 262521 2021-01-18 16:30:00 2021-01-18 4.38
2021-01-18 15:30 Ezra Furman Restless Year 37458 2021-01-18 16:30:00 2021-01-18 0.62
2021-01-18 15:31 Troye Sivan Easy (with Kacey Musgraves feat. Mark Ronson) 19904 2021-01-18 16:31:00 2021-01-18 0.33
2021-01-18 15:31 JACKBOYS GATTI 34534 2021-01-18 16:31:00 2021-01-18 0.58
2021-01-18 15:34 Maisie Peters Maybe Don't (feat. JP Saxe) - HONNE Remix 175997 2021-01-18 16:34:00 2021-01-18 2.93

Datenanalyse

Zuerst möchte ich mir den Streaming-Verlauf über den gesamten Zeitraum anschauen. Mittels scale_fill_gradient() kann man eine Farbverlaufsskala erstellen, wobei rot eine relativ hohe und gelb eine relativ niedrige Streaming-Aktivität darstellt.

streamVerlauf_spotify %>% 
  group_by(date) %>%
  summarize(hours = sum(mPlayed) / 60) %>% 
  arrange(date) %>% 
  ggplot(aes(x = date, y = hours)) + 
  geom_col(aes(fill = hours)) +
  scale_fill_gradient(low = "yellow", high = "red") + 
  scale_x_date(date_breaks = "4 weeks", date_labels = "%b") +
  labs(
    x = "", 
    y = "Streamingaktivität (in Stunden)", 
    fill = "Stunden gestreamt"
    )

Besonders interessant finde ich den Höchstwert im Juli. Ich vermute, dass dieser auf meine Geburtstagsfeier zurückgeht, da meine Freundin an diesem Abend als Spotify-DJ engagiert war. Unten schränke ich den Auswertungszeitraum auf den Monat Juli ein und ändere die Skalierung der x-Achse, sodass die einzelnen Tage besser erkennbar sind.

streamVerlauf_spotify %>% 
  filter(date >= "2020-07-01" & date <= "2020-07-31") %>%
  group_by(date) %>%
  summarize(hours = sum(mPlayed) / 60) %>% 
  arrange(date) %>% 
  ggplot(aes(x = date, y = hours)) + 
  geom_col(aes(fill = hours)) +
  scale_fill_gradient(low = "yellow", high = "red") + 
  scale_x_date(date_breaks = "2 days", date_labels = "%d") +
  labs(
    x = "Juli", 
    y = "Streamingaktivität (in Stunden)", 
    fill = "Stunden gestreamt"
    )

Der 25. Juli war ein Samstag und hier fand meine Geburtstagsfeier statt - danke für die Erinnerung Spotify. Lässt sich mit den Daten auch rekonstruieren wie lange die Feier ging? Hierfür schränke ich die Daten noch enger auf den 25. Juli 16 Uhr bis zum 26. Juli 9 Uhr ein und summiere die Streaming-Aktivität für jede Stunde auf.

streamVerlauf_spotify %>% 
  filter(endTime_mez >= "2020-07-25 15:00:00" & 
         endTime_mez <= "2020-07-26 09:00:00") %>%
  group_by(date, hour = hour(endTime_mez)) %>%
  summarize(hours = sum(mPlayed) / 60) %>% 
  ggplot(aes(x = hour, y = hours)) + 
  geom_col(fill = "white", color = "black") +
  facet_grid(. ~ date) +
  scale_x_continuous(breaks = seq(0,24,2)) +
  scale_y_continuous(breaks = seq(0,1,0.5)) +
  labs(x = "Uhr", y = "Streamingaktivität (in Stunden)")

Meine Freundin war besonders daran interessiert zu sehen, welche Künstler*innen und Lieder sie am häufigsten auf Spotify angehört hat. Hierzu summiere ich für jeden Künstler*in (artistName) die gestreamten Minuten (mPlayed) im gesamten Zeitraum auf und werte die Top-15 aus.

streamVerlauf_spotify %>%
  group_by(artistName) %>%
  summarise(hours = sum(mPlayed, na.rm = T)/60) %>%
  arrange(desc(hours)) %>%
  slice(1:15) %>%
  ggplot(data = .,
         aes(x = reorder(artistName, hours), 
             y = hours)) +
  geom_bar(stat ="identity", fill = "white", color = "black") +
  coord_flip() +
  scale_y_continuous(breaks = seq(0,110,10)) +
  labs(x = "", y = "Streamingaktivität (in Stunden)") +
  theme(legend.position = "none")

Die K-Pop Gruppe BTS hat es ihr besonders angetan und ihnen wurden umgerechnet über 4 Tage durchgehender Musikkonsum gewidmet. Welcher Fan bietet mehr?

Als nächstes schaue ich mir die Top 15 der gestreamten Musiktitel an. Damit man als Pop-Musik-Laie die Titel dem jeweiligen Interpreten zuordnen kann, erstelle ich mit der Funktion str_c() eine kombinierte Spalte aus Titel-/ und Künstlername.

streamVerlauf_spotify %>%
  mutate(track.artistName = str_c(trackName, " {",artistName,"}")) %>%
  group_by(track.artistName) %>%
  summarise(hours = sum(mPlayed, na.rm = T)/60) %>%
  arrange(desc(hours)) %>%
  slice(1:15) %>%
  ggplot(aes(x = reorder(track.artistName, hours), 
             y = hours)) +
  geom_bar(stat ="identity", fill = "white", color = "black") +
  coord_flip() +
  scale_y_continuous(breaks = seq(0,7,1)) +
  labs(x = "", y = "Streamingaktivität (in Stunden)") +
  theme(legend.position = "none")

Auch hier sind einige Titel der Gruppe BTS mit über 6 Stunden Abspielzeit im betrachteten Zeitraum an der Chartspitze vertreten.


Wie intensiv hört man einen Interpreten im Zeitverlauf? Mit dem R-Paket gghighlight kann man in einem Liniendiagramm bestimmte Gruppen (artistName) hervorheben. Oft wechselt sich dabei ein Liebglingsinterpret mit dem anderen ab.

streamVerlauf_spotify %>% 
  group_by(artistName, date = floor_date(date, "month")) %>% 
  summarize(hours = sum(mPlayed) / 60) %>% 
  ggplot(aes(x = date, y = hours, 
             group = artistName, 
             color = artistName)) + 
  geom_line() +
  gghighlight(artistName %in% c("BTS","Taylor Swift",
                                "Halsey", "Agust D",
                                "Lorde", "Domoinic Fike")
              ) +
  scale_x_date(date_breaks = "1 month", date_labels = "%b") +
  labs(x = "", 
       y = "Streamingaktivität (in Stunden)")

Zu welchen Tageszeiten hört meine Freundin am häufigsten Musik? Auch das lässt sich mit einer geeigneten Darstellungsmethode leicht beantworten. Mit der Funktion geom_tile() aus dem R-Paket ggplot2 erstelle ich Rechtecke, welche die gesamte Streamingaktivität für jede Stunde innerhalb eines Tages repräsentieren.

streamVerlauf_spotify %>% 
  group_by(date, hour = hour(endTime_mez)) %>% 
  summarize(minutesListened = sum(mPlayed)) %>% 
  ggplot(aes(x = hour, y = date, fill = minutesListened)) + 
  geom_tile() + 
  scale_fill_gradient(low = "yellow", high = "red") + 
  scale_x_continuous(breaks = seq(0,23,1)) +
  scale_y_date(date_breaks = "1 month", date_labels = "%b %Y") +
  labs(x = "Uhr", y = "", fill = "Minuten gestreamt") 

Kopfhörer auf und ab in die Bahn! Besonders gut zu erkennen sind die täglichen Pendelzeiten zwischen Wohnung und Arbeitsstelle. Diese liegen von Juni bis Ende Oktober am Morgen meist zwischen 5 und 6 Uhr und am Nachmittag zwischen 15 und 16 Uhr. Zwischen November und April verschiebt sich die Streamingaktivität am Morgen und am Nachmittag erkennbar um eine Stunde nach vorne (in der dunklen Jahreszeit kommt man einfach etwas schwerer aus dem Bett).

Interessant aber auch etwas gruselig, was sich aus den von Spotify gesammelten Nutzerdaten so alles erkennen lässt!

Posted on:
June 11, 2021
Length:
16 minute read, 3261 words
Categories:
R Freizeit
See Also: