nlovoldegar commited on
Commit
0cb8f83
·
1 Parent(s): e838768

Delete preprocessed_data.ipynb

Browse files
Files changed (1) hide show
  1. preprocessed_data.ipynb +0 -2062
preprocessed_data.ipynb DELETED
@@ -1,2062 +0,0 @@
1
- {
2
- "nbformat": 4,
3
- "nbformat_minor": 0,
4
- "metadata": {
5
- "colab": {
6
- "provenance": []
7
- },
8
- "kernelspec": {
9
- "name": "python3",
10
- "display_name": "Python 3"
11
- },
12
- "language_info": {
13
- "name": "python"
14
- }
15
- },
16
- "cells": [
17
- {
18
- "cell_type": "code",
19
- "execution_count": 1,
20
- "metadata": {
21
- "id": "FplIdD623HAp"
22
- },
23
- "outputs": [],
24
- "source": [
25
- "import pandas as pd"
26
- ]
27
- },
28
- {
29
- "cell_type": "code",
30
- "source": [
31
- "from google.colab import files\n",
32
- "files.upload()"
33
- ],
34
- "metadata": {
35
- "colab": {
36
- "base_uri": "https://localhost:8080/",
37
- "height": 91
38
- },
39
- "id": "1Q3uH4fM5kEC",
40
- "outputId": "66ca70c8-4e9f-4da4-ef3e-1e50c96023d6"
41
- },
42
- "execution_count": 3,
43
- "outputs": [
44
- {
45
- "output_type": "display_data",
46
- "data": {
47
- "text/plain": [
48
- "<IPython.core.display.HTML object>"
49
- ],
50
- "text/html": [
51
- "\n",
52
- " <input type=\"file\" id=\"files-1551534a-a390-4a9d-84fd-7429e378414c\" name=\"files[]\" multiple disabled\n",
53
- " style=\"border:none\" />\n",
54
- " <output id=\"result-1551534a-a390-4a9d-84fd-7429e378414c\">\n",
55
- " Upload widget is only available when the cell has been executed in the\n",
56
- " current browser session. Please rerun this cell to enable.\n",
57
- " </output>\n",
58
- " <script>// Copyright 2017 Google LLC\n",
59
- "//\n",
60
- "// Licensed under the Apache License, Version 2.0 (the \"License\");\n",
61
- "// you may not use this file except in compliance with the License.\n",
62
- "// You may obtain a copy of the License at\n",
63
- "//\n",
64
- "// http://www.apache.org/licenses/LICENSE-2.0\n",
65
- "//\n",
66
- "// Unless required by applicable law or agreed to in writing, software\n",
67
- "// distributed under the License is distributed on an \"AS IS\" BASIS,\n",
68
- "// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
69
- "// See the License for the specific language governing permissions and\n",
70
- "// limitations under the License.\n",
71
- "\n",
72
- "/**\n",
73
- " * @fileoverview Helpers for google.colab Python module.\n",
74
- " */\n",
75
- "(function(scope) {\n",
76
- "function span(text, styleAttributes = {}) {\n",
77
- " const element = document.createElement('span');\n",
78
- " element.textContent = text;\n",
79
- " for (const key of Object.keys(styleAttributes)) {\n",
80
- " element.style[key] = styleAttributes[key];\n",
81
- " }\n",
82
- " return element;\n",
83
- "}\n",
84
- "\n",
85
- "// Max number of bytes which will be uploaded at a time.\n",
86
- "const MAX_PAYLOAD_SIZE = 100 * 1024;\n",
87
- "\n",
88
- "function _uploadFiles(inputId, outputId) {\n",
89
- " const steps = uploadFilesStep(inputId, outputId);\n",
90
- " const outputElement = document.getElementById(outputId);\n",
91
- " // Cache steps on the outputElement to make it available for the next call\n",
92
- " // to uploadFilesContinue from Python.\n",
93
- " outputElement.steps = steps;\n",
94
- "\n",
95
- " return _uploadFilesContinue(outputId);\n",
96
- "}\n",
97
- "\n",
98
- "// This is roughly an async generator (not supported in the browser yet),\n",
99
- "// where there are multiple asynchronous steps and the Python side is going\n",
100
- "// to poll for completion of each step.\n",
101
- "// This uses a Promise to block the python side on completion of each step,\n",
102
- "// then passes the result of the previous step as the input to the next step.\n",
103
- "function _uploadFilesContinue(outputId) {\n",
104
- " const outputElement = document.getElementById(outputId);\n",
105
- " const steps = outputElement.steps;\n",
106
- "\n",
107
- " const next = steps.next(outputElement.lastPromiseValue);\n",
108
- " return Promise.resolve(next.value.promise).then((value) => {\n",
109
- " // Cache the last promise value to make it available to the next\n",
110
- " // step of the generator.\n",
111
- " outputElement.lastPromiseValue = value;\n",
112
- " return next.value.response;\n",
113
- " });\n",
114
- "}\n",
115
- "\n",
116
- "/**\n",
117
- " * Generator function which is called between each async step of the upload\n",
118
- " * process.\n",
119
- " * @param {string} inputId Element ID of the input file picker element.\n",
120
- " * @param {string} outputId Element ID of the output display.\n",
121
- " * @return {!Iterable<!Object>} Iterable of next steps.\n",
122
- " */\n",
123
- "function* uploadFilesStep(inputId, outputId) {\n",
124
- " const inputElement = document.getElementById(inputId);\n",
125
- " inputElement.disabled = false;\n",
126
- "\n",
127
- " const outputElement = document.getElementById(outputId);\n",
128
- " outputElement.innerHTML = '';\n",
129
- "\n",
130
- " const pickedPromise = new Promise((resolve) => {\n",
131
- " inputElement.addEventListener('change', (e) => {\n",
132
- " resolve(e.target.files);\n",
133
- " });\n",
134
- " });\n",
135
- "\n",
136
- " const cancel = document.createElement('button');\n",
137
- " inputElement.parentElement.appendChild(cancel);\n",
138
- " cancel.textContent = 'Cancel upload';\n",
139
- " const cancelPromise = new Promise((resolve) => {\n",
140
- " cancel.onclick = () => {\n",
141
- " resolve(null);\n",
142
- " };\n",
143
- " });\n",
144
- "\n",
145
- " // Wait for the user to pick the files.\n",
146
- " const files = yield {\n",
147
- " promise: Promise.race([pickedPromise, cancelPromise]),\n",
148
- " response: {\n",
149
- " action: 'starting',\n",
150
- " }\n",
151
- " };\n",
152
- "\n",
153
- " cancel.remove();\n",
154
- "\n",
155
- " // Disable the input element since further picks are not allowed.\n",
156
- " inputElement.disabled = true;\n",
157
- "\n",
158
- " if (!files) {\n",
159
- " return {\n",
160
- " response: {\n",
161
- " action: 'complete',\n",
162
- " }\n",
163
- " };\n",
164
- " }\n",
165
- "\n",
166
- " for (const file of files) {\n",
167
- " const li = document.createElement('li');\n",
168
- " li.append(span(file.name, {fontWeight: 'bold'}));\n",
169
- " li.append(span(\n",
170
- " `(${file.type || 'n/a'}) - ${file.size} bytes, ` +\n",
171
- " `last modified: ${\n",
172
- " file.lastModifiedDate ? file.lastModifiedDate.toLocaleDateString() :\n",
173
- " 'n/a'} - `));\n",
174
- " const percent = span('0% done');\n",
175
- " li.appendChild(percent);\n",
176
- "\n",
177
- " outputElement.appendChild(li);\n",
178
- "\n",
179
- " const fileDataPromise = new Promise((resolve) => {\n",
180
- " const reader = new FileReader();\n",
181
- " reader.onload = (e) => {\n",
182
- " resolve(e.target.result);\n",
183
- " };\n",
184
- " reader.readAsArrayBuffer(file);\n",
185
- " });\n",
186
- " // Wait for the data to be ready.\n",
187
- " let fileData = yield {\n",
188
- " promise: fileDataPromise,\n",
189
- " response: {\n",
190
- " action: 'continue',\n",
191
- " }\n",
192
- " };\n",
193
- "\n",
194
- " // Use a chunked sending to avoid message size limits. See b/62115660.\n",
195
- " let position = 0;\n",
196
- " do {\n",
197
- " const length = Math.min(fileData.byteLength - position, MAX_PAYLOAD_SIZE);\n",
198
- " const chunk = new Uint8Array(fileData, position, length);\n",
199
- " position += length;\n",
200
- "\n",
201
- " const base64 = btoa(String.fromCharCode.apply(null, chunk));\n",
202
- " yield {\n",
203
- " response: {\n",
204
- " action: 'append',\n",
205
- " file: file.name,\n",
206
- " data: base64,\n",
207
- " },\n",
208
- " };\n",
209
- "\n",
210
- " let percentDone = fileData.byteLength === 0 ?\n",
211
- " 100 :\n",
212
- " Math.round((position / fileData.byteLength) * 100);\n",
213
- " percent.textContent = `${percentDone}% done`;\n",
214
- "\n",
215
- " } while (position < fileData.byteLength);\n",
216
- " }\n",
217
- "\n",
218
- " // All done.\n",
219
- " yield {\n",
220
- " response: {\n",
221
- " action: 'complete',\n",
222
- " }\n",
223
- " };\n",
224
- "}\n",
225
- "\n",
226
- "scope.google = scope.google || {};\n",
227
- "scope.google.colab = scope.google.colab || {};\n",
228
- "scope.google.colab._files = {\n",
229
- " _uploadFiles,\n",
230
- " _uploadFilesContinue,\n",
231
- "};\n",
232
- "})(self);\n",
233
- "</script> "
234
- ]
235
- },
236
- "metadata": {}
237
- },
238
- {
239
- "output_type": "stream",
240
- "name": "stdout",
241
- "text": [
242
- "Saving kaggle.json to kaggle.json\n"
243
- ]
244
- },
245
- {
246
- "output_type": "execute_result",
247
- "data": {
248
- "text/plain": [
249
- "{'kaggle.json': b'{\"username\":\"nicolelovoldegar\",\"key\":\"6f3b82ca462a786dec38b73cb86062fc\"}'}"
250
- ]
251
- },
252
- "metadata": {},
253
- "execution_count": 3
254
- }
255
- ]
256
- },
257
- {
258
- "cell_type": "code",
259
- "source": [
260
- "!mkdir ~/.kaggle/\n",
261
- "!cp kaggle.json ~/.kaggle/"
262
- ],
263
- "metadata": {
264
- "id": "XIfkGtcN5veF"
265
- },
266
- "execution_count": 5,
267
- "outputs": []
268
- },
269
- {
270
- "cell_type": "code",
271
- "source": [
272
- "!chmod 600 ~/.kaggle/kaggle.json"
273
- ],
274
- "metadata": {
275
- "id": "Lv7BUFzs5so1"
276
- },
277
- "execution_count": 6,
278
- "outputs": []
279
- },
280
- {
281
- "cell_type": "code",
282
- "source": [
283
- "!kaggle datasets download -d saurabhshahane/spotgen-music-dataset"
284
- ],
285
- "metadata": {
286
- "colab": {
287
- "base_uri": "https://localhost:8080/"
288
- },
289
- "id": "yW3gI56q5x9B",
290
- "outputId": "20280982-d21a-494a-915b-a554c5f76573"
291
- },
292
- "execution_count": 7,
293
- "outputs": [
294
- {
295
- "output_type": "stream",
296
- "name": "stdout",
297
- "text": [
298
- "Downloading spotgen-music-dataset.zip to /content\n",
299
- "100% 273M/274M [00:18<00:00, 23.0MB/s]\n",
300
- "100% 274M/274M [00:18<00:00, 15.9MB/s]\n"
301
- ]
302
- }
303
- ]
304
- },
305
- {
306
- "cell_type": "code",
307
- "source": [
308
- "!pip install patool"
309
- ],
310
- "metadata": {
311
- "colab": {
312
- "base_uri": "https://localhost:8080/"
313
- },
314
- "id": "eIsVsVF_57MO",
315
- "outputId": "4a4de23c-f8b2-48ae-c7da-2483b79b0358"
316
- },
317
- "execution_count": 8,
318
- "outputs": [
319
- {
320
- "output_type": "stream",
321
- "name": "stdout",
322
- "text": [
323
- "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
324
- "Collecting patool\n",
325
- " Downloading patool-1.12-py2.py3-none-any.whl (77 kB)\n",
326
- "\u001b[K |████████████████████████████████| 77 kB 3.0 MB/s \n",
327
- "\u001b[?25hInstalling collected packages: patool\n",
328
- "Successfully installed patool-1.12\n"
329
- ]
330
- }
331
- ]
332
- },
333
- {
334
- "cell_type": "code",
335
- "source": [
336
- "import patoolib"
337
- ],
338
- "metadata": {
339
- "id": "y5kv8NsL59W6"
340
- },
341
- "execution_count": 9,
342
- "outputs": []
343
- },
344
- {
345
- "cell_type": "code",
346
- "source": [
347
- "patoolib.extract_archive('spotgen-music-dataset.zip')"
348
- ],
349
- "metadata": {
350
- "colab": {
351
- "base_uri": "https://localhost:8080/",
352
- "height": 88
353
- },
354
- "id": "CCM-qXKe5_Km",
355
- "outputId": "f2c3ac9f-c1ab-4997-ed11-d318f2967d3c"
356
- },
357
- "execution_count": 10,
358
- "outputs": [
359
- {
360
- "output_type": "stream",
361
- "name": "stdout",
362
- "text": [
363
- "patool: Extracting spotgen-music-dataset.zip ...\n",
364
- "patool: running /usr/bin/7z x -o./Unpack_51crkv6y -- spotgen-music-dataset.zip\n",
365
- "patool: ... spotgen-music-dataset.zip extracted to `SpotGenTrack'.\n"
366
- ]
367
- },
368
- {
369
- "output_type": "execute_result",
370
- "data": {
371
- "text/plain": [
372
- "'SpotGenTrack'"
373
- ],
374
- "application/vnd.google.colaboratory.intrinsic+json": {
375
- "type": "string"
376
- }
377
- },
378
- "metadata": {},
379
- "execution_count": 10
380
- }
381
- ]
382
- },
383
- {
384
- "cell_type": "code",
385
- "source": [
386
- "data_dir = \"SpotGenTrack/Data Sources/\"\n",
387
- "albums_data = pd.read_csv(data_dir + \"spotify_albums.csv\")\n",
388
- "artists_data = pd.read_csv(data_dir + \"spotify_artists.csv\")\n",
389
- "tracks_data = pd.read_csv(data_dir + \"spotify_tracks.csv\")"
390
- ],
391
- "metadata": {
392
- "id": "q5JCr7WS5XiT"
393
- },
394
- "execution_count": 11,
395
- "outputs": []
396
- },
397
- {
398
- "cell_type": "code",
399
- "source": [
400
- "display(albums_data.head())\n",
401
- "albums_data.columns"
402
- ],
403
- "metadata": {
404
- "colab": {
405
- "base_uri": "https://localhost:8080/",
406
- "height": 582
407
- },
408
- "id": "rrQEjWwK6W2g",
409
- "outputId": "984e20a8-720e-475c-b97d-23aebb518c4e"
410
- },
411
- "execution_count": 12,
412
- "outputs": [
413
- {
414
- "output_type": "display_data",
415
- "data": {
416
- "text/plain": [
417
- " Unnamed: 0 album_type artist_id \\\n",
418
- "0 0 single 3DiDSECUqqY1AuBP8qtaIa \n",
419
- "1 1 album 6s1pCNXcbdtQJlsnM1hRIA \n",
420
- "2 2 single 5YjfNaHq05WrwldRe1QSBc \n",
421
- "3 3 single 2G9Vc16JCpnZmK4uGH46Fa \n",
422
- "4 4 single 2dwM9OcE4c3Ph1UBINSodx \n",
423
- "\n",
424
- " available_markets \\\n",
425
- "0 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... \n",
426
- "1 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... \n",
427
- "2 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... \n",
428
- "3 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... \n",
429
- "4 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... \n",
430
- "\n",
431
- " external_urls \\\n",
432
- "0 {'spotify': 'https://open.spotify.com/album/1g... \n",
433
- "1 {'spotify': 'https://open.spotify.com/album/4K... \n",
434
- "2 {'spotify': 'https://open.spotify.com/album/7n... \n",
435
- "3 {'spotify': 'https://open.spotify.com/album/6p... \n",
436
- "4 {'spotify': 'https://open.spotify.com/album/1X... \n",
437
- "\n",
438
- " href id \\\n",
439
- "0 https://api.spotify.com/v1/albums/1gAM7M4rBwEb... 1gAM7M4rBwEbSPeAQR2nx1 \n",
440
- "1 https://api.spotify.com/v1/albums/4KfJZV7WfolY... 4KfJZV7WfolYlxBzOTo66s \n",
441
- "2 https://api.spotify.com/v1/albums/7nLYY7uAVUb5... 7nLYY7uAVUb57kpd7tZxnS \n",
442
- "3 https://api.spotify.com/v1/albums/6p20Rt4x2Qn5... 6p20Rt4x2Qn5mUMRi1s6pj \n",
443
- "4 https://api.spotify.com/v1/albums/1XeoOqC1q7U2... 1XeoOqC1q7U2iyLEQJ64cu \n",
444
- "\n",
445
- " images \\\n",
446
- "0 [{'height': 640, 'url': 'https://i.scdn.co/ima... \n",
447
- "1 [{'height': 640, 'url': 'https://i.scdn.co/ima... \n",
448
- "2 [{'height': 640, 'url': 'https://i.scdn.co/ima... \n",
449
- "3 [{'height': 640, 'url': 'https://i.scdn.co/ima... \n",
450
- "4 [{'height': 640, 'url': 'https://i.scdn.co/ima... \n",
451
- "\n",
452
- " name release_date \\\n",
453
- "0 If I Ain't Got You EP 2019-02-08 \n",
454
- "1 Shostakovich Symphony No.5 - Four Romances on ... 2019-03-01 \n",
455
- "2 Take My Bass 2019-03-14 \n",
456
- "3 Hypnotizing (Are U) 2016-11-16 \n",
457
- "4 Sunshine 2018-07-20 \n",
458
- "\n",
459
- " release_date_precision total_tracks track_id \\\n",
460
- "0 day 6 2iejTMy9XZ8Gaae0aQ2yl0 \n",
461
- "1 day 8 1WQfghEjszJJ4H8MAWrQ2C \n",
462
- "2 day 1 3jJKj4QTK3v18ZSwpk7AcV \n",
463
- "3 day 1 1xGtDafUZbHyYC3Xarcbrj \n",
464
- "4 day 1 0gWtsXvXOzAT6FtM3ur8in \n",
465
- "\n",
466
- " track_name_prev uri type \n",
467
- "0 track_32 spotify:album:1gAM7M4rBwEbSPeAQR2nx1 album \n",
468
- "1 track_11 spotify:album:4KfJZV7WfolYlxBzOTo66s album \n",
469
- "2 track_15 spotify:album:7nLYY7uAVUb57kpd7tZxnS album \n",
470
- "3 track_46 spotify:album:6p20Rt4x2Qn5mUMRi1s6pj album \n",
471
- "4 track_10 spotify:album:1XeoOqC1q7U2iyLEQJ64cu album "
472
- ],
473
- "text/html": [
474
- "\n",
475
- " <div id=\"df-eabe1c5a-d6e1-4b7b-83a0-6578c7fa299e\">\n",
476
- " <div class=\"colab-df-container\">\n",
477
- " <div>\n",
478
- "<style scoped>\n",
479
- " .dataframe tbody tr th:only-of-type {\n",
480
- " vertical-align: middle;\n",
481
- " }\n",
482
- "\n",
483
- " .dataframe tbody tr th {\n",
484
- " vertical-align: top;\n",
485
- " }\n",
486
- "\n",
487
- " .dataframe thead th {\n",
488
- " text-align: right;\n",
489
- " }\n",
490
- "</style>\n",
491
- "<table border=\"1\" class=\"dataframe\">\n",
492
- " <thead>\n",
493
- " <tr style=\"text-align: right;\">\n",
494
- " <th></th>\n",
495
- " <th>Unnamed: 0</th>\n",
496
- " <th>album_type</th>\n",
497
- " <th>artist_id</th>\n",
498
- " <th>available_markets</th>\n",
499
- " <th>external_urls</th>\n",
500
- " <th>href</th>\n",
501
- " <th>id</th>\n",
502
- " <th>images</th>\n",
503
- " <th>name</th>\n",
504
- " <th>release_date</th>\n",
505
- " <th>release_date_precision</th>\n",
506
- " <th>total_tracks</th>\n",
507
- " <th>track_id</th>\n",
508
- " <th>track_name_prev</th>\n",
509
- " <th>uri</th>\n",
510
- " <th>type</th>\n",
511
- " </tr>\n",
512
- " </thead>\n",
513
- " <tbody>\n",
514
- " <tr>\n",
515
- " <th>0</th>\n",
516
- " <td>0</td>\n",
517
- " <td>single</td>\n",
518
- " <td>3DiDSECUqqY1AuBP8qtaIa</td>\n",
519
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
520
- " <td>{'spotify': 'https://open.spotify.com/album/1g...</td>\n",
521
- " <td>https://api.spotify.com/v1/albums/1gAM7M4rBwEb...</td>\n",
522
- " <td>1gAM7M4rBwEbSPeAQR2nx1</td>\n",
523
- " <td>[{'height': 640, 'url': 'https://i.scdn.co/ima...</td>\n",
524
- " <td>If I Ain't Got You EP</td>\n",
525
- " <td>2019-02-08</td>\n",
526
- " <td>day</td>\n",
527
- " <td>6</td>\n",
528
- " <td>2iejTMy9XZ8Gaae0aQ2yl0</td>\n",
529
- " <td>track_32</td>\n",
530
- " <td>spotify:album:1gAM7M4rBwEbSPeAQR2nx1</td>\n",
531
- " <td>album</td>\n",
532
- " </tr>\n",
533
- " <tr>\n",
534
- " <th>1</th>\n",
535
- " <td>1</td>\n",
536
- " <td>album</td>\n",
537
- " <td>6s1pCNXcbdtQJlsnM1hRIA</td>\n",
538
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
539
- " <td>{'spotify': 'https://open.spotify.com/album/4K...</td>\n",
540
- " <td>https://api.spotify.com/v1/albums/4KfJZV7WfolY...</td>\n",
541
- " <td>4KfJZV7WfolYlxBzOTo66s</td>\n",
542
- " <td>[{'height': 640, 'url': 'https://i.scdn.co/ima...</td>\n",
543
- " <td>Shostakovich Symphony No.5 - Four Romances on ...</td>\n",
544
- " <td>2019-03-01</td>\n",
545
- " <td>day</td>\n",
546
- " <td>8</td>\n",
547
- " <td>1WQfghEjszJJ4H8MAWrQ2C</td>\n",
548
- " <td>track_11</td>\n",
549
- " <td>spotify:album:4KfJZV7WfolYlxBzOTo66s</td>\n",
550
- " <td>album</td>\n",
551
- " </tr>\n",
552
- " <tr>\n",
553
- " <th>2</th>\n",
554
- " <td>2</td>\n",
555
- " <td>single</td>\n",
556
- " <td>5YjfNaHq05WrwldRe1QSBc</td>\n",
557
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
558
- " <td>{'spotify': 'https://open.spotify.com/album/7n...</td>\n",
559
- " <td>https://api.spotify.com/v1/albums/7nLYY7uAVUb5...</td>\n",
560
- " <td>7nLYY7uAVUb57kpd7tZxnS</td>\n",
561
- " <td>[{'height': 640, 'url': 'https://i.scdn.co/ima...</td>\n",
562
- " <td>Take My Bass</td>\n",
563
- " <td>2019-03-14</td>\n",
564
- " <td>day</td>\n",
565
- " <td>1</td>\n",
566
- " <td>3jJKj4QTK3v18ZSwpk7AcV</td>\n",
567
- " <td>track_15</td>\n",
568
- " <td>spotify:album:7nLYY7uAVUb57kpd7tZxnS</td>\n",
569
- " <td>album</td>\n",
570
- " </tr>\n",
571
- " <tr>\n",
572
- " <th>3</th>\n",
573
- " <td>3</td>\n",
574
- " <td>single</td>\n",
575
- " <td>2G9Vc16JCpnZmK4uGH46Fa</td>\n",
576
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
577
- " <td>{'spotify': 'https://open.spotify.com/album/6p...</td>\n",
578
- " <td>https://api.spotify.com/v1/albums/6p20Rt4x2Qn5...</td>\n",
579
- " <td>6p20Rt4x2Qn5mUMRi1s6pj</td>\n",
580
- " <td>[{'height': 640, 'url': 'https://i.scdn.co/ima...</td>\n",
581
- " <td>Hypnotizing (Are U)</td>\n",
582
- " <td>2016-11-16</td>\n",
583
- " <td>day</td>\n",
584
- " <td>1</td>\n",
585
- " <td>1xGtDafUZbHyYC3Xarcbrj</td>\n",
586
- " <td>track_46</td>\n",
587
- " <td>spotify:album:6p20Rt4x2Qn5mUMRi1s6pj</td>\n",
588
- " <td>album</td>\n",
589
- " </tr>\n",
590
- " <tr>\n",
591
- " <th>4</th>\n",
592
- " <td>4</td>\n",
593
- " <td>single</td>\n",
594
- " <td>2dwM9OcE4c3Ph1UBINSodx</td>\n",
595
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
596
- " <td>{'spotify': 'https://open.spotify.com/album/1X...</td>\n",
597
- " <td>https://api.spotify.com/v1/albums/1XeoOqC1q7U2...</td>\n",
598
- " <td>1XeoOqC1q7U2iyLEQJ64cu</td>\n",
599
- " <td>[{'height': 640, 'url': 'https://i.scdn.co/ima...</td>\n",
600
- " <td>Sunshine</td>\n",
601
- " <td>2018-07-20</td>\n",
602
- " <td>day</td>\n",
603
- " <td>1</td>\n",
604
- " <td>0gWtsXvXOzAT6FtM3ur8in</td>\n",
605
- " <td>track_10</td>\n",
606
- " <td>spotify:album:1XeoOqC1q7U2iyLEQJ64cu</td>\n",
607
- " <td>album</td>\n",
608
- " </tr>\n",
609
- " </tbody>\n",
610
- "</table>\n",
611
- "</div>\n",
612
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-eabe1c5a-d6e1-4b7b-83a0-6578c7fa299e')\"\n",
613
- " title=\"Convert this dataframe to an interactive table.\"\n",
614
- " style=\"display:none;\">\n",
615
- " \n",
616
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
617
- " width=\"24px\">\n",
618
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
619
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
620
- " </svg>\n",
621
- " </button>\n",
622
- " \n",
623
- " <style>\n",
624
- " .colab-df-container {\n",
625
- " display:flex;\n",
626
- " flex-wrap:wrap;\n",
627
- " gap: 12px;\n",
628
- " }\n",
629
- "\n",
630
- " .colab-df-convert {\n",
631
- " background-color: #E8F0FE;\n",
632
- " border: none;\n",
633
- " border-radius: 50%;\n",
634
- " cursor: pointer;\n",
635
- " display: none;\n",
636
- " fill: #1967D2;\n",
637
- " height: 32px;\n",
638
- " padding: 0 0 0 0;\n",
639
- " width: 32px;\n",
640
- " }\n",
641
- "\n",
642
- " .colab-df-convert:hover {\n",
643
- " background-color: #E2EBFA;\n",
644
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
645
- " fill: #174EA6;\n",
646
- " }\n",
647
- "\n",
648
- " [theme=dark] .colab-df-convert {\n",
649
- " background-color: #3B4455;\n",
650
- " fill: #D2E3FC;\n",
651
- " }\n",
652
- "\n",
653
- " [theme=dark] .colab-df-convert:hover {\n",
654
- " background-color: #434B5C;\n",
655
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
656
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
657
- " fill: #FFFFFF;\n",
658
- " }\n",
659
- " </style>\n",
660
- "\n",
661
- " <script>\n",
662
- " const buttonEl =\n",
663
- " document.querySelector('#df-eabe1c5a-d6e1-4b7b-83a0-6578c7fa299e button.colab-df-convert');\n",
664
- " buttonEl.style.display =\n",
665
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
666
- "\n",
667
- " async function convertToInteractive(key) {\n",
668
- " const element = document.querySelector('#df-eabe1c5a-d6e1-4b7b-83a0-6578c7fa299e');\n",
669
- " const dataTable =\n",
670
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
671
- " [key], {});\n",
672
- " if (!dataTable) return;\n",
673
- "\n",
674
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
675
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
676
- " + ' to learn more about interactive tables.';\n",
677
- " element.innerHTML = '';\n",
678
- " dataTable['output_type'] = 'display_data';\n",
679
- " await google.colab.output.renderOutput(dataTable, element);\n",
680
- " const docLink = document.createElement('div');\n",
681
- " docLink.innerHTML = docLinkHtml;\n",
682
- " element.appendChild(docLink);\n",
683
- " }\n",
684
- " </script>\n",
685
- " </div>\n",
686
- " </div>\n",
687
- " "
688
- ]
689
- },
690
- "metadata": {}
691
- },
692
- {
693
- "output_type": "execute_result",
694
- "data": {
695
- "text/plain": [
696
- "Index(['Unnamed: 0', 'album_type', 'artist_id', 'available_markets',\n",
697
- " 'external_urls', 'href', 'id', 'images', 'name', 'release_date',\n",
698
- " 'release_date_precision', 'total_tracks', 'track_id', 'track_name_prev',\n",
699
- " 'uri', 'type'],\n",
700
- " dtype='object')"
701
- ]
702
- },
703
- "metadata": {},
704
- "execution_count": 12
705
- }
706
- ]
707
- },
708
- {
709
- "cell_type": "code",
710
- "source": [
711
- "display(artists_data.head())\n",
712
- "artists_data.columns"
713
- ],
714
- "metadata": {
715
- "colab": {
716
- "base_uri": "https://localhost:8080/",
717
- "height": 258
718
- },
719
- "id": "tAHuaO606Yjd",
720
- "outputId": "e9feccbe-990f-444a-a16d-b00f9d0cceea"
721
- },
722
- "execution_count": 13,
723
- "outputs": [
724
- {
725
- "output_type": "display_data",
726
- "data": {
727
- "text/plain": [
728
- " Unnamed: 0 artist_popularity followers \\\n",
729
- "0 0 44 23230 \n",
730
- "1 1 22 313 \n",
731
- "2 2 26 1596 \n",
732
- "3 3 31 149 \n",
733
- "4 4 21 11 \n",
734
- "\n",
735
- " genres id \\\n",
736
- "0 ['sertanejo', 'sertanejo pop', 'sertanejo trad... 4mGnpjhqgx4RUdsIJiURdo \n",
737
- "1 [] 1dLnVku4VQUOLswwDFvRc9 \n",
738
- "2 ['danish pop rock'] 6YVY310fjfUzKi8hiqR7iK \n",
739
- "3 ['uk alternative pop'] 2VElyouiCfoYPDJluzwJwK \n",
740
- "4 ['french baroque'] 4agVy03qW8juSysCTUOuDI \n",
741
- "\n",
742
- " name track_id track_name_prev type \n",
743
- "0 Juliano Cezar 0wmDmAILuW9e2aRttkl4aC track_9 artist \n",
744
- "1 The Grenadines 4wqwj0gA8qPZKLl5WVqXml track_30 artist \n",
745
- "2 Gangway 1bFqWDbvHmZe2f4Nf9qaD8 track_38 artist \n",
746
- "3 FADES 3MFSUBAidPzRBbIS7BDj1S track_34 artist \n",
747
- "4 Jean-Pierre Guignon 2r3q57FhxdsCyYr0kuDq4b track_26 artist "
748
- ],
749
- "text/html": [
750
- "\n",
751
- " <div id=\"df-d959edf2-79c3-4736-8a38-326b6c0d0f2d\">\n",
752
- " <div class=\"colab-df-container\">\n",
753
- " <div>\n",
754
- "<style scoped>\n",
755
- " .dataframe tbody tr th:only-of-type {\n",
756
- " vertical-align: middle;\n",
757
- " }\n",
758
- "\n",
759
- " .dataframe tbody tr th {\n",
760
- " vertical-align: top;\n",
761
- " }\n",
762
- "\n",
763
- " .dataframe thead th {\n",
764
- " text-align: right;\n",
765
- " }\n",
766
- "</style>\n",
767
- "<table border=\"1\" class=\"dataframe\">\n",
768
- " <thead>\n",
769
- " <tr style=\"text-align: right;\">\n",
770
- " <th></th>\n",
771
- " <th>Unnamed: 0</th>\n",
772
- " <th>artist_popularity</th>\n",
773
- " <th>followers</th>\n",
774
- " <th>genres</th>\n",
775
- " <th>id</th>\n",
776
- " <th>name</th>\n",
777
- " <th>track_id</th>\n",
778
- " <th>track_name_prev</th>\n",
779
- " <th>type</th>\n",
780
- " </tr>\n",
781
- " </thead>\n",
782
- " <tbody>\n",
783
- " <tr>\n",
784
- " <th>0</th>\n",
785
- " <td>0</td>\n",
786
- " <td>44</td>\n",
787
- " <td>23230</td>\n",
788
- " <td>['sertanejo', 'sertanejo pop', 'sertanejo trad...</td>\n",
789
- " <td>4mGnpjhqgx4RUdsIJiURdo</td>\n",
790
- " <td>Juliano Cezar</td>\n",
791
- " <td>0wmDmAILuW9e2aRttkl4aC</td>\n",
792
- " <td>track_9</td>\n",
793
- " <td>artist</td>\n",
794
- " </tr>\n",
795
- " <tr>\n",
796
- " <th>1</th>\n",
797
- " <td>1</td>\n",
798
- " <td>22</td>\n",
799
- " <td>313</td>\n",
800
- " <td>[]</td>\n",
801
- " <td>1dLnVku4VQUOLswwDFvRc9</td>\n",
802
- " <td>The Grenadines</td>\n",
803
- " <td>4wqwj0gA8qPZKLl5WVqXml</td>\n",
804
- " <td>track_30</td>\n",
805
- " <td>artist</td>\n",
806
- " </tr>\n",
807
- " <tr>\n",
808
- " <th>2</th>\n",
809
- " <td>2</td>\n",
810
- " <td>26</td>\n",
811
- " <td>1596</td>\n",
812
- " <td>['danish pop rock']</td>\n",
813
- " <td>6YVY310fjfUzKi8hiqR7iK</td>\n",
814
- " <td>Gangway</td>\n",
815
- " <td>1bFqWDbvHmZe2f4Nf9qaD8</td>\n",
816
- " <td>track_38</td>\n",
817
- " <td>artist</td>\n",
818
- " </tr>\n",
819
- " <tr>\n",
820
- " <th>3</th>\n",
821
- " <td>3</td>\n",
822
- " <td>31</td>\n",
823
- " <td>149</td>\n",
824
- " <td>['uk alternative pop']</td>\n",
825
- " <td>2VElyouiCfoYPDJluzwJwK</td>\n",
826
- " <td>FADES</td>\n",
827
- " <td>3MFSUBAidPzRBbIS7BDj1S</td>\n",
828
- " <td>track_34</td>\n",
829
- " <td>artist</td>\n",
830
- " </tr>\n",
831
- " <tr>\n",
832
- " <th>4</th>\n",
833
- " <td>4</td>\n",
834
- " <td>21</td>\n",
835
- " <td>11</td>\n",
836
- " <td>['french baroque']</td>\n",
837
- " <td>4agVy03qW8juSysCTUOuDI</td>\n",
838
- " <td>Jean-Pierre Guignon</td>\n",
839
- " <td>2r3q57FhxdsCyYr0kuDq4b</td>\n",
840
- " <td>track_26</td>\n",
841
- " <td>artist</td>\n",
842
- " </tr>\n",
843
- " </tbody>\n",
844
- "</table>\n",
845
- "</div>\n",
846
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d959edf2-79c3-4736-8a38-326b6c0d0f2d')\"\n",
847
- " title=\"Convert this dataframe to an interactive table.\"\n",
848
- " style=\"display:none;\">\n",
849
- " \n",
850
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
851
- " width=\"24px\">\n",
852
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
853
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
854
- " </svg>\n",
855
- " </button>\n",
856
- " \n",
857
- " <style>\n",
858
- " .colab-df-container {\n",
859
- " display:flex;\n",
860
- " flex-wrap:wrap;\n",
861
- " gap: 12px;\n",
862
- " }\n",
863
- "\n",
864
- " .colab-df-convert {\n",
865
- " background-color: #E8F0FE;\n",
866
- " border: none;\n",
867
- " border-radius: 50%;\n",
868
- " cursor: pointer;\n",
869
- " display: none;\n",
870
- " fill: #1967D2;\n",
871
- " height: 32px;\n",
872
- " padding: 0 0 0 0;\n",
873
- " width: 32px;\n",
874
- " }\n",
875
- "\n",
876
- " .colab-df-convert:hover {\n",
877
- " background-color: #E2EBFA;\n",
878
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
879
- " fill: #174EA6;\n",
880
- " }\n",
881
- "\n",
882
- " [theme=dark] .colab-df-convert {\n",
883
- " background-color: #3B4455;\n",
884
- " fill: #D2E3FC;\n",
885
- " }\n",
886
- "\n",
887
- " [theme=dark] .colab-df-convert:hover {\n",
888
- " background-color: #434B5C;\n",
889
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
890
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
891
- " fill: #FFFFFF;\n",
892
- " }\n",
893
- " </style>\n",
894
- "\n",
895
- " <script>\n",
896
- " const buttonEl =\n",
897
- " document.querySelector('#df-d959edf2-79c3-4736-8a38-326b6c0d0f2d button.colab-df-convert');\n",
898
- " buttonEl.style.display =\n",
899
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
900
- "\n",
901
- " async function convertToInteractive(key) {\n",
902
- " const element = document.querySelector('#df-d959edf2-79c3-4736-8a38-326b6c0d0f2d');\n",
903
- " const dataTable =\n",
904
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
905
- " [key], {});\n",
906
- " if (!dataTable) return;\n",
907
- "\n",
908
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
909
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
910
- " + ' to learn more about interactive tables.';\n",
911
- " element.innerHTML = '';\n",
912
- " dataTable['output_type'] = 'display_data';\n",
913
- " await google.colab.output.renderOutput(dataTable, element);\n",
914
- " const docLink = document.createElement('div');\n",
915
- " docLink.innerHTML = docLinkHtml;\n",
916
- " element.appendChild(docLink);\n",
917
- " }\n",
918
- " </script>\n",
919
- " </div>\n",
920
- " </div>\n",
921
- " "
922
- ]
923
- },
924
- "metadata": {}
925
- },
926
- {
927
- "output_type": "execute_result",
928
- "data": {
929
- "text/plain": [
930
- "Index(['Unnamed: 0', 'artist_popularity', 'followers', 'genres', 'id', 'name',\n",
931
- " 'track_id', 'track_name_prev', 'type'],\n",
932
- " dtype='object')"
933
- ]
934
- },
935
- "metadata": {},
936
- "execution_count": 13
937
- }
938
- ]
939
- },
940
- {
941
- "cell_type": "code",
942
- "source": [
943
- "display(tracks_data.head())\n",
944
- "tracks_data.columns"
945
- ],
946
- "metadata": {
947
- "colab": {
948
- "base_uri": "https://localhost:8080/",
949
- "height": 594
950
- },
951
- "id": "OCjiZZnD6a0U",
952
- "outputId": "3108dda2-b5a0-476d-9c1f-c61f58e8a396"
953
- },
954
- "execution_count": 14,
955
- "outputs": [
956
- {
957
- "output_type": "display_data",
958
- "data": {
959
- "text/plain": [
960
- " Unnamed: 0 acousticness album_id \\\n",
961
- "0 0 0.294 0D3QufeCudpQANOR7luqdr \n",
962
- "1 1 0.863 1bcqsH5UyTBzmh9YizdsBE \n",
963
- "2 2 0.750 4tKijjmxGClg4JOLAyo2qE \n",
964
- "3 3 0.763 6FeJF5r8roonnKraJxr4oB \n",
965
- "4 4 0.770 4tKijjmxGClg4JOLAyo2qE \n",
966
- "\n",
967
- " analysis_url \\\n",
968
- "0 https://api.spotify.com/v1/audio-analysis/5qlj... \n",
969
- "1 https://api.spotify.com/v1/audio-analysis/3VAX... \n",
970
- "2 https://api.spotify.com/v1/audio-analysis/1L3Y... \n",
971
- "3 https://api.spotify.com/v1/audio-analysis/6aCe... \n",
972
- "4 https://api.spotify.com/v1/audio-analysis/1Vo8... \n",
973
- "\n",
974
- " artists_id \\\n",
975
- "0 ['3mxJuHRn2ZWD5OofvJtDZY'] \n",
976
- "1 ['4xWMewm6CYMstu0sPgd9jJ'] \n",
977
- "2 ['3hYaK5FF3YAglCj5HZgBnP'] \n",
978
- "3 ['2KQsUB9DRBcJk17JWX1eXD'] \n",
979
- "4 ['3hYaK5FF3YAglCj5HZgBnP'] \n",
980
- "\n",
981
- " available_markets country danceability \\\n",
982
- "0 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... BE 0.698 \n",
983
- "1 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... BE 0.719 \n",
984
- "2 ['GB'] BE 0.466 \n",
985
- "3 ['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH... BE 0.719 \n",
986
- "4 ['GB'] BE 0.460 \n",
987
- "\n",
988
- " disc_number duration_ms ... \\\n",
989
- "0 1.0 235584.0 ... \n",
990
- "1 1.0 656960.0 ... \n",
991
- "2 1.0 492840.0 ... \n",
992
- "3 1.0 316578.0 ... \n",
993
- "4 1.0 558880.0 ... \n",
994
- "\n",
995
- " preview_url speechiness tempo \\\n",
996
- "0 https://p.scdn.co/mp3-preview/1b05a902da3a251d... 0.0262 115.018 \n",
997
- "1 https://p.scdn.co/mp3-preview/d8140736a6131cb5... 0.9220 115.075 \n",
998
- "2 https://p.scdn.co/mp3-preview/c8af28fb15185b18... 0.9440 79.565 \n",
999
- "3 https://p.scdn.co/mp3-preview/7629b8e9f31f6e9b... 0.9380 112.822 \n",
1000
- "4 https://p.scdn.co/mp3-preview/32be593c0eb82868... 0.9430 81.260 \n",
1001
- "\n",
1002
- " time_signature track_href \\\n",
1003
- "0 4.0 https://api.spotify.com/v1/tracks/5qljLQuKnNJf... \n",
1004
- "1 3.0 https://api.spotify.com/v1/tracks/3VAX2MJdmdqA... \n",
1005
- "2 4.0 https://api.spotify.com/v1/tracks/1L3YAhsEMrGV... \n",
1006
- "3 3.0 https://api.spotify.com/v1/tracks/6aCe9zzoZmCo... \n",
1007
- "4 4.0 https://api.spotify.com/v1/tracks/1Vo802A38tPF... \n",
1008
- "\n",
1009
- " track_name_prev track_number uri \\\n",
1010
- "0 track_14 1.0 spotify:track:5qljLQuKnNJf4F4vfxQB0V \n",
1011
- "1 track_3 3.0 spotify:track:3VAX2MJdmdqARLSU5hPMpm \n",
1012
- "2 track_4 4.0 spotify:track:1L3YAhsEMrGVvCgDXj2TYn \n",
1013
- "3 track_9 1.0 spotify:track:6aCe9zzoZmCojX7bbgKKtf \n",
1014
- "4 track_2 2.0 spotify:track:1Vo802A38tPFHmje1h91um \n",
1015
- "\n",
1016
- " valence type \n",
1017
- "0 0.6220 track \n",
1018
- "1 0.5890 track \n",
1019
- "2 0.0850 track \n",
1020
- "3 0.5330 track \n",
1021
- "4 0.0906 track \n",
1022
- "\n",
1023
- "[5 rows x 32 columns]"
1024
- ],
1025
- "text/html": [
1026
- "\n",
1027
- " <div id=\"df-a317d767-9a8b-4a07-8bc0-8d0028475f92\">\n",
1028
- " <div class=\"colab-df-container\">\n",
1029
- " <div>\n",
1030
- "<style scoped>\n",
1031
- " .dataframe tbody tr th:only-of-type {\n",
1032
- " vertical-align: middle;\n",
1033
- " }\n",
1034
- "\n",
1035
- " .dataframe tbody tr th {\n",
1036
- " vertical-align: top;\n",
1037
- " }\n",
1038
- "\n",
1039
- " .dataframe thead th {\n",
1040
- " text-align: right;\n",
1041
- " }\n",
1042
- "</style>\n",
1043
- "<table border=\"1\" class=\"dataframe\">\n",
1044
- " <thead>\n",
1045
- " <tr style=\"text-align: right;\">\n",
1046
- " <th></th>\n",
1047
- " <th>Unnamed: 0</th>\n",
1048
- " <th>acousticness</th>\n",
1049
- " <th>album_id</th>\n",
1050
- " <th>analysis_url</th>\n",
1051
- " <th>artists_id</th>\n",
1052
- " <th>available_markets</th>\n",
1053
- " <th>country</th>\n",
1054
- " <th>danceability</th>\n",
1055
- " <th>disc_number</th>\n",
1056
- " <th>duration_ms</th>\n",
1057
- " <th>...</th>\n",
1058
- " <th>preview_url</th>\n",
1059
- " <th>speechiness</th>\n",
1060
- " <th>tempo</th>\n",
1061
- " <th>time_signature</th>\n",
1062
- " <th>track_href</th>\n",
1063
- " <th>track_name_prev</th>\n",
1064
- " <th>track_number</th>\n",
1065
- " <th>uri</th>\n",
1066
- " <th>valence</th>\n",
1067
- " <th>type</th>\n",
1068
- " </tr>\n",
1069
- " </thead>\n",
1070
- " <tbody>\n",
1071
- " <tr>\n",
1072
- " <th>0</th>\n",
1073
- " <td>0</td>\n",
1074
- " <td>0.294</td>\n",
1075
- " <td>0D3QufeCudpQANOR7luqdr</td>\n",
1076
- " <td>https://api.spotify.com/v1/audio-analysis/5qlj...</td>\n",
1077
- " <td>['3mxJuHRn2ZWD5OofvJtDZY']</td>\n",
1078
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
1079
- " <td>BE</td>\n",
1080
- " <td>0.698</td>\n",
1081
- " <td>1.0</td>\n",
1082
- " <td>235584.0</td>\n",
1083
- " <td>...</td>\n",
1084
- " <td>https://p.scdn.co/mp3-preview/1b05a902da3a251d...</td>\n",
1085
- " <td>0.0262</td>\n",
1086
- " <td>115.018</td>\n",
1087
- " <td>4.0</td>\n",
1088
- " <td>https://api.spotify.com/v1/tracks/5qljLQuKnNJf...</td>\n",
1089
- " <td>track_14</td>\n",
1090
- " <td>1.0</td>\n",
1091
- " <td>spotify:track:5qljLQuKnNJf4F4vfxQB0V</td>\n",
1092
- " <td>0.6220</td>\n",
1093
- " <td>track</td>\n",
1094
- " </tr>\n",
1095
- " <tr>\n",
1096
- " <th>1</th>\n",
1097
- " <td>1</td>\n",
1098
- " <td>0.863</td>\n",
1099
- " <td>1bcqsH5UyTBzmh9YizdsBE</td>\n",
1100
- " <td>https://api.spotify.com/v1/audio-analysis/3VAX...</td>\n",
1101
- " <td>['4xWMewm6CYMstu0sPgd9jJ']</td>\n",
1102
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
1103
- " <td>BE</td>\n",
1104
- " <td>0.719</td>\n",
1105
- " <td>1.0</td>\n",
1106
- " <td>656960.0</td>\n",
1107
- " <td>...</td>\n",
1108
- " <td>https://p.scdn.co/mp3-preview/d8140736a6131cb5...</td>\n",
1109
- " <td>0.9220</td>\n",
1110
- " <td>115.075</td>\n",
1111
- " <td>3.0</td>\n",
1112
- " <td>https://api.spotify.com/v1/tracks/3VAX2MJdmdqA...</td>\n",
1113
- " <td>track_3</td>\n",
1114
- " <td>3.0</td>\n",
1115
- " <td>spotify:track:3VAX2MJdmdqARLSU5hPMpm</td>\n",
1116
- " <td>0.5890</td>\n",
1117
- " <td>track</td>\n",
1118
- " </tr>\n",
1119
- " <tr>\n",
1120
- " <th>2</th>\n",
1121
- " <td>2</td>\n",
1122
- " <td>0.750</td>\n",
1123
- " <td>4tKijjmxGClg4JOLAyo2qE</td>\n",
1124
- " <td>https://api.spotify.com/v1/audio-analysis/1L3Y...</td>\n",
1125
- " <td>['3hYaK5FF3YAglCj5HZgBnP']</td>\n",
1126
- " <td>['GB']</td>\n",
1127
- " <td>BE</td>\n",
1128
- " <td>0.466</td>\n",
1129
- " <td>1.0</td>\n",
1130
- " <td>492840.0</td>\n",
1131
- " <td>...</td>\n",
1132
- " <td>https://p.scdn.co/mp3-preview/c8af28fb15185b18...</td>\n",
1133
- " <td>0.9440</td>\n",
1134
- " <td>79.565</td>\n",
1135
- " <td>4.0</td>\n",
1136
- " <td>https://api.spotify.com/v1/tracks/1L3YAhsEMrGV...</td>\n",
1137
- " <td>track_4</td>\n",
1138
- " <td>4.0</td>\n",
1139
- " <td>spotify:track:1L3YAhsEMrGVvCgDXj2TYn</td>\n",
1140
- " <td>0.0850</td>\n",
1141
- " <td>track</td>\n",
1142
- " </tr>\n",
1143
- " <tr>\n",
1144
- " <th>3</th>\n",
1145
- " <td>3</td>\n",
1146
- " <td>0.763</td>\n",
1147
- " <td>6FeJF5r8roonnKraJxr4oB</td>\n",
1148
- " <td>https://api.spotify.com/v1/audio-analysis/6aCe...</td>\n",
1149
- " <td>['2KQsUB9DRBcJk17JWX1eXD']</td>\n",
1150
- " <td>['AD', 'AE', 'AR', 'AT', 'AU', 'BE', 'BG', 'BH...</td>\n",
1151
- " <td>BE</td>\n",
1152
- " <td>0.719</td>\n",
1153
- " <td>1.0</td>\n",
1154
- " <td>316578.0</td>\n",
1155
- " <td>...</td>\n",
1156
- " <td>https://p.scdn.co/mp3-preview/7629b8e9f31f6e9b...</td>\n",
1157
- " <td>0.9380</td>\n",
1158
- " <td>112.822</td>\n",
1159
- " <td>3.0</td>\n",
1160
- " <td>https://api.spotify.com/v1/tracks/6aCe9zzoZmCo...</td>\n",
1161
- " <td>track_9</td>\n",
1162
- " <td>1.0</td>\n",
1163
- " <td>spotify:track:6aCe9zzoZmCojX7bbgKKtf</td>\n",
1164
- " <td>0.5330</td>\n",
1165
- " <td>track</td>\n",
1166
- " </tr>\n",
1167
- " <tr>\n",
1168
- " <th>4</th>\n",
1169
- " <td>4</td>\n",
1170
- " <td>0.770</td>\n",
1171
- " <td>4tKijjmxGClg4JOLAyo2qE</td>\n",
1172
- " <td>https://api.spotify.com/v1/audio-analysis/1Vo8...</td>\n",
1173
- " <td>['3hYaK5FF3YAglCj5HZgBnP']</td>\n",
1174
- " <td>['GB']</td>\n",
1175
- " <td>BE</td>\n",
1176
- " <td>0.460</td>\n",
1177
- " <td>1.0</td>\n",
1178
- " <td>558880.0</td>\n",
1179
- " <td>...</td>\n",
1180
- " <td>https://p.scdn.co/mp3-preview/32be593c0eb82868...</td>\n",
1181
- " <td>0.9430</td>\n",
1182
- " <td>81.260</td>\n",
1183
- " <td>4.0</td>\n",
1184
- " <td>https://api.spotify.com/v1/tracks/1Vo802A38tPF...</td>\n",
1185
- " <td>track_2</td>\n",
1186
- " <td>2.0</td>\n",
1187
- " <td>spotify:track:1Vo802A38tPFHmje1h91um</td>\n",
1188
- " <td>0.0906</td>\n",
1189
- " <td>track</td>\n",
1190
- " </tr>\n",
1191
- " </tbody>\n",
1192
- "</table>\n",
1193
- "<p>5 rows × 32 columns</p>\n",
1194
- "</div>\n",
1195
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a317d767-9a8b-4a07-8bc0-8d0028475f92')\"\n",
1196
- " title=\"Convert this dataframe to an interactive table.\"\n",
1197
- " style=\"display:none;\">\n",
1198
- " \n",
1199
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
1200
- " width=\"24px\">\n",
1201
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
1202
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
1203
- " </svg>\n",
1204
- " </button>\n",
1205
- " \n",
1206
- " <style>\n",
1207
- " .colab-df-container {\n",
1208
- " display:flex;\n",
1209
- " flex-wrap:wrap;\n",
1210
- " gap: 12px;\n",
1211
- " }\n",
1212
- "\n",
1213
- " .colab-df-convert {\n",
1214
- " background-color: #E8F0FE;\n",
1215
- " border: none;\n",
1216
- " border-radius: 50%;\n",
1217
- " cursor: pointer;\n",
1218
- " display: none;\n",
1219
- " fill: #1967D2;\n",
1220
- " height: 32px;\n",
1221
- " padding: 0 0 0 0;\n",
1222
- " width: 32px;\n",
1223
- " }\n",
1224
- "\n",
1225
- " .colab-df-convert:hover {\n",
1226
- " background-color: #E2EBFA;\n",
1227
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
1228
- " fill: #174EA6;\n",
1229
- " }\n",
1230
- "\n",
1231
- " [theme=dark] .colab-df-convert {\n",
1232
- " background-color: #3B4455;\n",
1233
- " fill: #D2E3FC;\n",
1234
- " }\n",
1235
- "\n",
1236
- " [theme=dark] .colab-df-convert:hover {\n",
1237
- " background-color: #434B5C;\n",
1238
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
1239
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
1240
- " fill: #FFFFFF;\n",
1241
- " }\n",
1242
- " </style>\n",
1243
- "\n",
1244
- " <script>\n",
1245
- " const buttonEl =\n",
1246
- " document.querySelector('#df-a317d767-9a8b-4a07-8bc0-8d0028475f92 button.colab-df-convert');\n",
1247
- " buttonEl.style.display =\n",
1248
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
1249
- "\n",
1250
- " async function convertToInteractive(key) {\n",
1251
- " const element = document.querySelector('#df-a317d767-9a8b-4a07-8bc0-8d0028475f92');\n",
1252
- " const dataTable =\n",
1253
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
1254
- " [key], {});\n",
1255
- " if (!dataTable) return;\n",
1256
- "\n",
1257
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
1258
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
1259
- " + ' to learn more about interactive tables.';\n",
1260
- " element.innerHTML = '';\n",
1261
- " dataTable['output_type'] = 'display_data';\n",
1262
- " await google.colab.output.renderOutput(dataTable, element);\n",
1263
- " const docLink = document.createElement('div');\n",
1264
- " docLink.innerHTML = docLinkHtml;\n",
1265
- " element.appendChild(docLink);\n",
1266
- " }\n",
1267
- " </script>\n",
1268
- " </div>\n",
1269
- " </div>\n",
1270
- " "
1271
- ]
1272
- },
1273
- "metadata": {}
1274
- },
1275
- {
1276
- "output_type": "execute_result",
1277
- "data": {
1278
- "text/plain": [
1279
- "Index(['Unnamed: 0', 'acousticness', 'album_id', 'analysis_url', 'artists_id',\n",
1280
- " 'available_markets', 'country', 'danceability', 'disc_number',\n",
1281
- " 'duration_ms', 'energy', 'href', 'id', 'instrumentalness', 'key',\n",
1282
- " 'liveness', 'loudness', 'lyrics', 'mode', 'name', 'playlist',\n",
1283
- " 'popularity', 'preview_url', 'speechiness', 'tempo', 'time_signature',\n",
1284
- " 'track_href', 'track_name_prev', 'track_number', 'uri', 'valence',\n",
1285
- " 'type'],\n",
1286
- " dtype='object')"
1287
- ]
1288
- },
1289
- "metadata": {},
1290
- "execution_count": 14
1291
- }
1292
- ]
1293
- },
1294
- {
1295
- "cell_type": "code",
1296
- "source": [
1297
- "## join artist genre information and album release date with track dataset\n",
1298
- "# drop irrelevant columns\n",
1299
- "# get only tracks after 1990\n",
1300
- "def join_genre_and_date(artist_df, album_df, track_df):\n",
1301
- " album = album_df.rename(columns={'id':\"album_id\"}).set_index('album_id')\n",
1302
- " artist = artist_df.rename(columns={'id':\"artists_id\",'name':\"artists_name\"}).set_index('artists_id')\n",
1303
- " track = track_df.set_index('album_id').join(album['release_date'], on='album_id' )\n",
1304
- " track.artists_id = track.artists_id.apply(lambda x: x[2:-2])\n",
1305
- " track = track.set_index('artists_id').join(artist[['artists_name','genres']], on='artists_id' )\n",
1306
- " track.reset_index(drop=False, inplace=True)\n",
1307
- " track['release_year'] = pd.to_datetime(track.release_date).dt.year\n",
1308
- " track.drop(columns = ['Unnamed: 0','country','track_name_prev','track_number','type'], inplace = True)\n",
1309
- " \n",
1310
- " return track[track.release_year >= 1990]"
1311
- ],
1312
- "metadata": {
1313
- "id": "LZZhGSn46c_y"
1314
- },
1315
- "execution_count": 15,
1316
- "outputs": []
1317
- },
1318
- {
1319
- "cell_type": "code",
1320
- "source": [
1321
- "def get_filtered_track_df(df, genres_to_include):\n",
1322
- " df['genres'] = df.genres.apply(lambda x: [i[1:-1] for i in str(x)[1:-1].split(\", \")])\n",
1323
- " df_exploded = df.explode(\"genres\")[df.explode(\"genres\")[\"genres\"].isin(genres_to_include)]\n",
1324
- " df_exploded.loc[df_exploded[\"genres\"]==\"korean pop\", \"genres\"] = \"k-pop\"\n",
1325
- " df_exploded_indices = list(df_exploded.index.unique())\n",
1326
- " df = df[df.index.isin(df_exploded_indices)]\n",
1327
- " df = df.reset_index(drop=True)\n",
1328
- " return df"
1329
- ],
1330
- "metadata": {
1331
- "id": "rP905-I66eB0"
1332
- },
1333
- "execution_count": 16,
1334
- "outputs": []
1335
- },
1336
- {
1337
- "cell_type": "code",
1338
- "source": [
1339
- "track_with_year_and_genre = join_genre_and_date(artists_data, albums_data, tracks_data)\n",
1340
- "genres_to_include = genres = ['dance pop', 'electronic', 'electropop', 'hip hop', 'jazz', 'k-pop', 'latin', 'pop', 'pop rap', 'r&b', 'rock']\n",
1341
- "filtered_track_df = get_filtered_track_df(track_with_year_and_genre, genres_to_include)"
1342
- ],
1343
- "metadata": {
1344
- "id": "7BmEttOn6iWy"
1345
- },
1346
- "execution_count": 18,
1347
- "outputs": []
1348
- },
1349
- {
1350
- "cell_type": "code",
1351
- "source": [
1352
- "filtered_track_df[\"uri\"] = filtered_track_df[\"uri\"].str.replace(\"spotify:track:\", \"\")\n",
1353
- "filtered_track_df = filtered_track_df.drop(columns=['analysis_url', 'available_markets'])"
1354
- ],
1355
- "metadata": {
1356
- "id": "ghqON6di6n3e"
1357
- },
1358
- "execution_count": 19,
1359
- "outputs": []
1360
- },
1361
- {
1362
- "cell_type": "code",
1363
- "source": [
1364
- "display(filtered_track_df.head())\n",
1365
- "filtered_track_df.columns"
1366
- ],
1367
- "metadata": {
1368
- "colab": {
1369
- "base_uri": "https://localhost:8080/",
1370
- "height": 751
1371
- },
1372
- "id": "a3Hwe1mB6qMU",
1373
- "outputId": "0ed05171-2d9d-4b56-f3e3-b04e14485c79"
1374
- },
1375
- "execution_count": 20,
1376
- "outputs": [
1377
- {
1378
- "output_type": "display_data",
1379
- "data": {
1380
- "text/plain": [
1381
- " artists_id acousticness danceability disc_number \\\n",
1382
- "0 68WwJXWrpo1yVOOIZjLSeT 0.0268 0.506 1.0 \n",
1383
- "1 09xj0S68Y1OU1vHMCZAIvz 0.5050 0.487 1.0 \n",
1384
- "2 6pSsE5y0uJMwYj83KrPyf9 0.1330 0.629 1.0 \n",
1385
- "3 7slfeZO9LsJbWgpkIoXBUJ 0.4060 0.590 1.0 \n",
1386
- "4 09hVIj6vWgoCDtT03h8ZCa 0.0316 0.727 1.0 \n",
1387
- "\n",
1388
- " duration_ms energy href \\\n",
1389
- "0 248777.0 0.741 https://api.spotify.com/v1/tracks/0UATU9OJxh4m... \n",
1390
- "1 171573.0 0.297 https://api.spotify.com/v1/tracks/4JH1M62gVDND... \n",
1391
- "2 207396.0 0.706 https://api.spotify.com/v1/tracks/0h7Ld5CvgzaU... \n",
1392
- "3 279000.0 0.597 https://api.spotify.com/v1/tracks/4S1bYWrLOC8s... \n",
1393
- "4 218773.0 0.380 https://api.spotify.com/v1/tracks/758mQT4zzlvB... \n",
1394
- "\n",
1395
- " id instrumentalness key ... speechiness tempo \\\n",
1396
- "0 0UATU9OJxh4m3fwDljdGZn 0.000027 1.0 ... 0.0349 94.042 \n",
1397
- "1 4JH1M62gVDNDhDAUiQB3Qv 0.000052 11.0 ... 0.0915 185.912 \n",
1398
- "2 0h7Ld5CvgzaUN1zA3tdyPq 0.000000 1.0 ... 0.4360 81.220 \n",
1399
- "3 4S1bYWrLOC8smuy8kJzxKQ 0.000023 9.0 ... 0.0275 121.051 \n",
1400
- "4 758mQT4zzlvBhy9PvNePwC 0.000000 7.0 ... 0.3350 92.050 \n",
1401
- "\n",
1402
- " time_signature track_href \\\n",
1403
- "0 4.0 https://api.spotify.com/v1/tracks/0UATU9OJxh4m... \n",
1404
- "1 3.0 https://api.spotify.com/v1/tracks/4JH1M62gVDND... \n",
1405
- "2 4.0 https://api.spotify.com/v1/tracks/0h7Ld5CvgzaU... \n",
1406
- "3 4.0 https://api.spotify.com/v1/tracks/4S1bYWrLOC8s... \n",
1407
- "4 4.0 https://api.spotify.com/v1/tracks/758mQT4zzlvB... \n",
1408
- "\n",
1409
- " uri valence release_date artists_name \\\n",
1410
- "0 0UATU9OJxh4m3fwDljdGZn 0.236 2018-09-28 Evalyn \n",
1411
- "1 4JH1M62gVDNDhDAUiQB3Qv 0.289 2001-08-21 Café Tacvba \n",
1412
- "2 0h7Ld5CvgzaUN1zA3tdyPq 0.543 2019-01-25 Dawn Richard \n",
1413
- "3 4S1bYWrLOC8smuy8kJzxKQ 0.466 1995-09-12 Ricky Martin \n",
1414
- "4 758mQT4zzlvBhy9PvNePwC 0.455 1991-09-24 A Tribe Called Quest \n",
1415
- "\n",
1416
- " genres release_year \n",
1417
- "0 [electropop, indie electro-pop, indie poptimis... 2018 \n",
1418
- "1 [latin, latin alternative, latin rock, mexican... 2001 \n",
1419
- "2 [alternative r&b, deep pop r&b, escape room, h... 2019 \n",
1420
- "3 [dance pop, latin, latin pop, mexican pop, pop... 1995 \n",
1421
- "4 [alternative hip hop, conscious hip hop, east ... 1991 \n",
1422
- "\n",
1423
- "[5 rows x 28 columns]"
1424
- ],
1425
- "text/html": [
1426
- "\n",
1427
- " <div id=\"df-2ac09e30-b225-407d-9e95-1016823bdae8\">\n",
1428
- " <div class=\"colab-df-container\">\n",
1429
- " <div>\n",
1430
- "<style scoped>\n",
1431
- " .dataframe tbody tr th:only-of-type {\n",
1432
- " vertical-align: middle;\n",
1433
- " }\n",
1434
- "\n",
1435
- " .dataframe tbody tr th {\n",
1436
- " vertical-align: top;\n",
1437
- " }\n",
1438
- "\n",
1439
- " .dataframe thead th {\n",
1440
- " text-align: right;\n",
1441
- " }\n",
1442
- "</style>\n",
1443
- "<table border=\"1\" class=\"dataframe\">\n",
1444
- " <thead>\n",
1445
- " <tr style=\"text-align: right;\">\n",
1446
- " <th></th>\n",
1447
- " <th>artists_id</th>\n",
1448
- " <th>acousticness</th>\n",
1449
- " <th>danceability</th>\n",
1450
- " <th>disc_number</th>\n",
1451
- " <th>duration_ms</th>\n",
1452
- " <th>energy</th>\n",
1453
- " <th>href</th>\n",
1454
- " <th>id</th>\n",
1455
- " <th>instrumentalness</th>\n",
1456
- " <th>key</th>\n",
1457
- " <th>...</th>\n",
1458
- " <th>speechiness</th>\n",
1459
- " <th>tempo</th>\n",
1460
- " <th>time_signature</th>\n",
1461
- " <th>track_href</th>\n",
1462
- " <th>uri</th>\n",
1463
- " <th>valence</th>\n",
1464
- " <th>release_date</th>\n",
1465
- " <th>artists_name</th>\n",
1466
- " <th>genres</th>\n",
1467
- " <th>release_year</th>\n",
1468
- " </tr>\n",
1469
- " </thead>\n",
1470
- " <tbody>\n",
1471
- " <tr>\n",
1472
- " <th>0</th>\n",
1473
- " <td>68WwJXWrpo1yVOOIZjLSeT</td>\n",
1474
- " <td>0.0268</td>\n",
1475
- " <td>0.506</td>\n",
1476
- " <td>1.0</td>\n",
1477
- " <td>248777.0</td>\n",
1478
- " <td>0.741</td>\n",
1479
- " <td>https://api.spotify.com/v1/tracks/0UATU9OJxh4m...</td>\n",
1480
- " <td>0UATU9OJxh4m3fwDljdGZn</td>\n",
1481
- " <td>0.000027</td>\n",
1482
- " <td>1.0</td>\n",
1483
- " <td>...</td>\n",
1484
- " <td>0.0349</td>\n",
1485
- " <td>94.042</td>\n",
1486
- " <td>4.0</td>\n",
1487
- " <td>https://api.spotify.com/v1/tracks/0UATU9OJxh4m...</td>\n",
1488
- " <td>0UATU9OJxh4m3fwDljdGZn</td>\n",
1489
- " <td>0.236</td>\n",
1490
- " <td>2018-09-28</td>\n",
1491
- " <td>Evalyn</td>\n",
1492
- " <td>[electropop, indie electro-pop, indie poptimis...</td>\n",
1493
- " <td>2018</td>\n",
1494
- " </tr>\n",
1495
- " <tr>\n",
1496
- " <th>1</th>\n",
1497
- " <td>09xj0S68Y1OU1vHMCZAIvz</td>\n",
1498
- " <td>0.5050</td>\n",
1499
- " <td>0.487</td>\n",
1500
- " <td>1.0</td>\n",
1501
- " <td>171573.0</td>\n",
1502
- " <td>0.297</td>\n",
1503
- " <td>https://api.spotify.com/v1/tracks/4JH1M62gVDND...</td>\n",
1504
- " <td>4JH1M62gVDNDhDAUiQB3Qv</td>\n",
1505
- " <td>0.000052</td>\n",
1506
- " <td>11.0</td>\n",
1507
- " <td>...</td>\n",
1508
- " <td>0.0915</td>\n",
1509
- " <td>185.912</td>\n",
1510
- " <td>3.0</td>\n",
1511
- " <td>https://api.spotify.com/v1/tracks/4JH1M62gVDND...</td>\n",
1512
- " <td>4JH1M62gVDNDhDAUiQB3Qv</td>\n",
1513
- " <td>0.289</td>\n",
1514
- " <td>2001-08-21</td>\n",
1515
- " <td>Café Tacvba</td>\n",
1516
- " <td>[latin, latin alternative, latin rock, mexican...</td>\n",
1517
- " <td>2001</td>\n",
1518
- " </tr>\n",
1519
- " <tr>\n",
1520
- " <th>2</th>\n",
1521
- " <td>6pSsE5y0uJMwYj83KrPyf9</td>\n",
1522
- " <td>0.1330</td>\n",
1523
- " <td>0.629</td>\n",
1524
- " <td>1.0</td>\n",
1525
- " <td>207396.0</td>\n",
1526
- " <td>0.706</td>\n",
1527
- " <td>https://api.spotify.com/v1/tracks/0h7Ld5CvgzaU...</td>\n",
1528
- " <td>0h7Ld5CvgzaUN1zA3tdyPq</td>\n",
1529
- " <td>0.000000</td>\n",
1530
- " <td>1.0</td>\n",
1531
- " <td>...</td>\n",
1532
- " <td>0.4360</td>\n",
1533
- " <td>81.220</td>\n",
1534
- " <td>4.0</td>\n",
1535
- " <td>https://api.spotify.com/v1/tracks/0h7Ld5CvgzaU...</td>\n",
1536
- " <td>0h7Ld5CvgzaUN1zA3tdyPq</td>\n",
1537
- " <td>0.543</td>\n",
1538
- " <td>2019-01-25</td>\n",
1539
- " <td>Dawn Richard</td>\n",
1540
- " <td>[alternative r&amp;b, deep pop r&amp;b, escape room, h...</td>\n",
1541
- " <td>2019</td>\n",
1542
- " </tr>\n",
1543
- " <tr>\n",
1544
- " <th>3</th>\n",
1545
- " <td>7slfeZO9LsJbWgpkIoXBUJ</td>\n",
1546
- " <td>0.4060</td>\n",
1547
- " <td>0.590</td>\n",
1548
- " <td>1.0</td>\n",
1549
- " <td>279000.0</td>\n",
1550
- " <td>0.597</td>\n",
1551
- " <td>https://api.spotify.com/v1/tracks/4S1bYWrLOC8s...</td>\n",
1552
- " <td>4S1bYWrLOC8smuy8kJzxKQ</td>\n",
1553
- " <td>0.000023</td>\n",
1554
- " <td>9.0</td>\n",
1555
- " <td>...</td>\n",
1556
- " <td>0.0275</td>\n",
1557
- " <td>121.051</td>\n",
1558
- " <td>4.0</td>\n",
1559
- " <td>https://api.spotify.com/v1/tracks/4S1bYWrLOC8s...</td>\n",
1560
- " <td>4S1bYWrLOC8smuy8kJzxKQ</td>\n",
1561
- " <td>0.466</td>\n",
1562
- " <td>1995-09-12</td>\n",
1563
- " <td>Ricky Martin</td>\n",
1564
- " <td>[dance pop, latin, latin pop, mexican pop, pop...</td>\n",
1565
- " <td>1995</td>\n",
1566
- " </tr>\n",
1567
- " <tr>\n",
1568
- " <th>4</th>\n",
1569
- " <td>09hVIj6vWgoCDtT03h8ZCa</td>\n",
1570
- " <td>0.0316</td>\n",
1571
- " <td>0.727</td>\n",
1572
- " <td>1.0</td>\n",
1573
- " <td>218773.0</td>\n",
1574
- " <td>0.380</td>\n",
1575
- " <td>https://api.spotify.com/v1/tracks/758mQT4zzlvB...</td>\n",
1576
- " <td>758mQT4zzlvBhy9PvNePwC</td>\n",
1577
- " <td>0.000000</td>\n",
1578
- " <td>7.0</td>\n",
1579
- " <td>...</td>\n",
1580
- " <td>0.3350</td>\n",
1581
- " <td>92.050</td>\n",
1582
- " <td>4.0</td>\n",
1583
- " <td>https://api.spotify.com/v1/tracks/758mQT4zzlvB...</td>\n",
1584
- " <td>758mQT4zzlvBhy9PvNePwC</td>\n",
1585
- " <td>0.455</td>\n",
1586
- " <td>1991-09-24</td>\n",
1587
- " <td>A Tribe Called Quest</td>\n",
1588
- " <td>[alternative hip hop, conscious hip hop, east ...</td>\n",
1589
- " <td>1991</td>\n",
1590
- " </tr>\n",
1591
- " </tbody>\n",
1592
- "</table>\n",
1593
- "<p>5 rows × 28 columns</p>\n",
1594
- "</div>\n",
1595
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2ac09e30-b225-407d-9e95-1016823bdae8')\"\n",
1596
- " title=\"Convert this dataframe to an interactive table.\"\n",
1597
- " style=\"display:none;\">\n",
1598
- " \n",
1599
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
1600
- " width=\"24px\">\n",
1601
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
1602
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
1603
- " </svg>\n",
1604
- " </button>\n",
1605
- " \n",
1606
- " <style>\n",
1607
- " .colab-df-container {\n",
1608
- " display:flex;\n",
1609
- " flex-wrap:wrap;\n",
1610
- " gap: 12px;\n",
1611
- " }\n",
1612
- "\n",
1613
- " .colab-df-convert {\n",
1614
- " background-color: #E8F0FE;\n",
1615
- " border: none;\n",
1616
- " border-radius: 50%;\n",
1617
- " cursor: pointer;\n",
1618
- " display: none;\n",
1619
- " fill: #1967D2;\n",
1620
- " height: 32px;\n",
1621
- " padding: 0 0 0 0;\n",
1622
- " width: 32px;\n",
1623
- " }\n",
1624
- "\n",
1625
- " .colab-df-convert:hover {\n",
1626
- " background-color: #E2EBFA;\n",
1627
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
1628
- " fill: #174EA6;\n",
1629
- " }\n",
1630
- "\n",
1631
- " [theme=dark] .colab-df-convert {\n",
1632
- " background-color: #3B4455;\n",
1633
- " fill: #D2E3FC;\n",
1634
- " }\n",
1635
- "\n",
1636
- " [theme=dark] .colab-df-convert:hover {\n",
1637
- " background-color: #434B5C;\n",
1638
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
1639
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
1640
- " fill: #FFFFFF;\n",
1641
- " }\n",
1642
- " </style>\n",
1643
- "\n",
1644
- " <script>\n",
1645
- " const buttonEl =\n",
1646
- " document.querySelector('#df-2ac09e30-b225-407d-9e95-1016823bdae8 button.colab-df-convert');\n",
1647
- " buttonEl.style.display =\n",
1648
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
1649
- "\n",
1650
- " async function convertToInteractive(key) {\n",
1651
- " const element = document.querySelector('#df-2ac09e30-b225-407d-9e95-1016823bdae8');\n",
1652
- " const dataTable =\n",
1653
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
1654
- " [key], {});\n",
1655
- " if (!dataTable) return;\n",
1656
- "\n",
1657
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
1658
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
1659
- " + ' to learn more about interactive tables.';\n",
1660
- " element.innerHTML = '';\n",
1661
- " dataTable['output_type'] = 'display_data';\n",
1662
- " await google.colab.output.renderOutput(dataTable, element);\n",
1663
- " const docLink = document.createElement('div');\n",
1664
- " docLink.innerHTML = docLinkHtml;\n",
1665
- " element.appendChild(docLink);\n",
1666
- " }\n",
1667
- " </script>\n",
1668
- " </div>\n",
1669
- " </div>\n",
1670
- " "
1671
- ]
1672
- },
1673
- "metadata": {}
1674
- },
1675
- {
1676
- "output_type": "execute_result",
1677
- "data": {
1678
- "text/plain": [
1679
- "Index(['artists_id', 'acousticness', 'danceability', 'disc_number',\n",
1680
- " 'duration_ms', 'energy', 'href', 'id', 'instrumentalness', 'key',\n",
1681
- " 'liveness', 'loudness', 'lyrics', 'mode', 'name', 'playlist',\n",
1682
- " 'popularity', 'preview_url', 'speechiness', 'tempo', 'time_signature',\n",
1683
- " 'track_href', 'uri', 'valence', 'release_date', 'artists_name',\n",
1684
- " 'genres', 'release_year'],\n",
1685
- " dtype='object')"
1686
- ]
1687
- },
1688
- "metadata": {},
1689
- "execution_count": 20
1690
- }
1691
- ]
1692
- },
1693
- {
1694
- "cell_type": "code",
1695
- "source": [
1696
- "filtered_track_df.to_csv(\"filtered_track_df.csv\", index=False)"
1697
- ],
1698
- "metadata": {
1699
- "id": "O9jsAS2D6rqY"
1700
- },
1701
- "execution_count": 21,
1702
- "outputs": []
1703
- },
1704
- {
1705
- "cell_type": "code",
1706
- "source": [
1707
- "tracks_data.describe()"
1708
- ],
1709
- "metadata": {
1710
- "colab": {
1711
- "base_uri": "https://localhost:8080/",
1712
- "height": 364
1713
- },
1714
- "id": "T7MIXjFh6urm",
1715
- "outputId": "9ae43e81-94a4-4cfc-8be2-3c2e30ea0c62"
1716
- },
1717
- "execution_count": 22,
1718
- "outputs": [
1719
- {
1720
- "output_type": "execute_result",
1721
- "data": {
1722
- "text/plain": [
1723
- " Unnamed: 0 acousticness danceability disc_number \\\n",
1724
- "count 101939.000000 101939.000000 101939.000000 101939.000000 \n",
1725
- "mean 50969.000000 0.352124 0.586015 1.032166 \n",
1726
- "std 29427.398883 0.334855 0.177724 0.566789 \n",
1727
- "min 0.000000 0.000000 0.000000 1.000000 \n",
1728
- "25% 25484.500000 0.040700 0.480000 1.000000 \n",
1729
- "50% 50969.000000 0.238000 0.610000 1.000000 \n",
1730
- "75% 76453.500000 0.645000 0.714000 1.000000 \n",
1731
- "max 101938.000000 0.996000 0.989000 81.000000 \n",
1732
- "\n",
1733
- " duration_ms energy instrumentalness key \\\n",
1734
- "count 1.019390e+05 101939.000000 101939.000000 101939.000000 \n",
1735
- "mean 2.467708e+05 0.586479 0.148776 5.270858 \n",
1736
- "std 1.904303e+05 0.260170 0.304024 3.577679 \n",
1737
- "min 1.155000e+03 0.000000 0.000000 0.000000 \n",
1738
- "25% 1.840000e+05 0.411000 0.000000 2.000000 \n",
1739
- "50% 2.168930e+05 0.629000 0.000037 5.000000 \n",
1740
- "75% 2.610550e+05 0.798000 0.034400 8.000000 \n",
1741
- "max 5.505831e+06 1.000000 1.000000 11.000000 \n",
1742
- "\n",
1743
- " liveness loudness mode popularity \\\n",
1744
- "count 101939.000000 101939.000000 101939.000000 101939.000000 \n",
1745
- "mean 0.197640 -9.462720 0.618154 39.782311 \n",
1746
- "std 0.175391 6.198508 0.485841 16.790769 \n",
1747
- "min 0.000000 -60.000000 0.000000 0.000000 \n",
1748
- "25% 0.095600 -11.149000 0.000000 29.000000 \n",
1749
- "50% 0.124000 -7.599000 1.000000 41.000000 \n",
1750
- "75% 0.241000 -5.509000 1.000000 52.000000 \n",
1751
- "max 0.999000 2.719000 1.000000 97.000000 \n",
1752
- "\n",
1753
- " speechiness tempo time_signature track_number \\\n",
1754
- "count 101939.000000 101939.000000 101939.000000 101939.000000 \n",
1755
- "mean 0.128841 118.358527 3.875651 4.608060 \n",
1756
- "std 0.203324 30.224074 0.517008 7.181805 \n",
1757
- "min 0.000000 0.000000 0.000000 1.000000 \n",
1758
- "25% 0.036400 95.973000 4.000000 1.000000 \n",
1759
- "50% 0.050600 118.067000 4.000000 2.000000 \n",
1760
- "75% 0.104000 136.045000 4.000000 6.000000 \n",
1761
- "max 0.969000 244.035000 5.000000 655.000000 \n",
1762
- "\n",
1763
- " valence \n",
1764
- "count 101939.000000 \n",
1765
- "mean 0.482813 \n",
1766
- "std 0.261690 \n",
1767
- "min 0.000000 \n",
1768
- "25% 0.271000 \n",
1769
- "50% 0.477000 \n",
1770
- "75% 0.693000 \n",
1771
- "max 0.993000 "
1772
- ],
1773
- "text/html": [
1774
- "\n",
1775
- " <div id=\"df-a3275db4-0443-4f89-89b9-8ec83d22feda\">\n",
1776
- " <div class=\"colab-df-container\">\n",
1777
- " <div>\n",
1778
- "<style scoped>\n",
1779
- " .dataframe tbody tr th:only-of-type {\n",
1780
- " vertical-align: middle;\n",
1781
- " }\n",
1782
- "\n",
1783
- " .dataframe tbody tr th {\n",
1784
- " vertical-align: top;\n",
1785
- " }\n",
1786
- "\n",
1787
- " .dataframe thead th {\n",
1788
- " text-align: right;\n",
1789
- " }\n",
1790
- "</style>\n",
1791
- "<table border=\"1\" class=\"dataframe\">\n",
1792
- " <thead>\n",
1793
- " <tr style=\"text-align: right;\">\n",
1794
- " <th></th>\n",
1795
- " <th>Unnamed: 0</th>\n",
1796
- " <th>acousticness</th>\n",
1797
- " <th>danceability</th>\n",
1798
- " <th>disc_number</th>\n",
1799
- " <th>duration_ms</th>\n",
1800
- " <th>energy</th>\n",
1801
- " <th>instrumentalness</th>\n",
1802
- " <th>key</th>\n",
1803
- " <th>liveness</th>\n",
1804
- " <th>loudness</th>\n",
1805
- " <th>mode</th>\n",
1806
- " <th>popularity</th>\n",
1807
- " <th>speechiness</th>\n",
1808
- " <th>tempo</th>\n",
1809
- " <th>time_signature</th>\n",
1810
- " <th>track_number</th>\n",
1811
- " <th>valence</th>\n",
1812
- " </tr>\n",
1813
- " </thead>\n",
1814
- " <tbody>\n",
1815
- " <tr>\n",
1816
- " <th>count</th>\n",
1817
- " <td>101939.000000</td>\n",
1818
- " <td>101939.000000</td>\n",
1819
- " <td>101939.000000</td>\n",
1820
- " <td>101939.000000</td>\n",
1821
- " <td>1.019390e+05</td>\n",
1822
- " <td>101939.000000</td>\n",
1823
- " <td>101939.000000</td>\n",
1824
- " <td>101939.000000</td>\n",
1825
- " <td>101939.000000</td>\n",
1826
- " <td>101939.000000</td>\n",
1827
- " <td>101939.000000</td>\n",
1828
- " <td>101939.000000</td>\n",
1829
- " <td>101939.000000</td>\n",
1830
- " <td>101939.000000</td>\n",
1831
- " <td>101939.000000</td>\n",
1832
- " <td>101939.000000</td>\n",
1833
- " <td>101939.000000</td>\n",
1834
- " </tr>\n",
1835
- " <tr>\n",
1836
- " <th>mean</th>\n",
1837
- " <td>50969.000000</td>\n",
1838
- " <td>0.352124</td>\n",
1839
- " <td>0.586015</td>\n",
1840
- " <td>1.032166</td>\n",
1841
- " <td>2.467708e+05</td>\n",
1842
- " <td>0.586479</td>\n",
1843
- " <td>0.148776</td>\n",
1844
- " <td>5.270858</td>\n",
1845
- " <td>0.197640</td>\n",
1846
- " <td>-9.462720</td>\n",
1847
- " <td>0.618154</td>\n",
1848
- " <td>39.782311</td>\n",
1849
- " <td>0.128841</td>\n",
1850
- " <td>118.358527</td>\n",
1851
- " <td>3.875651</td>\n",
1852
- " <td>4.608060</td>\n",
1853
- " <td>0.482813</td>\n",
1854
- " </tr>\n",
1855
- " <tr>\n",
1856
- " <th>std</th>\n",
1857
- " <td>29427.398883</td>\n",
1858
- " <td>0.334855</td>\n",
1859
- " <td>0.177724</td>\n",
1860
- " <td>0.566789</td>\n",
1861
- " <td>1.904303e+05</td>\n",
1862
- " <td>0.260170</td>\n",
1863
- " <td>0.304024</td>\n",
1864
- " <td>3.577679</td>\n",
1865
- " <td>0.175391</td>\n",
1866
- " <td>6.198508</td>\n",
1867
- " <td>0.485841</td>\n",
1868
- " <td>16.790769</td>\n",
1869
- " <td>0.203324</td>\n",
1870
- " <td>30.224074</td>\n",
1871
- " <td>0.517008</td>\n",
1872
- " <td>7.181805</td>\n",
1873
- " <td>0.261690</td>\n",
1874
- " </tr>\n",
1875
- " <tr>\n",
1876
- " <th>min</th>\n",
1877
- " <td>0.000000</td>\n",
1878
- " <td>0.000000</td>\n",
1879
- " <td>0.000000</td>\n",
1880
- " <td>1.000000</td>\n",
1881
- " <td>1.155000e+03</td>\n",
1882
- " <td>0.000000</td>\n",
1883
- " <td>0.000000</td>\n",
1884
- " <td>0.000000</td>\n",
1885
- " <td>0.000000</td>\n",
1886
- " <td>-60.000000</td>\n",
1887
- " <td>0.000000</td>\n",
1888
- " <td>0.000000</td>\n",
1889
- " <td>0.000000</td>\n",
1890
- " <td>0.000000</td>\n",
1891
- " <td>0.000000</td>\n",
1892
- " <td>1.000000</td>\n",
1893
- " <td>0.000000</td>\n",
1894
- " </tr>\n",
1895
- " <tr>\n",
1896
- " <th>25%</th>\n",
1897
- " <td>25484.500000</td>\n",
1898
- " <td>0.040700</td>\n",
1899
- " <td>0.480000</td>\n",
1900
- " <td>1.000000</td>\n",
1901
- " <td>1.840000e+05</td>\n",
1902
- " <td>0.411000</td>\n",
1903
- " <td>0.000000</td>\n",
1904
- " <td>2.000000</td>\n",
1905
- " <td>0.095600</td>\n",
1906
- " <td>-11.149000</td>\n",
1907
- " <td>0.000000</td>\n",
1908
- " <td>29.000000</td>\n",
1909
- " <td>0.036400</td>\n",
1910
- " <td>95.973000</td>\n",
1911
- " <td>4.000000</td>\n",
1912
- " <td>1.000000</td>\n",
1913
- " <td>0.271000</td>\n",
1914
- " </tr>\n",
1915
- " <tr>\n",
1916
- " <th>50%</th>\n",
1917
- " <td>50969.000000</td>\n",
1918
- " <td>0.238000</td>\n",
1919
- " <td>0.610000</td>\n",
1920
- " <td>1.000000</td>\n",
1921
- " <td>2.168930e+05</td>\n",
1922
- " <td>0.629000</td>\n",
1923
- " <td>0.000037</td>\n",
1924
- " <td>5.000000</td>\n",
1925
- " <td>0.124000</td>\n",
1926
- " <td>-7.599000</td>\n",
1927
- " <td>1.000000</td>\n",
1928
- " <td>41.000000</td>\n",
1929
- " <td>0.050600</td>\n",
1930
- " <td>118.067000</td>\n",
1931
- " <td>4.000000</td>\n",
1932
- " <td>2.000000</td>\n",
1933
- " <td>0.477000</td>\n",
1934
- " </tr>\n",
1935
- " <tr>\n",
1936
- " <th>75%</th>\n",
1937
- " <td>76453.500000</td>\n",
1938
- " <td>0.645000</td>\n",
1939
- " <td>0.714000</td>\n",
1940
- " <td>1.000000</td>\n",
1941
- " <td>2.610550e+05</td>\n",
1942
- " <td>0.798000</td>\n",
1943
- " <td>0.034400</td>\n",
1944
- " <td>8.000000</td>\n",
1945
- " <td>0.241000</td>\n",
1946
- " <td>-5.509000</td>\n",
1947
- " <td>1.000000</td>\n",
1948
- " <td>52.000000</td>\n",
1949
- " <td>0.104000</td>\n",
1950
- " <td>136.045000</td>\n",
1951
- " <td>4.000000</td>\n",
1952
- " <td>6.000000</td>\n",
1953
- " <td>0.693000</td>\n",
1954
- " </tr>\n",
1955
- " <tr>\n",
1956
- " <th>max</th>\n",
1957
- " <td>101938.000000</td>\n",
1958
- " <td>0.996000</td>\n",
1959
- " <td>0.989000</td>\n",
1960
- " <td>81.000000</td>\n",
1961
- " <td>5.505831e+06</td>\n",
1962
- " <td>1.000000</td>\n",
1963
- " <td>1.000000</td>\n",
1964
- " <td>11.000000</td>\n",
1965
- " <td>0.999000</td>\n",
1966
- " <td>2.719000</td>\n",
1967
- " <td>1.000000</td>\n",
1968
- " <td>97.000000</td>\n",
1969
- " <td>0.969000</td>\n",
1970
- " <td>244.035000</td>\n",
1971
- " <td>5.000000</td>\n",
1972
- " <td>655.000000</td>\n",
1973
- " <td>0.993000</td>\n",
1974
- " </tr>\n",
1975
- " </tbody>\n",
1976
- "</table>\n",
1977
- "</div>\n",
1978
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a3275db4-0443-4f89-89b9-8ec83d22feda')\"\n",
1979
- " title=\"Convert this dataframe to an interactive table.\"\n",
1980
- " style=\"display:none;\">\n",
1981
- " \n",
1982
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
1983
- " width=\"24px\">\n",
1984
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
1985
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
1986
- " </svg>\n",
1987
- " </button>\n",
1988
- " \n",
1989
- " <style>\n",
1990
- " .colab-df-container {\n",
1991
- " display:flex;\n",
1992
- " flex-wrap:wrap;\n",
1993
- " gap: 12px;\n",
1994
- " }\n",
1995
- "\n",
1996
- " .colab-df-convert {\n",
1997
- " background-color: #E8F0FE;\n",
1998
- " border: none;\n",
1999
- " border-radius: 50%;\n",
2000
- " cursor: pointer;\n",
2001
- " display: none;\n",
2002
- " fill: #1967D2;\n",
2003
- " height: 32px;\n",
2004
- " padding: 0 0 0 0;\n",
2005
- " width: 32px;\n",
2006
- " }\n",
2007
- "\n",
2008
- " .colab-df-convert:hover {\n",
2009
- " background-color: #E2EBFA;\n",
2010
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
2011
- " fill: #174EA6;\n",
2012
- " }\n",
2013
- "\n",
2014
- " [theme=dark] .colab-df-convert {\n",
2015
- " background-color: #3B4455;\n",
2016
- " fill: #D2E3FC;\n",
2017
- " }\n",
2018
- "\n",
2019
- " [theme=dark] .colab-df-convert:hover {\n",
2020
- " background-color: #434B5C;\n",
2021
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
2022
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
2023
- " fill: #FFFFFF;\n",
2024
- " }\n",
2025
- " </style>\n",
2026
- "\n",
2027
- " <script>\n",
2028
- " const buttonEl =\n",
2029
- " document.querySelector('#df-a3275db4-0443-4f89-89b9-8ec83d22feda button.colab-df-convert');\n",
2030
- " buttonEl.style.display =\n",
2031
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
2032
- "\n",
2033
- " async function convertToInteractive(key) {\n",
2034
- " const element = document.querySelector('#df-a3275db4-0443-4f89-89b9-8ec83d22feda');\n",
2035
- " const dataTable =\n",
2036
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
2037
- " [key], {});\n",
2038
- " if (!dataTable) return;\n",
2039
- "\n",
2040
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
2041
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
2042
- " + ' to learn more about interactive tables.';\n",
2043
- " element.innerHTML = '';\n",
2044
- " dataTable['output_type'] = 'display_data';\n",
2045
- " await google.colab.output.renderOutput(dataTable, element);\n",
2046
- " const docLink = document.createElement('div');\n",
2047
- " docLink.innerHTML = docLinkHtml;\n",
2048
- " element.appendChild(docLink);\n",
2049
- " }\n",
2050
- " </script>\n",
2051
- " </div>\n",
2052
- " </div>\n",
2053
- " "
2054
- ]
2055
- },
2056
- "metadata": {},
2057
- "execution_count": 22
2058
- }
2059
- ]
2060
- }
2061
- ]
2062
- }