Spotify Dataset Analyse
We werken met een dataset genaamd spotify.csv
, die informatie bevat over de meest gestreamde Spotify-songs van 2010 tot 2023. Het bestand is gedownload van Kaggle en bevat 10.440 records.
Hieronder de eerste regels van het bestand "spotify.csv".
spotify.csvEerste lijnen in het bestand.
Beschrijving van de data
- De eerste kolom bevat een volgnummer dat niet gebruikt zal worden.
- Artist and Title: Artiest en titel van het nummer, gescheiden door een koppelteken (" - ").
- Artist: Naam van de artiest (exact dezelfde schrijwijze als in "Artist and Title").
- Streams: Totaal aantal streams.
- Daily: Gemiddeld aantal dagelijkse streams.
- year: Het jaar waarin de song het meest populair was.
- main_genre: Hoofdgenre van de song, één van:
Metal, Electronic/Dance, Hip-Hop/Rap, R&B/Soul, Classical/Orchestral, Pop, Indie/Alternative, Rock, World/Traditional of Other.
- first_genre, second_genre, third_genre: Meer gedetailleerde subgenres.
Databestand
Het bestand is beschikbaar in het working directory van Dodona. Om te debuggen in PyCharm of in een Jupyter Notebook) zal je het bestand moeten downloaden en bewaren in dezelfde map als je .py of .ipynb bestand.
Je kan het bestand hier downloaden:
Opgave
1. Functie get_title
Schrijf een functie get_title
met de twee parameters:
- Artist and Title (str): Artiest en titel van het nummer, gescheiden door een koppelteken (" - ").
- Artist (str): Naam van de artiest (exact dezelfde schrijwijze als in "Artist and Title").
De functie extraheert de Title uit de Artist and Title en retourneert deze als string.
Let op, zowel in de naam van de artiest als in de titel van de song kunnen koppeltekens voorkomen.
Voorbeelden
>>> get_title("J. Cole - No Role Modelz", "J. Cole")
"No Role Modelz"
>>> get_title("lusttqwe - F-ck Up Some Commas", "lusttqwe")
"F-ck Up Some Commas"
2. Functie get_data
Schrijf een functie get_data
met de volgende parameters:
year
(int): Het jaar waarvoor gegevens gezocht worden.
main_genre
(str): Het hoofdgenre van de songs.
De functie doet het volgende:
- Leest het CSV-bestand in en filtert de gegevens:
- Alleen songs van het opgegeven jaar en met het opgegeven hoofdgenre worden geselecteerd.
- Alleen songs met een gemiddeld dagelijks aantal streams (
Daily
) groter dan 100.000 komen in aanmerking.
- Voor elke song die aan deze criteria voldoet, wordt een tuple toegevoegd aan de outputlijst. De tuple bevat:
- Title (str): Titel van het nummer, zonder de artiest.
- Artist (str): Naam van de artiest.
- Daily (int): Gemiddeld aantal dagelijkse streams.
- first_genre (str): Het eerste subgenre.
- De volgorde van de tuples is hetzelfde als in het bestand.
- Als er geen songs aan de criteria voldoen, retourneert de functie een lege lijst.
Voorbeelden
>>> get_data(2014,'Metal')
[('The Devil in I', 'Slipknot', 173837, 'alternative metal'), ('Custer', 'Slipknot', 197139, 'alternative metal')]
>>> get_data(2015,'Classical/Orchestral')
[]
3. Functie most_popular
Schrijf een functie most_popular
met dezelfde parameters als get_data
. Het doel is om de populairste song van dat jaar en genre te vinden, gebaseerd op het hoogste gemiddelde aantal dagelijkse streams (Daily
).
De functie doet het volgende:
- Haalt de relevante gegevens op uit het databestand.
- Selecteert de song met het hoogste aantal dagelijkse streams (
Daily
) uit de lijst.
- Retourneert een dictionary met de volgende gegevens van de populairste song:
- Title: Titel van de song.
- Artist: Naam van de artiest.
- Main Genre: Het opgegeven hoofdgenre.
- Sub Genre: Het eerste subgenre.
- Year: Het jaar.
- Als er geen enkele song is met meer dan 100.000 dagelijkse streams, retourneert de functie de string:
"Geen enkele song had meer dan 100.000 dagelijkse streams."
Voorbeelden
>>> most_popular(2014,'Electronic/Dance')
{'Artist': 'Lost Frequencies', 'Title': 'Are You With Me', 'Sub Genre': 'belgian edm', 'Year': 2014, 'Main Genre': 'Electronic/Dance'}
>>> most_popular(2015,'Classical/Orchestral')
"Geen enkele song had meer dan 100.000 dagelijkse streams."