{
"cells": [
{
"cell_type": "markdown",
"id": "1de28f74",
"metadata": {},
"source": [
"# Data Cleaning"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "bc4c415f",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "6455bf8f",
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('dataset.csv')\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "1c2440e4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['Unnamed: 0', 'track_id', 'artists', 'album_name', 'track_name',\n",
" 'popularity', 'duration_ms', 'explicit', 'danceability', 'energy',\n",
" 'key', 'loudness', 'mode', 'speechiness', 'acousticness',\n",
" 'instrumentalness', 'liveness', 'valence', 'tempo', 'time_signature',\n",
" 'track_genre'],\n",
" dtype='object')\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Unnamed: 0 | \n",
" track_id | \n",
" artists | \n",
" album_name | \n",
" track_name | \n",
" popularity | \n",
" duration_ms | \n",
" explicit | \n",
" danceability | \n",
" energy | \n",
" ... | \n",
" loudness | \n",
" mode | \n",
" speechiness | \n",
" acousticness | \n",
" instrumentalness | \n",
" liveness | \n",
" valence | \n",
" tempo | \n",
" time_signature | \n",
" track_genre | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 5SuOikwiRyPMVoIQDJUgSV | \n",
" Gen Hoshino | \n",
" Comedy | \n",
" Comedy | \n",
" 73 | \n",
" 230666 | \n",
" False | \n",
" 0.676 | \n",
" 0.4610 | \n",
" ... | \n",
" -6.746 | \n",
" 0 | \n",
" 0.1430 | \n",
" 0.0322 | \n",
" 0.000001 | \n",
" 0.3580 | \n",
" 0.715 | \n",
" 87.917 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 4qPNDBW1i3p13qLCt0Ki3A | \n",
" Ben Woodward | \n",
" Ghost (Acoustic) | \n",
" Ghost - Acoustic | \n",
" 55 | \n",
" 149610 | \n",
" False | \n",
" 0.420 | \n",
" 0.1660 | \n",
" ... | \n",
" -17.235 | \n",
" 1 | \n",
" 0.0763 | \n",
" 0.9240 | \n",
" 0.000006 | \n",
" 0.1010 | \n",
" 0.267 | \n",
" 77.489 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 2 | \n",
" 2 | \n",
" 1iJBSr7s7jYXzM8EGcbK5b | \n",
" Ingrid Michaelson;ZAYN | \n",
" To Begin Again | \n",
" To Begin Again | \n",
" 57 | \n",
" 210826 | \n",
" False | \n",
" 0.438 | \n",
" 0.3590 | \n",
" ... | \n",
" -9.734 | \n",
" 1 | \n",
" 0.0557 | \n",
" 0.2100 | \n",
" 0.000000 | \n",
" 0.1170 | \n",
" 0.120 | \n",
" 76.332 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 3 | \n",
" 3 | \n",
" 6lfxq3CG4xtTiEg7opyCyx | \n",
" Kina Grannis | \n",
" Crazy Rich Asians (Original Motion Picture Sou... | \n",
" Can't Help Falling In Love | \n",
" 71 | \n",
" 201933 | \n",
" False | \n",
" 0.266 | \n",
" 0.0596 | \n",
" ... | \n",
" -18.515 | \n",
" 1 | \n",
" 0.0363 | \n",
" 0.9050 | \n",
" 0.000071 | \n",
" 0.1320 | \n",
" 0.143 | \n",
" 181.740 | \n",
" 3 | \n",
" acoustic | \n",
"
\n",
" \n",
" 4 | \n",
" 4 | \n",
" 5vjLSffimiIP26QG5WcN2K | \n",
" Chord Overstreet | \n",
" Hold On | \n",
" Hold On | \n",
" 82 | \n",
" 198853 | \n",
" False | \n",
" 0.618 | \n",
" 0.4430 | \n",
" ... | \n",
" -9.681 | \n",
" 1 | \n",
" 0.0526 | \n",
" 0.4690 | \n",
" 0.000000 | \n",
" 0.0829 | \n",
" 0.167 | \n",
" 119.949 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 21 columns
\n",
"
"
],
"text/plain": [
" Unnamed: 0 track_id artists \\\n",
"0 0 5SuOikwiRyPMVoIQDJUgSV Gen Hoshino \n",
"1 1 4qPNDBW1i3p13qLCt0Ki3A Ben Woodward \n",
"2 2 1iJBSr7s7jYXzM8EGcbK5b Ingrid Michaelson;ZAYN \n",
"3 3 6lfxq3CG4xtTiEg7opyCyx Kina Grannis \n",
"4 4 5vjLSffimiIP26QG5WcN2K Chord Overstreet \n",
"\n",
" album_name \\\n",
"0 Comedy \n",
"1 Ghost (Acoustic) \n",
"2 To Begin Again \n",
"3 Crazy Rich Asians (Original Motion Picture Sou... \n",
"4 Hold On \n",
"\n",
" track_name popularity duration_ms explicit \\\n",
"0 Comedy 73 230666 False \n",
"1 Ghost - Acoustic 55 149610 False \n",
"2 To Begin Again 57 210826 False \n",
"3 Can't Help Falling In Love 71 201933 False \n",
"4 Hold On 82 198853 False \n",
"\n",
" danceability energy ... loudness mode speechiness acousticness \\\n",
"0 0.676 0.4610 ... -6.746 0 0.1430 0.0322 \n",
"1 0.420 0.1660 ... -17.235 1 0.0763 0.9240 \n",
"2 0.438 0.3590 ... -9.734 1 0.0557 0.2100 \n",
"3 0.266 0.0596 ... -18.515 1 0.0363 0.9050 \n",
"4 0.618 0.4430 ... -9.681 1 0.0526 0.4690 \n",
"\n",
" instrumentalness liveness valence tempo time_signature track_genre \n",
"0 0.000001 0.3580 0.715 87.917 4 acoustic \n",
"1 0.000006 0.1010 0.267 77.489 4 acoustic \n",
"2 0.000000 0.1170 0.120 76.332 4 acoustic \n",
"3 0.000071 0.1320 0.143 181.740 3 acoustic \n",
"4 0.000000 0.0829 0.167 119.949 4 acoustic \n",
"\n",
"[5 rows x 21 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(df.columns)\n",
"df.head()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "f1a88b42",
"metadata": {},
"source": [
"### Remove unique columns"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "ece13796",
"metadata": {},
"outputs": [],
"source": [
"df = df.drop(['Unnamed: 0','track_id', 'album_name'],axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "060fbd33",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" artists | \n",
" track_name | \n",
" popularity | \n",
" duration_ms | \n",
" explicit | \n",
" danceability | \n",
" energy | \n",
" key | \n",
" loudness | \n",
" mode | \n",
" speechiness | \n",
" acousticness | \n",
" instrumentalness | \n",
" liveness | \n",
" valence | \n",
" tempo | \n",
" time_signature | \n",
" track_genre | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Gen Hoshino | \n",
" Comedy | \n",
" 73 | \n",
" 230666 | \n",
" False | \n",
" 0.676 | \n",
" 0.4610 | \n",
" 1 | \n",
" -6.746 | \n",
" 0 | \n",
" 0.1430 | \n",
" 0.0322 | \n",
" 0.000001 | \n",
" 0.3580 | \n",
" 0.7150 | \n",
" 87.917 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 1 | \n",
" Ben Woodward | \n",
" Ghost - Acoustic | \n",
" 55 | \n",
" 149610 | \n",
" False | \n",
" 0.420 | \n",
" 0.1660 | \n",
" 1 | \n",
" -17.235 | \n",
" 1 | \n",
" 0.0763 | \n",
" 0.9240 | \n",
" 0.000006 | \n",
" 0.1010 | \n",
" 0.2670 | \n",
" 77.489 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 2 | \n",
" Ingrid Michaelson;ZAYN | \n",
" To Begin Again | \n",
" 57 | \n",
" 210826 | \n",
" False | \n",
" 0.438 | \n",
" 0.3590 | \n",
" 0 | \n",
" -9.734 | \n",
" 1 | \n",
" 0.0557 | \n",
" 0.2100 | \n",
" 0.000000 | \n",
" 0.1170 | \n",
" 0.1200 | \n",
" 76.332 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 3 | \n",
" Kina Grannis | \n",
" Can't Help Falling In Love | \n",
" 71 | \n",
" 201933 | \n",
" False | \n",
" 0.266 | \n",
" 0.0596 | \n",
" 0 | \n",
" -18.515 | \n",
" 1 | \n",
" 0.0363 | \n",
" 0.9050 | \n",
" 0.000071 | \n",
" 0.1320 | \n",
" 0.1430 | \n",
" 181.740 | \n",
" 3 | \n",
" acoustic | \n",
"
\n",
" \n",
" 4 | \n",
" Chord Overstreet | \n",
" Hold On | \n",
" 82 | \n",
" 198853 | \n",
" False | \n",
" 0.618 | \n",
" 0.4430 | \n",
" 2 | \n",
" -9.681 | \n",
" 1 | \n",
" 0.0526 | \n",
" 0.4690 | \n",
" 0.000000 | \n",
" 0.0829 | \n",
" 0.1670 | \n",
" 119.949 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 5 | \n",
" Tyrone Wells | \n",
" Days I Will Remember | \n",
" 58 | \n",
" 214240 | \n",
" False | \n",
" 0.688 | \n",
" 0.4810 | \n",
" 6 | \n",
" -8.807 | \n",
" 1 | \n",
" 0.1050 | \n",
" 0.2890 | \n",
" 0.000000 | \n",
" 0.1890 | \n",
" 0.6660 | \n",
" 98.017 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 6 | \n",
" A Great Big World;Christina Aguilera | \n",
" Say Something | \n",
" 74 | \n",
" 229400 | \n",
" False | \n",
" 0.407 | \n",
" 0.1470 | \n",
" 2 | \n",
" -8.822 | \n",
" 1 | \n",
" 0.0355 | \n",
" 0.8570 | \n",
" 0.000003 | \n",
" 0.0913 | \n",
" 0.0765 | \n",
" 141.284 | \n",
" 3 | \n",
" acoustic | \n",
"
\n",
" \n",
" 7 | \n",
" Jason Mraz | \n",
" I'm Yours | \n",
" 80 | \n",
" 242946 | \n",
" False | \n",
" 0.703 | \n",
" 0.4440 | \n",
" 11 | \n",
" -9.331 | \n",
" 1 | \n",
" 0.0417 | \n",
" 0.5590 | \n",
" 0.000000 | \n",
" 0.0973 | \n",
" 0.7120 | \n",
" 150.960 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 8 | \n",
" Jason Mraz;Colbie Caillat | \n",
" Lucky | \n",
" 74 | \n",
" 189613 | \n",
" False | \n",
" 0.625 | \n",
" 0.4140 | \n",
" 0 | \n",
" -8.700 | \n",
" 1 | \n",
" 0.0369 | \n",
" 0.2940 | \n",
" 0.000000 | \n",
" 0.1510 | \n",
" 0.6690 | \n",
" 130.088 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 9 | \n",
" Ross Copperman | \n",
" Hunger | \n",
" 56 | \n",
" 205594 | \n",
" False | \n",
" 0.442 | \n",
" 0.6320 | \n",
" 1 | \n",
" -6.770 | \n",
" 1 | \n",
" 0.0295 | \n",
" 0.4260 | \n",
" 0.004190 | \n",
" 0.0735 | \n",
" 0.1960 | \n",
" 78.899 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" artists track_name \\\n",
"0 Gen Hoshino Comedy \n",
"1 Ben Woodward Ghost - Acoustic \n",
"2 Ingrid Michaelson;ZAYN To Begin Again \n",
"3 Kina Grannis Can't Help Falling In Love \n",
"4 Chord Overstreet Hold On \n",
"5 Tyrone Wells Days I Will Remember \n",
"6 A Great Big World;Christina Aguilera Say Something \n",
"7 Jason Mraz I'm Yours \n",
"8 Jason Mraz;Colbie Caillat Lucky \n",
"9 Ross Copperman Hunger \n",
"\n",
" popularity duration_ms explicit danceability energy key loudness \\\n",
"0 73 230666 False 0.676 0.4610 1 -6.746 \n",
"1 55 149610 False 0.420 0.1660 1 -17.235 \n",
"2 57 210826 False 0.438 0.3590 0 -9.734 \n",
"3 71 201933 False 0.266 0.0596 0 -18.515 \n",
"4 82 198853 False 0.618 0.4430 2 -9.681 \n",
"5 58 214240 False 0.688 0.4810 6 -8.807 \n",
"6 74 229400 False 0.407 0.1470 2 -8.822 \n",
"7 80 242946 False 0.703 0.4440 11 -9.331 \n",
"8 74 189613 False 0.625 0.4140 0 -8.700 \n",
"9 56 205594 False 0.442 0.6320 1 -6.770 \n",
"\n",
" mode speechiness acousticness instrumentalness liveness valence \\\n",
"0 0 0.1430 0.0322 0.000001 0.3580 0.7150 \n",
"1 1 0.0763 0.9240 0.000006 0.1010 0.2670 \n",
"2 1 0.0557 0.2100 0.000000 0.1170 0.1200 \n",
"3 1 0.0363 0.9050 0.000071 0.1320 0.1430 \n",
"4 1 0.0526 0.4690 0.000000 0.0829 0.1670 \n",
"5 1 0.1050 0.2890 0.000000 0.1890 0.6660 \n",
"6 1 0.0355 0.8570 0.000003 0.0913 0.0765 \n",
"7 1 0.0417 0.5590 0.000000 0.0973 0.7120 \n",
"8 1 0.0369 0.2940 0.000000 0.1510 0.6690 \n",
"9 1 0.0295 0.4260 0.004190 0.0735 0.1960 \n",
"\n",
" tempo time_signature track_genre \n",
"0 87.917 4 acoustic \n",
"1 77.489 4 acoustic \n",
"2 76.332 4 acoustic \n",
"3 181.740 3 acoustic \n",
"4 119.949 4 acoustic \n",
"5 98.017 4 acoustic \n",
"6 141.284 3 acoustic \n",
"7 150.960 4 acoustic \n",
"8 130.088 4 acoustic \n",
"9 78.899 4 acoustic "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "d801195c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"artists object\n",
"track_name object\n",
"popularity int64\n",
"duration_ms int64\n",
"explicit bool\n",
"danceability float64\n",
"energy float64\n",
"key int64\n",
"loudness float64\n",
"mode int64\n",
"speechiness float64\n",
"acousticness float64\n",
"instrumentalness float64\n",
"liveness float64\n",
"valence float64\n",
"tempo float64\n",
"time_signature int64\n",
"track_genre object\n",
"dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "aeb25f1a",
"metadata": {},
"source": [
"### Drop Null Values"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "ce3c3319",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"artists 1\n",
"track_name 1\n",
"popularity 0\n",
"duration_ms 0\n",
"explicit 0\n",
"danceability 0\n",
"energy 0\n",
"key 0\n",
"loudness 0\n",
"mode 0\n",
"speechiness 0\n",
"acousticness 0\n",
"instrumentalness 0\n",
"liveness 0\n",
"valence 0\n",
"tempo 0\n",
"time_signature 0\n",
"track_genre 0\n",
"dtype: int64\n"
]
}
],
"source": [
"print(df.isna().sum())\n",
"df=df.dropna()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "de7960de",
"metadata": {},
"source": [
"### Drop Duplicated Rows (Same artists and track_name)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "eb46cc03",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" artists | \n",
" track_name | \n",
" popularity | \n",
" duration_ms | \n",
" explicit | \n",
" danceability | \n",
" energy | \n",
" key | \n",
" loudness | \n",
" mode | \n",
" speechiness | \n",
" acousticness | \n",
" instrumentalness | \n",
" liveness | \n",
" valence | \n",
" tempo | \n",
" time_signature | \n",
" track_genre | \n",
"
\n",
" \n",
" \n",
" \n",
" 18 | \n",
" Jason Mraz;Colbie Caillat | \n",
" Lucky | \n",
" 68 | \n",
" 189613 | \n",
" False | \n",
" 0.625 | \n",
" 0.414 | \n",
" 0 | \n",
" -8.700 | \n",
" 1 | \n",
" 0.0369 | \n",
" 0.29400 | \n",
" 0.000000 | \n",
" 0.1510 | \n",
" 0.6690 | \n",
" 130.088 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 20 | \n",
" Jason Mraz | \n",
" I'm Yours | \n",
" 75 | \n",
" 242946 | \n",
" False | \n",
" 0.703 | \n",
" 0.444 | \n",
" 11 | \n",
" -9.331 | \n",
" 1 | \n",
" 0.0417 | \n",
" 0.55900 | \n",
" 0.000000 | \n",
" 0.0973 | \n",
" 0.7120 | \n",
" 150.960 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 22 | \n",
" A Great Big World;Christina Aguilera | \n",
" Say Something | \n",
" 70 | \n",
" 229400 | \n",
" False | \n",
" 0.407 | \n",
" 0.147 | \n",
" 2 | \n",
" -8.822 | \n",
" 1 | \n",
" 0.0355 | \n",
" 0.85700 | \n",
" 0.000003 | \n",
" 0.0913 | \n",
" 0.0765 | \n",
" 141.284 | \n",
" 3 | \n",
" acoustic | \n",
"
\n",
" \n",
" 28 | \n",
" Jason Mraz | \n",
" Winter Wonderland | \n",
" 0 | \n",
" 131760 | \n",
" False | \n",
" 0.620 | \n",
" 0.309 | \n",
" 5 | \n",
" -9.209 | \n",
" 1 | \n",
" 0.0495 | \n",
" 0.78800 | \n",
" 0.000000 | \n",
" 0.1460 | \n",
" 0.6640 | \n",
" 145.363 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 29 | \n",
" Jason Mraz | \n",
" Winter Wonderland | \n",
" 0 | \n",
" 131760 | \n",
" False | \n",
" 0.620 | \n",
" 0.309 | \n",
" 5 | \n",
" -9.209 | \n",
" 1 | \n",
" 0.0495 | \n",
" 0.78800 | \n",
" 0.000000 | \n",
" 0.1460 | \n",
" 0.6640 | \n",
" 145.363 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 113845 | \n",
" Hillsong Worship;Brooke Ligertwood | \n",
" King Of Kings - Live at Hillsong Conference | \n",
" 40 | \n",
" 291565 | \n",
" False | \n",
" 0.454 | \n",
" 0.427 | \n",
" 2 | \n",
" -8.049 | \n",
" 1 | \n",
" 0.0290 | \n",
" 0.02050 | \n",
" 0.000000 | \n",
" 0.6900 | \n",
" 0.1840 | \n",
" 135.887 | \n",
" 4 | \n",
" world-music | \n",
"
\n",
" \n",
" 113882 | \n",
" Bryan & Katie Torwalt | \n",
" Good News - Live | \n",
" 23 | \n",
" 266632 | \n",
" False | \n",
" 0.473 | \n",
" 0.474 | \n",
" 6 | \n",
" -9.175 | \n",
" 1 | \n",
" 0.0558 | \n",
" 0.39500 | \n",
" 0.000000 | \n",
" 0.1630 | \n",
" 0.2510 | \n",
" 140.746 | \n",
" 4 | \n",
" world-music | \n",
"
\n",
" \n",
" 113917 | \n",
" Hillsong Worship;Mi-kaisha Rose | \n",
" Never Walk Alone - Live | \n",
" 41 | \n",
" 348619 | \n",
" False | \n",
" 0.420 | \n",
" 0.553 | \n",
" 5 | \n",
" -8.049 | \n",
" 1 | \n",
" 0.0332 | \n",
" 0.14100 | \n",
" 0.000000 | \n",
" 0.1030 | \n",
" 0.2140 | \n",
" 143.804 | \n",
" 4 | \n",
" world-music | \n",
"
\n",
" \n",
" 113951 | \n",
" Passion;Kristian Stanfill | \n",
" More Like Jesus - Live | \n",
" 44 | \n",
" 338694 | \n",
" False | \n",
" 0.404 | \n",
" 0.676 | \n",
" 10 | \n",
" -5.468 | \n",
" 1 | \n",
" 0.0354 | \n",
" 0.02740 | \n",
" 0.000000 | \n",
" 0.3520 | \n",
" 0.1630 | \n",
" 144.056 | \n",
" 3 | \n",
" world-music | \n",
"
\n",
" \n",
" 113991 | \n",
" Chris Tomlin | \n",
" At The Cross (Love Ran Red) | \n",
" 32 | \n",
" 250629 | \n",
" False | \n",
" 0.387 | \n",
" 0.531 | \n",
" 8 | \n",
" -4.788 | \n",
" 1 | \n",
" 0.0290 | \n",
" 0.00305 | \n",
" 0.000000 | \n",
" 0.2010 | \n",
" 0.1530 | \n",
" 146.003 | \n",
" 4 | \n",
" world-music | \n",
"
\n",
" \n",
"
\n",
"
32656 rows × 18 columns
\n",
"
"
],
"text/plain": [
" artists \\\n",
"18 Jason Mraz;Colbie Caillat \n",
"20 Jason Mraz \n",
"22 A Great Big World;Christina Aguilera \n",
"28 Jason Mraz \n",
"29 Jason Mraz \n",
"... ... \n",
"113845 Hillsong Worship;Brooke Ligertwood \n",
"113882 Bryan & Katie Torwalt \n",
"113917 Hillsong Worship;Mi-kaisha Rose \n",
"113951 Passion;Kristian Stanfill \n",
"113991 Chris Tomlin \n",
"\n",
" track_name popularity duration_ms \\\n",
"18 Lucky 68 189613 \n",
"20 I'm Yours 75 242946 \n",
"22 Say Something 70 229400 \n",
"28 Winter Wonderland 0 131760 \n",
"29 Winter Wonderland 0 131760 \n",
"... ... ... ... \n",
"113845 King Of Kings - Live at Hillsong Conference 40 291565 \n",
"113882 Good News - Live 23 266632 \n",
"113917 Never Walk Alone - Live 41 348619 \n",
"113951 More Like Jesus - Live 44 338694 \n",
"113991 At The Cross (Love Ran Red) 32 250629 \n",
"\n",
" explicit danceability energy key loudness mode speechiness \\\n",
"18 False 0.625 0.414 0 -8.700 1 0.0369 \n",
"20 False 0.703 0.444 11 -9.331 1 0.0417 \n",
"22 False 0.407 0.147 2 -8.822 1 0.0355 \n",
"28 False 0.620 0.309 5 -9.209 1 0.0495 \n",
"29 False 0.620 0.309 5 -9.209 1 0.0495 \n",
"... ... ... ... ... ... ... ... \n",
"113845 False 0.454 0.427 2 -8.049 1 0.0290 \n",
"113882 False 0.473 0.474 6 -9.175 1 0.0558 \n",
"113917 False 0.420 0.553 5 -8.049 1 0.0332 \n",
"113951 False 0.404 0.676 10 -5.468 1 0.0354 \n",
"113991 False 0.387 0.531 8 -4.788 1 0.0290 \n",
"\n",
" acousticness instrumentalness liveness valence tempo \\\n",
"18 0.29400 0.000000 0.1510 0.6690 130.088 \n",
"20 0.55900 0.000000 0.0973 0.7120 150.960 \n",
"22 0.85700 0.000003 0.0913 0.0765 141.284 \n",
"28 0.78800 0.000000 0.1460 0.6640 145.363 \n",
"29 0.78800 0.000000 0.1460 0.6640 145.363 \n",
"... ... ... ... ... ... \n",
"113845 0.02050 0.000000 0.6900 0.1840 135.887 \n",
"113882 0.39500 0.000000 0.1630 0.2510 140.746 \n",
"113917 0.14100 0.000000 0.1030 0.2140 143.804 \n",
"113951 0.02740 0.000000 0.3520 0.1630 144.056 \n",
"113991 0.00305 0.000000 0.2010 0.1530 146.003 \n",
"\n",
" time_signature track_genre \n",
"18 4 acoustic \n",
"20 4 acoustic \n",
"22 3 acoustic \n",
"28 4 acoustic \n",
"29 4 acoustic \n",
"... ... ... \n",
"113845 4 world-music \n",
"113882 4 world-music \n",
"113917 4 world-music \n",
"113951 3 world-music \n",
"113991 4 world-music \n",
"\n",
"[32656 rows x 18 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"duplicated_rows = df[df.duplicated(['artists', 'track_name'])]\n",
"\n",
"# print duplicated rows\n",
"duplicated_rows"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "251df65d",
"metadata": {},
"outputs": [],
"source": [
"df = df.drop_duplicates(['artists', 'track_name'], keep='first')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "d6eea5b5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"study 996\n",
"black-metal 991\n",
"comedy 987\n",
"heavy-metal 985\n",
"bluegrass 978\n",
" ... \n",
"rock 167\n",
"reggae 166\n",
"house 134\n",
"indie 107\n",
"reggaeton 63\n",
"Name: track_genre, Length: 113, dtype: int64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape\n",
"df['track_genre'].value_counts()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "363cf332",
"metadata": {},
"source": [
"### Drop artists and track name columns"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2f11bf72",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" popularity | \n",
" duration_ms | \n",
" explicit | \n",
" danceability | \n",
" energy | \n",
" key | \n",
" loudness | \n",
" mode | \n",
" speechiness | \n",
" acousticness | \n",
" instrumentalness | \n",
" liveness | \n",
" valence | \n",
" tempo | \n",
" time_signature | \n",
" track_genre | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 73 | \n",
" 230666 | \n",
" False | \n",
" 0.676 | \n",
" 0.4610 | \n",
" 1 | \n",
" -6.746 | \n",
" 0 | \n",
" 0.1430 | \n",
" 0.0322 | \n",
" 0.000001 | \n",
" 0.3580 | \n",
" 0.715 | \n",
" 87.917 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 1 | \n",
" 55 | \n",
" 149610 | \n",
" False | \n",
" 0.420 | \n",
" 0.1660 | \n",
" 1 | \n",
" -17.235 | \n",
" 1 | \n",
" 0.0763 | \n",
" 0.9240 | \n",
" 0.000006 | \n",
" 0.1010 | \n",
" 0.267 | \n",
" 77.489 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 2 | \n",
" 57 | \n",
" 210826 | \n",
" False | \n",
" 0.438 | \n",
" 0.3590 | \n",
" 0 | \n",
" -9.734 | \n",
" 1 | \n",
" 0.0557 | \n",
" 0.2100 | \n",
" 0.000000 | \n",
" 0.1170 | \n",
" 0.120 | \n",
" 76.332 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 3 | \n",
" 71 | \n",
" 201933 | \n",
" False | \n",
" 0.266 | \n",
" 0.0596 | \n",
" 0 | \n",
" -18.515 | \n",
" 1 | \n",
" 0.0363 | \n",
" 0.9050 | \n",
" 0.000071 | \n",
" 0.1320 | \n",
" 0.143 | \n",
" 181.740 | \n",
" 3 | \n",
" acoustic | \n",
"
\n",
" \n",
" 4 | \n",
" 82 | \n",
" 198853 | \n",
" False | \n",
" 0.618 | \n",
" 0.4430 | \n",
" 2 | \n",
" -9.681 | \n",
" 1 | \n",
" 0.0526 | \n",
" 0.4690 | \n",
" 0.000000 | \n",
" 0.0829 | \n",
" 0.167 | \n",
" 119.949 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" popularity duration_ms explicit danceability energy key loudness \\\n",
"0 73 230666 False 0.676 0.4610 1 -6.746 \n",
"1 55 149610 False 0.420 0.1660 1 -17.235 \n",
"2 57 210826 False 0.438 0.3590 0 -9.734 \n",
"3 71 201933 False 0.266 0.0596 0 -18.515 \n",
"4 82 198853 False 0.618 0.4430 2 -9.681 \n",
"\n",
" mode speechiness acousticness instrumentalness liveness valence \\\n",
"0 0 0.1430 0.0322 0.000001 0.3580 0.715 \n",
"1 1 0.0763 0.9240 0.000006 0.1010 0.267 \n",
"2 1 0.0557 0.2100 0.000000 0.1170 0.120 \n",
"3 1 0.0363 0.9050 0.000071 0.1320 0.143 \n",
"4 1 0.0526 0.4690 0.000000 0.0829 0.167 \n",
"\n",
" tempo time_signature track_genre \n",
"0 87.917 4 acoustic \n",
"1 77.489 4 acoustic \n",
"2 76.332 4 acoustic \n",
"3 181.740 3 acoustic \n",
"4 119.949 4 acoustic "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df.drop(['artists','track_name'],axis=1)\n",
"df.head()"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "e7d572f5",
"metadata": {},
"source": [
"### Drop invalid tempo and time signature according to Spotify API"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "69b1cceb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4 71986\n",
"3 6944\n",
"5 1488\n",
"1 775\n",
"0 150\n",
"Name: time_signature, dtype: int64"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['time_signature'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "39a08b22",
"metadata": {},
"outputs": [],
"source": [
"df = df[df['time_signature'] >2]\n",
"df = df[df['tempo'] > 0]"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "0b7c8cea",
"metadata": {},
"source": [
"### Save the cleaned dataset into csv"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "8c064cb0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" popularity | \n",
" duration_ms | \n",
" explicit | \n",
" danceability | \n",
" energy | \n",
" key | \n",
" loudness | \n",
" mode | \n",
" speechiness | \n",
" acousticness | \n",
" instrumentalness | \n",
" liveness | \n",
" valence | \n",
" tempo | \n",
" time_signature | \n",
" track_genre | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 73 | \n",
" 230666 | \n",
" False | \n",
" 0.676 | \n",
" 0.4610 | \n",
" 1 | \n",
" -6.746 | \n",
" 0 | \n",
" 0.1430 | \n",
" 0.0322 | \n",
" 0.000001 | \n",
" 0.3580 | \n",
" 0.715 | \n",
" 87.917 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 1 | \n",
" 55 | \n",
" 149610 | \n",
" False | \n",
" 0.420 | \n",
" 0.1660 | \n",
" 1 | \n",
" -17.235 | \n",
" 1 | \n",
" 0.0763 | \n",
" 0.9240 | \n",
" 0.000006 | \n",
" 0.1010 | \n",
" 0.267 | \n",
" 77.489 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 2 | \n",
" 57 | \n",
" 210826 | \n",
" False | \n",
" 0.438 | \n",
" 0.3590 | \n",
" 0 | \n",
" -9.734 | \n",
" 1 | \n",
" 0.0557 | \n",
" 0.2100 | \n",
" 0.000000 | \n",
" 0.1170 | \n",
" 0.120 | \n",
" 76.332 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
" 3 | \n",
" 71 | \n",
" 201933 | \n",
" False | \n",
" 0.266 | \n",
" 0.0596 | \n",
" 0 | \n",
" -18.515 | \n",
" 1 | \n",
" 0.0363 | \n",
" 0.9050 | \n",
" 0.000071 | \n",
" 0.1320 | \n",
" 0.143 | \n",
" 181.740 | \n",
" 3 | \n",
" acoustic | \n",
"
\n",
" \n",
" 4 | \n",
" 82 | \n",
" 198853 | \n",
" False | \n",
" 0.618 | \n",
" 0.4430 | \n",
" 2 | \n",
" -9.681 | \n",
" 1 | \n",
" 0.0526 | \n",
" 0.4690 | \n",
" 0.000000 | \n",
" 0.0829 | \n",
" 0.167 | \n",
" 119.949 | \n",
" 4 | \n",
" acoustic | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" popularity duration_ms explicit danceability energy key loudness \\\n",
"0 73 230666 False 0.676 0.4610 1 -6.746 \n",
"1 55 149610 False 0.420 0.1660 1 -17.235 \n",
"2 57 210826 False 0.438 0.3590 0 -9.734 \n",
"3 71 201933 False 0.266 0.0596 0 -18.515 \n",
"4 82 198853 False 0.618 0.4430 2 -9.681 \n",
"\n",
" mode speechiness acousticness instrumentalness liveness valence \\\n",
"0 0 0.1430 0.0322 0.000001 0.3580 0.715 \n",
"1 1 0.0763 0.9240 0.000006 0.1010 0.267 \n",
"2 1 0.0557 0.2100 0.000000 0.1170 0.120 \n",
"3 1 0.0363 0.9050 0.000071 0.1320 0.143 \n",
"4 1 0.0526 0.4690 0.000000 0.0829 0.167 \n",
"\n",
" tempo time_signature track_genre \n",
"0 87.917 4 acoustic \n",
"1 77.489 4 acoustic \n",
"2 76.332 4 acoustic \n",
"3 181.740 3 acoustic \n",
"4 119.949 4 acoustic "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "12bea66e",
"metadata": {},
"outputs": [],
"source": [
"df.to_csv(\"cleaned_dataset.csv\",index = False)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}