listening-analysis/album.ipynb

514 lines
650 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
2021-05-06 16:19:44 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"# Album Investigations"
2021-05-06 16:19:44 +01:00
]
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
2021-05-06 16:19:44 +01:00
"output_type": "stream",
"text": [
2021-05-07 01:03:08 +01:00
"457 scrobbles\n",
2021-05-06 16:19:44 +01:00
"1 days spent listening since Nov. 2017\n",
2021-05-07 01:03:08 +01:00
"1.38 minutes/day\n"
]
},
{
"data": {
2021-05-06 16:19:44 +01:00
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>acousticness</th>\n",
" <th>danceability</th>\n",
" <th>duration_ms</th>\n",
" <th>energy</th>\n",
" <th>instrumentalness</th>\n",
" <th>key</th>\n",
" <th>liveness</th>\n",
" <th>loudness</th>\n",
" <th>mode</th>\n",
" <th>speechiness</th>\n",
" <th>tempo</th>\n",
" <th>time_signature</th>\n",
" <th>valence</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>mean</th>\n",
2021-05-07 01:03:08 +01:00
" <td>0.237860</td>\n",
" <td>0.515659</td>\n",
" <td>208571.36105</td>\n",
" <td>0.698952</td>\n",
" <td>0.000508</td>\n",
" <td>5.317287</td>\n",
" <td>0.399127</td>\n",
" <td>-8.865836</td>\n",
" <td>0.560175</td>\n",
" <td>0.318893</td>\n",
" <td>109.647549</td>\n",
" <td>3.980306</td>\n",
" <td>0.499425</td>\n",
2021-05-06 16:19:44 +01:00
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
2021-05-07 01:03:08 +01:00
" <td>0.212666</td>\n",
" <td>0.084844</td>\n",
" <td>67764.14993</td>\n",
" <td>0.091519</td>\n",
" <td>0.001631</td>\n",
" <td>4.184609</td>\n",
" <td>0.196759</td>\n",
" <td>1.112998</td>\n",
" <td>0.496910</td>\n",
" <td>0.127265</td>\n",
" <td>34.212213</td>\n",
" <td>0.139098</td>\n",
" <td>0.187814</td>\n",
2021-05-06 16:19:44 +01:00
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.010700</td>\n",
" <td>0.388000</td>\n",
2021-05-07 01:03:08 +01:00
" <td>48507.00000</td>\n",
2021-05-06 16:19:44 +01:00
" <td>0.494000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.123000</td>\n",
" <td>-11.561000</td>\n",
" <td>0.000000</td>\n",
" <td>0.089200</td>\n",
" <td>81.302000</td>\n",
" <td>3.000000</td>\n",
" <td>0.167000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.049700</td>\n",
" <td>0.427000</td>\n",
2021-05-07 01:03:08 +01:00
" <td>183320.00000</td>\n",
2021-05-06 16:19:44 +01:00
" <td>0.604000</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.161000</td>\n",
" <td>-9.636000</td>\n",
" <td>0.000000</td>\n",
" <td>0.203000</td>\n",
" <td>89.060000</td>\n",
" <td>4.000000</td>\n",
" <td>0.391000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.180000</td>\n",
" <td>0.528000</td>\n",
2021-05-07 01:03:08 +01:00
" <td>211187.00000</td>\n",
2021-05-06 16:19:44 +01:00
" <td>0.715000</td>\n",
" <td>0.000000</td>\n",
" <td>4.000000</td>\n",
" <td>0.389000</td>\n",
" <td>-8.561000</td>\n",
" <td>1.000000</td>\n",
" <td>0.321000</td>\n",
" <td>91.546000</td>\n",
" <td>4.000000</td>\n",
" <td>0.494000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.261000</td>\n",
" <td>0.588000</td>\n",
2021-05-07 01:03:08 +01:00
" <td>226520.00000</td>\n",
2021-05-06 16:19:44 +01:00
" <td>0.790000</td>\n",
" <td>0.000277</td>\n",
" <td>11.000000</td>\n",
" <td>0.624000</td>\n",
" <td>-8.336000</td>\n",
" <td>1.000000</td>\n",
" <td>0.420000</td>\n",
" <td>118.965000</td>\n",
" <td>4.000000</td>\n",
" <td>0.628000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.904000</td>\n",
" <td>0.676000</td>\n",
2021-05-07 01:03:08 +01:00
" <td>513707.00000</td>\n",
2021-05-06 16:19:44 +01:00
" <td>0.821000</td>\n",
" <td>0.008230</td>\n",
" <td>11.000000</td>\n",
" <td>0.796000</td>\n",
" <td>-5.834000</td>\n",
" <td>1.000000</td>\n",
" <td>0.549000</td>\n",
" <td>180.392000</td>\n",
" <td>4.000000</td>\n",
" <td>0.879000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2021-05-07 01:03:08 +01:00
" acousticness danceability duration_ms energy instrumentalness \\\n",
"mean 0.237860 0.515659 208571.36105 0.698952 0.000508 \n",
"std 0.212666 0.084844 67764.14993 0.091519 0.001631 \n",
"min 0.010700 0.388000 48507.00000 0.494000 0.000000 \n",
"25% 0.049700 0.427000 183320.00000 0.604000 0.000000 \n",
"50% 0.180000 0.528000 211187.00000 0.715000 0.000000 \n",
"75% 0.261000 0.588000 226520.00000 0.790000 0.000277 \n",
"max 0.904000 0.676000 513707.00000 0.821000 0.008230 \n",
"\n",
2021-02-04 13:34:25 +00:00
" key liveness loudness mode speechiness tempo \\\n",
2021-05-07 01:03:08 +01:00
"mean 5.317287 0.399127 -8.865836 0.560175 0.318893 109.647549 \n",
"std 4.184609 0.196759 1.112998 0.496910 0.127265 34.212213 \n",
2021-05-06 16:19:44 +01:00
"min 0.000000 0.123000 -11.561000 0.000000 0.089200 81.302000 \n",
"25% 1.000000 0.161000 -9.636000 0.000000 0.203000 89.060000 \n",
"50% 4.000000 0.389000 -8.561000 1.000000 0.321000 91.546000 \n",
"75% 11.000000 0.624000 -8.336000 1.000000 0.420000 118.965000 \n",
"max 11.000000 0.796000 -5.834000 1.000000 0.549000 180.392000 \n",
"\n",
" time_signature valence \n",
2021-05-07 01:03:08 +01:00
"mean 3.980306 0.499425 \n",
"std 0.139098 0.187814 \n",
2021-05-06 16:19:44 +01:00
"min 3.000000 0.167000 \n",
"25% 4.000000 0.391000 \n",
"50% 4.000000 0.494000 \n",
"75% 4.000000 0.628000 \n",
"max 4.000000 0.879000 "
]
},
2021-05-07 01:03:08 +01:00
"execution_count": 3,
"metadata": {},
2021-05-06 16:19:44 +01:00
"output_type": "execute_result"
}
],
"source": [
2021-05-06 16:19:44 +01:00
"album_name = \"piñata\".lower()\n",
"album_frame = scrobbles[scrobbles[\"album\"].str.lower() == album_name]# FILTER SCROBBLES\n",
"album_frame = album_frame.sort_index(ascending=False) # SORT\n",
"# album_frame = album_frame.loc[:, descriptor_headers] # DESCRIPTORS\n",
"\n",
"total_time = album_frame[\"duration_ms\"].sum() / (1000 * 60) # minutes\n",
"total_days = total_time / (60 * 24) # days\n",
"print(f'{album_frame.count()[0]:,d} scrobbles')\n",
"print(f'{total_days:.0f} days spent listening since Nov. 2017')\n",
"print(f'{total_time / days_since(first_day).days:.2f} minutes/day')\n",
"\n",
"album_frame.describe()[1:]"
]
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
2021-05-07 01:03:08 +01:00
"image/png": "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
2021-05-06 16:19:44 +01:00
"text/plain": [
"<Figure size 720x480 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
2021-05-06 16:19:44 +01:00
},
"output_type": "display_data"
}
],
"source": [
"filtered_album = scrobbles[scrobbles[\"album\"].str.lower() == album_name]\n",
"# resample by day and mean\n",
"filtered_album = filtered_album.resample(\"3W\").count()\n",
"\n",
"filtered_album[\"energy\"].plot()\n",
"\n",
"plt.title(f\"{album_name} Scrobbles\")\n",
"plt.grid()\n",
"plt.show()"
]
},
2021-02-04 13:34:25 +00:00
{
2021-05-06 16:19:44 +01:00
"cell_type": "markdown",
"metadata": {},
2021-02-04 13:34:25 +00:00
"source": [
"## Average Descriptor\n",
"\n",
"Below presents the average descriptor for the album. \"*All Listened Tracks*\" describes the descriptor based on the listening activity for this album. This takes into account how many times a track is listened to. \"*Distinct Tracks*\" takes only the distinct set of tracks that have been listened to and takes that average.\n",
"\n",
"The difference between them could be described as which features are preferred for an album. If the blue bar is higher than the red, it would indicate that tracks from this album which have a higher value for this are listened to more. "
2021-05-06 16:19:44 +01:00
]
2021-02-04 13:34:25 +00:00
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
2021-05-07 01:03:08 +01:00
"image/png": "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
2021-05-06 16:19:44 +01:00
"text/plain": [
"<Figure size 720x480 with 1 Axes>"
]
2021-02-04 13:34:25 +00:00
},
"metadata": {
"needs_background": "light"
2021-05-06 16:19:44 +01:00
},
"output_type": "display_data"
2021-02-04 13:34:25 +00:00
}
],
"source": [
"filtered_album = scrobbles[scrobbles[\"album\"].str.lower() == album_name]\n",
"filtered_album_no_dup = filtered_album.drop_duplicates(['uri'])\n",
"\n",
"filtered_album_no_dup = filtered_album_no_dup.loc[:, float_headers].mean()\n",
"filtered_album_dup = filtered_album.loc[:, float_headers].mean()\n",
"\n",
"x = np.arange(len(float_headers))\n",
"width = 0.35\n",
"plt.bar(x - width/2, filtered_album_no_dup, width, label='All Listened Tracks')\n",
"plt.bar(x + width/2, filtered_album_dup, width, label='Distinct Tracks', color=(1, 0, 0))\n",
"\n",
"plt.title(f\"{album_name} Average Descriptor\")\n",
"plt.legend(['All Listened Tracks', 'Distinct Tracks'])\n",
"plt.xticks(x, labels=[i[:6] for i in float_headers])\n",
"plt.ylim([0, 1])\n",
"plt.grid(axis='y')\n",
"plt.show()"
]
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 6,
2021-02-04 13:34:25 +00:00
"metadata": {},
"outputs": [
{
"data": {
2021-05-07 01:03:08 +01:00
"image/png": "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
2021-05-06 16:19:44 +01:00
"text/plain": [
"<Figure size 720x480 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
2021-05-06 16:19:44 +01:00
},
"output_type": "display_data"
}
],
"source": [
"filtered_album = scrobbles[scrobbles[\"album\"].str.lower() == album_name]\n",
"# select only descriptor float columns\n",
"filtered_album = filtered_album.loc[:, float_headers]\n",
"# resample by day and mean\n",
"filtered_album = filtered_album.resample(\"1M\").mean()\n",
"\n",
"# filtered_album[\"energy\"].plot()\n",
2021-02-04 13:34:25 +00:00
"filtered_album.plot(lw=3)\n",
"\n",
"plt.title(f\"{album_name} Characteristics Over Time\")\n",
"plt.legend(loc = \"upper left\", fontsize = \"xx-small\")\n",
"plt.ylim([0, 1])\n",
"plt.grid()\n",
"plt.show()"
]
},
{
2021-05-06 16:19:44 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"# Album Listening Time"
2021-05-06 16:19:44 +01:00
]
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"limit = 50\n",
"albums = fmnet.top_albums(period=fmnet.Range.OVERALL, limit=limit)\n",
"\n",
"filtered_albums = [scrobbles[scrobbles[\"album\"] == i.name] for i in albums]\n",
"\n",
"### STATS ###\n",
"# total time listening to artists \n",
"albums_time = [i[\"duration_ms\"].sum() for i in filtered_albums]\n",
"# total number of tracks\n",
"albums_track_count = np.array([i.drop_duplicates([\"uri\"]).count()[0] for i in filtered_albums])\n",
"# average length of artist's tracks (ms)\n",
"albums_average_track_length = np.array([i.drop_duplicates([\"uri\"])[\"duration_ms\"].mean() for i in filtered_albums])\n",
"\n",
"fig_size = (7,(5/20)*limit)"
]
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
2021-05-07 01:03:08 +01:00
"image/png": "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
2021-05-06 16:19:44 +01:00
"text/plain": [
"<Figure size 840x1500 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
2021-05-06 16:19:44 +01:00
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=fig_size)\n",
"plt.barh(np.arange(len(albums))[::-1], np.array(albums_time) / (1000 * 60 * 60) )\n",
"plt.yticks(np.arange(len(albums))[::-1], labels=[f'{i.name}, {i.artist[\"name\"]}' for i in albums])\n",
"plt.xlabel(\"Time (Hours)\")\n",
"plt.grid(axis=\"x\")\n",
"plt.title(\"Time Listened (Since Nov 17)\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
2021-05-07 01:03:08 +01:00
"image/png": "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
2021-05-06 16:19:44 +01:00
"text/plain": [
"<Figure size 840x1500 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
2021-05-06 16:19:44 +01:00
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=fig_size)\n",
"plt.barh(np.arange(len(albums))[::-1], np.array(albums_time) / (albums_track_count * albums_average_track_length) )\n",
"plt.yticks(np.arange(len(albums))[::-1], labels=[f'{i.name}, {i.artist[\"name\"]}' for i in albums])\n",
"plt.xlabel(\"Average plays per song\")\n",
"plt.grid(axis=\"x\")\n",
"plt.title(\"Normalised listening time\")\n",
"plt.show()"
]
},
{
2021-05-06 16:19:44 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"# Imports & Setup"
2021-05-06 16:19:44 +01:00
]
},
{
"cell_type": "code",
2021-05-06 16:19:44 +01:00
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from datetime import datetime\n",
"\n",
"from google.cloud import bigquery\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib as mpl\n",
"mpl.rcParams['figure.dpi'] = 120\n",
"\n",
"from analysis.net import get_spotnet, get_fmnet, get_playlist, track_frame\n",
"from analysis.query import *\n",
"from analysis import float_headers, days_since\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"client = bigquery.Client()\n",
"spotnet = get_spotnet()\n",
"fmnet = get_fmnet()\n",
"cache = 'query.csv'\n",
"first_day = datetime(year=2017, month=11, day=3)"
]
},
{
2021-05-06 16:19:44 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"## Read Scrobble Frame"
2021-05-06 16:19:44 +01:00
]
},
{
"cell_type": "code",
2021-05-07 01:03:08 +01:00
"execution_count": 2,
"metadata": {},
2021-05-07 01:03:08 +01:00
"outputs": [],
"source": [
"scrobbles = get_query(cache=cache)"
]
},
{
2021-05-06 16:19:44 +01:00
"cell_type": "markdown",
"metadata": {},
"source": [
"## Write Scrobble Frame"
2021-05-06 16:19:44 +01:00
]
},
{
"cell_type": "code",
2021-05-06 16:19:44 +01:00
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"scrobbles.reset_index().to_csv(cache, sep='\\t')"
]
2021-05-06 16:19:44 +01:00
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.9"
}
2021-05-06 16:19:44 +01:00
},
"nbformat": 4,
"nbformat_minor": 4
}