You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1284 lines
64 KiB
1284 lines
64 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Nigerian Music scraped from Spotify - an analysis"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Requirement already satisfied: seaborn in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (0.11.1)\n",
|
|
"Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.19.2)\n",
|
|
"Requirement already satisfied: pandas>=0.23 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.1.2)\n",
|
|
"Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (1.4.1)\n",
|
|
"Requirement already satisfied: matplotlib>=2.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from seaborn) (3.1.0)\n",
|
|
"Requirement already satisfied: python-dateutil>=2.7.3 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2.8.0)\n",
|
|
"Requirement already satisfied: pytz>=2017.2 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from pandas>=0.23->seaborn) (2019.1)\n",
|
|
"Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (0.10.0)\n",
|
|
"Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (1.1.0)\n",
|
|
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from matplotlib>=2.2->seaborn) (2.4.0)\n",
|
|
"Requirement already satisfied: six>=1.5 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from python-dateutil>=2.7.3->pandas>=0.23->seaborn) (1.12.0)\n",
|
|
"Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib>=2.2->seaborn) (45.1.0)\n",
|
|
"\u001b[33mWARNING: You are using pip version 20.2.3; however, version 21.1.2 is available.\n",
|
|
"You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 -m pip install --upgrade pip' command.\u001b[0m\n",
|
|
"Note: you may need to restart the kernel to use updated packages.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"pip install seaborn"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Start where we finished in the last lesson, with data imported and filtered."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>name</th>\n",
|
|
" <th>album</th>\n",
|
|
" <th>artist</th>\n",
|
|
" <th>artist_top_genre</th>\n",
|
|
" <th>release_date</th>\n",
|
|
" <th>length</th>\n",
|
|
" <th>popularity</th>\n",
|
|
" <th>danceability</th>\n",
|
|
" <th>acousticness</th>\n",
|
|
" <th>energy</th>\n",
|
|
" <th>instrumentalness</th>\n",
|
|
" <th>liveness</th>\n",
|
|
" <th>loudness</th>\n",
|
|
" <th>speechiness</th>\n",
|
|
" <th>tempo</th>\n",
|
|
" <th>time_signature</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>Sparky</td>\n",
|
|
" <td>Mandy & The Jungle</td>\n",
|
|
" <td>Cruel Santino</td>\n",
|
|
" <td>alternative r&b</td>\n",
|
|
" <td>2019</td>\n",
|
|
" <td>144000</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>0.666</td>\n",
|
|
" <td>0.8510</td>\n",
|
|
" <td>0.420</td>\n",
|
|
" <td>0.534000</td>\n",
|
|
" <td>0.1100</td>\n",
|
|
" <td>-6.699</td>\n",
|
|
" <td>0.0829</td>\n",
|
|
" <td>133.015</td>\n",
|
|
" <td>5</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>shuga rush</td>\n",
|
|
" <td>EVERYTHING YOU HEARD IS TRUE</td>\n",
|
|
" <td>Odunsi (The Engine)</td>\n",
|
|
" <td>afropop</td>\n",
|
|
" <td>2020</td>\n",
|
|
" <td>89488</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>0.710</td>\n",
|
|
" <td>0.0822</td>\n",
|
|
" <td>0.683</td>\n",
|
|
" <td>0.000169</td>\n",
|
|
" <td>0.1010</td>\n",
|
|
" <td>-5.640</td>\n",
|
|
" <td>0.3600</td>\n",
|
|
" <td>129.993</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>LITT!</td>\n",
|
|
" <td>LITT!</td>\n",
|
|
" <td>AYLØ</td>\n",
|
|
" <td>indie r&b</td>\n",
|
|
" <td>2018</td>\n",
|
|
" <td>207758</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0.836</td>\n",
|
|
" <td>0.2720</td>\n",
|
|
" <td>0.564</td>\n",
|
|
" <td>0.000537</td>\n",
|
|
" <td>0.1100</td>\n",
|
|
" <td>-7.127</td>\n",
|
|
" <td>0.0424</td>\n",
|
|
" <td>130.005</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>Confident / Feeling Cool</td>\n",
|
|
" <td>Enjoy Your Life</td>\n",
|
|
" <td>Lady Donli</td>\n",
|
|
" <td>nigerian pop</td>\n",
|
|
" <td>2019</td>\n",
|
|
" <td>175135</td>\n",
|
|
" <td>14</td>\n",
|
|
" <td>0.894</td>\n",
|
|
" <td>0.7980</td>\n",
|
|
" <td>0.611</td>\n",
|
|
" <td>0.000187</td>\n",
|
|
" <td>0.0964</td>\n",
|
|
" <td>-4.961</td>\n",
|
|
" <td>0.1130</td>\n",
|
|
" <td>111.087</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>wanted you</td>\n",
|
|
" <td>rare.</td>\n",
|
|
" <td>Odunsi (The Engine)</td>\n",
|
|
" <td>afropop</td>\n",
|
|
" <td>2018</td>\n",
|
|
" <td>152049</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0.702</td>\n",
|
|
" <td>0.1160</td>\n",
|
|
" <td>0.833</td>\n",
|
|
" <td>0.910000</td>\n",
|
|
" <td>0.3480</td>\n",
|
|
" <td>-6.044</td>\n",
|
|
" <td>0.0447</td>\n",
|
|
" <td>105.115</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" name album \\\n",
|
|
"0 Sparky Mandy & The Jungle \n",
|
|
"1 shuga rush EVERYTHING YOU HEARD IS TRUE \n",
|
|
"2 LITT! LITT! \n",
|
|
"3 Confident / Feeling Cool Enjoy Your Life \n",
|
|
"4 wanted you rare. \n",
|
|
"\n",
|
|
" artist artist_top_genre release_date length popularity \\\n",
|
|
"0 Cruel Santino alternative r&b 2019 144000 48 \n",
|
|
"1 Odunsi (The Engine) afropop 2020 89488 30 \n",
|
|
"2 AYLØ indie r&b 2018 207758 40 \n",
|
|
"3 Lady Donli nigerian pop 2019 175135 14 \n",
|
|
"4 Odunsi (The Engine) afropop 2018 152049 25 \n",
|
|
"\n",
|
|
" danceability acousticness energy instrumentalness liveness loudness \\\n",
|
|
"0 0.666 0.8510 0.420 0.534000 0.1100 -6.699 \n",
|
|
"1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n",
|
|
"2 0.836 0.2720 0.564 0.000537 0.1100 -7.127 \n",
|
|
"3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n",
|
|
"4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n",
|
|
"\n",
|
|
" speechiness tempo time_signature \n",
|
|
"0 0.0829 133.015 5 \n",
|
|
"1 0.3600 129.993 3 \n",
|
|
"2 0.0424 130.005 4 \n",
|
|
"3 0.1130 111.087 4 \n",
|
|
"4 0.0447 105.115 4 "
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import pandas as pd\n",
|
|
"import seaborn as sns\n",
|
|
"\n",
|
|
"\n",
|
|
"df = pd.read_csv(\"../data/nigerian-songs.csv\")\n",
|
|
"df.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"We will focus only on 3 genres. Maybe we can get 3 clusters built!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0.5, 1.0, 'Top genres')"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
|
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
|
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
|
|
"<svg height=\"474.468454pt\" version=\"1.1\" viewBox=\"0 0 598.4875 474.468454\" width=\"598.4875pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
" <defs>\n",
|
|
" <style type=\"text/css\">\n",
|
|
"*{stroke-linecap:butt;stroke-linejoin:round;white-space:pre;}\n",
|
|
" </style>\n",
|
|
" </defs>\n",
|
|
" <g id=\"figure_1\">\n",
|
|
" <g id=\"patch_1\">\n",
|
|
" <path d=\"M 0 474.468454 \n",
|
|
"L 598.4875 474.468454 \n",
|
|
"L 598.4875 0 \n",
|
|
"L 0 0 \n",
|
|
"z\n",
|
|
"\" style=\"fill:none;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"axes_1\">\n",
|
|
" <g id=\"patch_2\">\n",
|
|
" <path d=\"M 33.2875 402.838125 \n",
|
|
"L 591.2875 402.838125 \n",
|
|
"L 591.2875 22.318125 \n",
|
|
"L 33.2875 22.318125 \n",
|
|
"z\n",
|
|
"\" style=\"fill:#ffffff;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_3\">\n",
|
|
" <path clip-path=\"url(#p7b6b825212)\" d=\"M 51.8875 402.838125 \n",
|
|
"L 200.6875 402.838125 \n",
|
|
"L 200.6875 40.438125 \n",
|
|
"L 51.8875 40.438125 \n",
|
|
"z\n",
|
|
"\" style=\"fill:#3274a1;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_4\">\n",
|
|
" <path clip-path=\"url(#p7b6b825212)\" d=\"M 237.8875 402.838125 \n",
|
|
"L 386.6875 402.838125 \n",
|
|
"L 386.6875 295.525504 \n",
|
|
"L 237.8875 295.525504 \n",
|
|
"z\n",
|
|
"\" style=\"fill:#e1812c;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_5\">\n",
|
|
" <path clip-path=\"url(#p7b6b825212)\" d=\"M 423.8875 402.838125 \n",
|
|
"L 572.6875 402.838125 \n",
|
|
"L 572.6875 369.412882 \n",
|
|
"L 423.8875 369.412882 \n",
|
|
"z\n",
|
|
"\" style=\"fill:#3a923a;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"matplotlib.axis_1\">\n",
|
|
" <g id=\"xtick_1\">\n",
|
|
" <g id=\"line2d_1\">\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L 0 3.5 \n",
|
|
"\" id=\"mb1e94ec236\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"126.2875\" xlink:href=\"#mb1e94ec236\" y=\"402.838125\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_1\">\n",
|
|
" <!-- afro dancehall -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 34.28125 27.484375 \n",
|
|
"Q 23.390625 27.484375 19.1875 25 \n",
|
|
"Q 14.984375 22.515625 14.984375 16.5 \n",
|
|
"Q 14.984375 11.71875 18.140625 8.90625 \n",
|
|
"Q 21.296875 6.109375 26.703125 6.109375 \n",
|
|
"Q 34.1875 6.109375 38.703125 11.40625 \n",
|
|
"Q 43.21875 16.703125 43.21875 25.484375 \n",
|
|
"L 43.21875 27.484375 \n",
|
|
"z\n",
|
|
"M 52.203125 31.203125 \n",
|
|
"L 52.203125 0 \n",
|
|
"L 43.21875 0 \n",
|
|
"L 43.21875 8.296875 \n",
|
|
"Q 40.140625 3.328125 35.546875 0.953125 \n",
|
|
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
|
|
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
|
|
"Q 6 8.015625 6 15.921875 \n",
|
|
"Q 6 25.140625 12.171875 29.828125 \n",
|
|
"Q 18.359375 34.515625 30.609375 34.515625 \n",
|
|
"L 43.21875 34.515625 \n",
|
|
"L 43.21875 35.40625 \n",
|
|
"Q 43.21875 41.609375 39.140625 45 \n",
|
|
"Q 35.0625 48.390625 27.6875 48.390625 \n",
|
|
"Q 23 48.390625 18.546875 47.265625 \n",
|
|
"Q 14.109375 46.140625 10.015625 43.890625 \n",
|
|
"L 10.015625 52.203125 \n",
|
|
"Q 14.9375 54.109375 19.578125 55.046875 \n",
|
|
"Q 24.21875 56 28.609375 56 \n",
|
|
"Q 40.484375 56 46.34375 49.84375 \n",
|
|
"Q 52.203125 43.703125 52.203125 31.203125 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-97\"/>\n",
|
|
" <path d=\"M 37.109375 75.984375 \n",
|
|
"L 37.109375 68.5 \n",
|
|
"L 28.515625 68.5 \n",
|
|
"Q 23.6875 68.5 21.796875 66.546875 \n",
|
|
"Q 19.921875 64.59375 19.921875 59.515625 \n",
|
|
"L 19.921875 54.6875 \n",
|
|
"L 34.71875 54.6875 \n",
|
|
"L 34.71875 47.703125 \n",
|
|
"L 19.921875 47.703125 \n",
|
|
"L 19.921875 0 \n",
|
|
"L 10.890625 0 \n",
|
|
"L 10.890625 47.703125 \n",
|
|
"L 2.296875 47.703125 \n",
|
|
"L 2.296875 54.6875 \n",
|
|
"L 10.890625 54.6875 \n",
|
|
"L 10.890625 58.5 \n",
|
|
"Q 10.890625 67.625 15.140625 71.796875 \n",
|
|
"Q 19.390625 75.984375 28.609375 75.984375 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-102\"/>\n",
|
|
" <path d=\"M 41.109375 46.296875 \n",
|
|
"Q 39.59375 47.171875 37.8125 47.578125 \n",
|
|
"Q 36.03125 48 33.890625 48 \n",
|
|
"Q 26.265625 48 22.1875 43.046875 \n",
|
|
"Q 18.109375 38.09375 18.109375 28.8125 \n",
|
|
"L 18.109375 0 \n",
|
|
"L 9.078125 0 \n",
|
|
"L 9.078125 54.6875 \n",
|
|
"L 18.109375 54.6875 \n",
|
|
"L 18.109375 46.1875 \n",
|
|
"Q 20.953125 51.171875 25.484375 53.578125 \n",
|
|
"Q 30.03125 56 36.53125 56 \n",
|
|
"Q 37.453125 56 38.578125 55.875 \n",
|
|
"Q 39.703125 55.765625 41.0625 55.515625 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-114\"/>\n",
|
|
" <path d=\"M 30.609375 48.390625 \n",
|
|
"Q 23.390625 48.390625 19.1875 42.75 \n",
|
|
"Q 14.984375 37.109375 14.984375 27.296875 \n",
|
|
"Q 14.984375 17.484375 19.15625 11.84375 \n",
|
|
"Q 23.34375 6.203125 30.609375 6.203125 \n",
|
|
"Q 37.796875 6.203125 41.984375 11.859375 \n",
|
|
"Q 46.1875 17.53125 46.1875 27.296875 \n",
|
|
"Q 46.1875 37.015625 41.984375 42.703125 \n",
|
|
"Q 37.796875 48.390625 30.609375 48.390625 \n",
|
|
"z\n",
|
|
"M 30.609375 56 \n",
|
|
"Q 42.328125 56 49.015625 48.375 \n",
|
|
"Q 55.71875 40.765625 55.71875 27.296875 \n",
|
|
"Q 55.71875 13.875 49.015625 6.21875 \n",
|
|
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
|
|
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
|
|
"Q 5.515625 13.875 5.515625 27.296875 \n",
|
|
"Q 5.515625 40.765625 12.171875 48.375 \n",
|
|
"Q 18.84375 56 30.609375 56 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-111\"/>\n",
|
|
" <path id=\"DejaVuSans-32\"/>\n",
|
|
" <path d=\"M 45.40625 46.390625 \n",
|
|
"L 45.40625 75.984375 \n",
|
|
"L 54.390625 75.984375 \n",
|
|
"L 54.390625 0 \n",
|
|
"L 45.40625 0 \n",
|
|
"L 45.40625 8.203125 \n",
|
|
"Q 42.578125 3.328125 38.25 0.953125 \n",
|
|
"Q 33.9375 -1.421875 27.875 -1.421875 \n",
|
|
"Q 17.96875 -1.421875 11.734375 6.484375 \n",
|
|
"Q 5.515625 14.40625 5.515625 27.296875 \n",
|
|
"Q 5.515625 40.1875 11.734375 48.09375 \n",
|
|
"Q 17.96875 56 27.875 56 \n",
|
|
"Q 33.9375 56 38.25 53.625 \n",
|
|
"Q 42.578125 51.265625 45.40625 46.390625 \n",
|
|
"z\n",
|
|
"M 14.796875 27.296875 \n",
|
|
"Q 14.796875 17.390625 18.875 11.75 \n",
|
|
"Q 22.953125 6.109375 30.078125 6.109375 \n",
|
|
"Q 37.203125 6.109375 41.296875 11.75 \n",
|
|
"Q 45.40625 17.390625 45.40625 27.296875 \n",
|
|
"Q 45.40625 37.203125 41.296875 42.84375 \n",
|
|
"Q 37.203125 48.484375 30.078125 48.484375 \n",
|
|
"Q 22.953125 48.484375 18.875 42.84375 \n",
|
|
"Q 14.796875 37.203125 14.796875 27.296875 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-100\"/>\n",
|
|
" <path d=\"M 54.890625 33.015625 \n",
|
|
"L 54.890625 0 \n",
|
|
"L 45.90625 0 \n",
|
|
"L 45.90625 32.71875 \n",
|
|
"Q 45.90625 40.484375 42.875 44.328125 \n",
|
|
"Q 39.84375 48.1875 33.796875 48.1875 \n",
|
|
"Q 26.515625 48.1875 22.3125 43.546875 \n",
|
|
"Q 18.109375 38.921875 18.109375 30.90625 \n",
|
|
"L 18.109375 0 \n",
|
|
"L 9.078125 0 \n",
|
|
"L 9.078125 54.6875 \n",
|
|
"L 18.109375 54.6875 \n",
|
|
"L 18.109375 46.1875 \n",
|
|
"Q 21.34375 51.125 25.703125 53.5625 \n",
|
|
"Q 30.078125 56 35.796875 56 \n",
|
|
"Q 45.21875 56 50.046875 50.171875 \n",
|
|
"Q 54.890625 44.34375 54.890625 33.015625 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-110\"/>\n",
|
|
" <path d=\"M 48.78125 52.59375 \n",
|
|
"L 48.78125 44.1875 \n",
|
|
"Q 44.96875 46.296875 41.140625 47.34375 \n",
|
|
"Q 37.3125 48.390625 33.40625 48.390625 \n",
|
|
"Q 24.65625 48.390625 19.8125 42.84375 \n",
|
|
"Q 14.984375 37.3125 14.984375 27.296875 \n",
|
|
"Q 14.984375 17.28125 19.8125 11.734375 \n",
|
|
"Q 24.65625 6.203125 33.40625 6.203125 \n",
|
|
"Q 37.3125 6.203125 41.140625 7.25 \n",
|
|
"Q 44.96875 8.296875 48.78125 10.40625 \n",
|
|
"L 48.78125 2.09375 \n",
|
|
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
|
|
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
|
|
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
|
|
"Q 5.515625 14.109375 5.515625 27.296875 \n",
|
|
"Q 5.515625 40.671875 12.859375 48.328125 \n",
|
|
"Q 20.21875 56 33.015625 56 \n",
|
|
"Q 37.15625 56 41.109375 55.140625 \n",
|
|
"Q 45.0625 54.296875 48.78125 52.59375 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-99\"/>\n",
|
|
" <path d=\"M 56.203125 29.59375 \n",
|
|
"L 56.203125 25.203125 \n",
|
|
"L 14.890625 25.203125 \n",
|
|
"Q 15.484375 15.921875 20.484375 11.0625 \n",
|
|
"Q 25.484375 6.203125 34.421875 6.203125 \n",
|
|
"Q 39.59375 6.203125 44.453125 7.46875 \n",
|
|
"Q 49.3125 8.734375 54.109375 11.28125 \n",
|
|
"L 54.109375 2.78125 \n",
|
|
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
|
|
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
|
|
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
|
|
"Q 5.515625 13.8125 5.515625 26.8125 \n",
|
|
"Q 5.515625 40.234375 12.765625 48.109375 \n",
|
|
"Q 20.015625 56 32.328125 56 \n",
|
|
"Q 43.359375 56 49.78125 48.890625 \n",
|
|
"Q 56.203125 41.796875 56.203125 29.59375 \n",
|
|
"z\n",
|
|
"M 47.21875 32.234375 \n",
|
|
"Q 47.125 39.59375 43.09375 43.984375 \n",
|
|
"Q 39.0625 48.390625 32.421875 48.390625 \n",
|
|
"Q 24.90625 48.390625 20.390625 44.140625 \n",
|
|
"Q 15.875 39.890625 15.1875 32.171875 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-101\"/>\n",
|
|
" <path d=\"M 54.890625 33.015625 \n",
|
|
"L 54.890625 0 \n",
|
|
"L 45.90625 0 \n",
|
|
"L 45.90625 32.71875 \n",
|
|
"Q 45.90625 40.484375 42.875 44.328125 \n",
|
|
"Q 39.84375 48.1875 33.796875 48.1875 \n",
|
|
"Q 26.515625 48.1875 22.3125 43.546875 \n",
|
|
"Q 18.109375 38.921875 18.109375 30.90625 \n",
|
|
"L 18.109375 0 \n",
|
|
"L 9.078125 0 \n",
|
|
"L 9.078125 75.984375 \n",
|
|
"L 18.109375 75.984375 \n",
|
|
"L 18.109375 46.1875 \n",
|
|
"Q 21.34375 51.125 25.703125 53.5625 \n",
|
|
"Q 30.078125 56 35.796875 56 \n",
|
|
"Q 45.21875 56 50.046875 50.171875 \n",
|
|
"Q 54.890625 44.34375 54.890625 33.015625 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-104\"/>\n",
|
|
" <path d=\"M 9.421875 75.984375 \n",
|
|
"L 18.40625 75.984375 \n",
|
|
"L 18.40625 0 \n",
|
|
"L 9.421875 0 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-108\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(102.945242 465.797893)rotate(-45)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-97\"/>\n",
|
|
" <use x=\"61.279297\" xlink:href=\"#DejaVuSans-102\"/>\n",
|
|
" <use x=\"96.484375\" xlink:href=\"#DejaVuSans-114\"/>\n",
|
|
" <use x=\"137.566406\" xlink:href=\"#DejaVuSans-111\"/>\n",
|
|
" <use x=\"198.748047\" xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"230.535156\" xlink:href=\"#DejaVuSans-100\"/>\n",
|
|
" <use x=\"294.011719\" xlink:href=\"#DejaVuSans-97\"/>\n",
|
|
" <use x=\"355.291016\" xlink:href=\"#DejaVuSans-110\"/>\n",
|
|
" <use x=\"418.669922\" xlink:href=\"#DejaVuSans-99\"/>\n",
|
|
" <use x=\"473.650391\" xlink:href=\"#DejaVuSans-101\"/>\n",
|
|
" <use x=\"535.173828\" xlink:href=\"#DejaVuSans-104\"/>\n",
|
|
" <use x=\"598.552734\" xlink:href=\"#DejaVuSans-97\"/>\n",
|
|
" <use x=\"659.832031\" xlink:href=\"#DejaVuSans-108\"/>\n",
|
|
" <use x=\"687.615234\" xlink:href=\"#DejaVuSans-108\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_2\">\n",
|
|
" <g id=\"line2d_2\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"312.2875\" xlink:href=\"#mb1e94ec236\" y=\"402.838125\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_2\">\n",
|
|
" <!-- afropop -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 18.109375 8.203125 \n",
|
|
"L 18.109375 -20.796875 \n",
|
|
"L 9.078125 -20.796875 \n",
|
|
"L 9.078125 54.6875 \n",
|
|
"L 18.109375 54.6875 \n",
|
|
"L 18.109375 46.390625 \n",
|
|
"Q 20.953125 51.265625 25.265625 53.625 \n",
|
|
"Q 29.59375 56 35.59375 56 \n",
|
|
"Q 45.5625 56 51.78125 48.09375 \n",
|
|
"Q 58.015625 40.1875 58.015625 27.296875 \n",
|
|
"Q 58.015625 14.40625 51.78125 6.484375 \n",
|
|
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
|
|
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
|
|
"Q 20.953125 3.328125 18.109375 8.203125 \n",
|
|
"z\n",
|
|
"M 48.6875 27.296875 \n",
|
|
"Q 48.6875 37.203125 44.609375 42.84375 \n",
|
|
"Q 40.53125 48.484375 33.40625 48.484375 \n",
|
|
"Q 26.265625 48.484375 22.1875 42.84375 \n",
|
|
"Q 18.109375 37.203125 18.109375 27.296875 \n",
|
|
"Q 18.109375 17.390625 22.1875 11.75 \n",
|
|
"Q 26.265625 6.109375 33.40625 6.109375 \n",
|
|
"Q 40.53125 6.109375 44.609375 11.75 \n",
|
|
"Q 48.6875 17.390625 48.6875 27.296875 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-112\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(300.559471 442.569435)rotate(-45)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-97\"/>\n",
|
|
" <use x=\"61.279297\" xlink:href=\"#DejaVuSans-102\"/>\n",
|
|
" <use x=\"96.484375\" xlink:href=\"#DejaVuSans-114\"/>\n",
|
|
" <use x=\"137.566406\" xlink:href=\"#DejaVuSans-111\"/>\n",
|
|
" <use x=\"198.748047\" xlink:href=\"#DejaVuSans-112\"/>\n",
|
|
" <use x=\"262.224609\" xlink:href=\"#DejaVuSans-111\"/>\n",
|
|
" <use x=\"323.40625\" xlink:href=\"#DejaVuSans-112\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_3\">\n",
|
|
" <g id=\"line2d_3\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"498.2875\" xlink:href=\"#mb1e94ec236\" y=\"402.838125\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_3\">\n",
|
|
" <!-- nigerian pop -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 9.421875 54.6875 \n",
|
|
"L 18.40625 54.6875 \n",
|
|
"L 18.40625 0 \n",
|
|
"L 9.421875 0 \n",
|
|
"z\n",
|
|
"M 9.421875 75.984375 \n",
|
|
"L 18.40625 75.984375 \n",
|
|
"L 18.40625 64.59375 \n",
|
|
"L 9.421875 64.59375 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-105\"/>\n",
|
|
" <path d=\"M 45.40625 27.984375 \n",
|
|
"Q 45.40625 37.75 41.375 43.109375 \n",
|
|
"Q 37.359375 48.484375 30.078125 48.484375 \n",
|
|
"Q 22.859375 48.484375 18.828125 43.109375 \n",
|
|
"Q 14.796875 37.75 14.796875 27.984375 \n",
|
|
"Q 14.796875 18.265625 18.828125 12.890625 \n",
|
|
"Q 22.859375 7.515625 30.078125 7.515625 \n",
|
|
"Q 37.359375 7.515625 41.375 12.890625 \n",
|
|
"Q 45.40625 18.265625 45.40625 27.984375 \n",
|
|
"z\n",
|
|
"M 54.390625 6.78125 \n",
|
|
"Q 54.390625 -7.171875 48.1875 -13.984375 \n",
|
|
"Q 42 -20.796875 29.203125 -20.796875 \n",
|
|
"Q 24.46875 -20.796875 20.265625 -20.09375 \n",
|
|
"Q 16.0625 -19.390625 12.109375 -17.921875 \n",
|
|
"L 12.109375 -9.1875 \n",
|
|
"Q 16.0625 -11.328125 19.921875 -12.34375 \n",
|
|
"Q 23.78125 -13.375 27.78125 -13.375 \n",
|
|
"Q 36.625 -13.375 41.015625 -8.765625 \n",
|
|
"Q 45.40625 -4.15625 45.40625 5.171875 \n",
|
|
"L 45.40625 9.625 \n",
|
|
"Q 42.625 4.78125 38.28125 2.390625 \n",
|
|
"Q 33.9375 0 27.875 0 \n",
|
|
"Q 17.828125 0 11.671875 7.65625 \n",
|
|
"Q 5.515625 15.328125 5.515625 27.984375 \n",
|
|
"Q 5.515625 40.671875 11.671875 48.328125 \n",
|
|
"Q 17.828125 56 27.875 56 \n",
|
|
"Q 33.9375 56 38.28125 53.609375 \n",
|
|
"Q 42.625 51.21875 45.40625 46.390625 \n",
|
|
"L 45.40625 54.6875 \n",
|
|
"L 54.390625 54.6875 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-103\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(477.976963 459.734452)rotate(-45)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-110\"/>\n",
|
|
" <use x=\"63.378906\" xlink:href=\"#DejaVuSans-105\"/>\n",
|
|
" <use x=\"91.162109\" xlink:href=\"#DejaVuSans-103\"/>\n",
|
|
" <use x=\"154.638672\" xlink:href=\"#DejaVuSans-101\"/>\n",
|
|
" <use x=\"216.162109\" xlink:href=\"#DejaVuSans-114\"/>\n",
|
|
" <use x=\"257.275391\" xlink:href=\"#DejaVuSans-105\"/>\n",
|
|
" <use x=\"285.058594\" xlink:href=\"#DejaVuSans-97\"/>\n",
|
|
" <use x=\"346.337891\" xlink:href=\"#DejaVuSans-110\"/>\n",
|
|
" <use x=\"409.716797\" xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"441.503906\" xlink:href=\"#DejaVuSans-112\"/>\n",
|
|
" <use x=\"504.980469\" xlink:href=\"#DejaVuSans-111\"/>\n",
|
|
" <use x=\"566.162109\" xlink:href=\"#DejaVuSans-112\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"matplotlib.axis_2\">\n",
|
|
" <g id=\"ytick_1\">\n",
|
|
" <g id=\"line2d_4\">\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L -3.5 0 \n",
|
|
"\" id=\"mff1e083e3c\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"402.838125\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_4\">\n",
|
|
" <!-- 0 -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 31.78125 66.40625 \n",
|
|
"Q 24.171875 66.40625 20.328125 58.90625 \n",
|
|
"Q 16.5 51.421875 16.5 36.375 \n",
|
|
"Q 16.5 21.390625 20.328125 13.890625 \n",
|
|
"Q 24.171875 6.390625 31.78125 6.390625 \n",
|
|
"Q 39.453125 6.390625 43.28125 13.890625 \n",
|
|
"Q 47.125 21.390625 47.125 36.375 \n",
|
|
"Q 47.125 51.421875 43.28125 58.90625 \n",
|
|
"Q 39.453125 66.40625 31.78125 66.40625 \n",
|
|
"z\n",
|
|
"M 31.78125 74.21875 \n",
|
|
"Q 44.046875 74.21875 50.515625 64.515625 \n",
|
|
"Q 56.984375 54.828125 56.984375 36.375 \n",
|
|
"Q 56.984375 17.96875 50.515625 8.265625 \n",
|
|
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
|
|
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
|
|
"Q 6.59375 17.96875 6.59375 36.375 \n",
|
|
"Q 6.59375 54.828125 13.0625 64.515625 \n",
|
|
"Q 19.53125 74.21875 31.78125 74.21875 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-48\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(19.925 406.637344)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_2\">\n",
|
|
" <g id=\"line2d_5\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"358.857542\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_5\">\n",
|
|
" <!-- 25 -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 19.1875 8.296875 \n",
|
|
"L 53.609375 8.296875 \n",
|
|
"L 53.609375 0 \n",
|
|
"L 7.328125 0 \n",
|
|
"L 7.328125 8.296875 \n",
|
|
"Q 12.9375 14.109375 22.625 23.890625 \n",
|
|
"Q 32.328125 33.6875 34.8125 36.53125 \n",
|
|
"Q 39.546875 41.84375 41.421875 45.53125 \n",
|
|
"Q 43.3125 49.21875 43.3125 52.78125 \n",
|
|
"Q 43.3125 58.59375 39.234375 62.25 \n",
|
|
"Q 35.15625 65.921875 28.609375 65.921875 \n",
|
|
"Q 23.96875 65.921875 18.8125 64.3125 \n",
|
|
"Q 13.671875 62.703125 7.8125 59.421875 \n",
|
|
"L 7.8125 69.390625 \n",
|
|
"Q 13.765625 71.78125 18.9375 73 \n",
|
|
"Q 24.125 74.21875 28.421875 74.21875 \n",
|
|
"Q 39.75 74.21875 46.484375 68.546875 \n",
|
|
"Q 53.21875 62.890625 53.21875 53.421875 \n",
|
|
"Q 53.21875 48.921875 51.53125 44.890625 \n",
|
|
"Q 49.859375 40.875 45.40625 35.40625 \n",
|
|
"Q 44.1875 33.984375 37.640625 27.21875 \n",
|
|
"Q 31.109375 20.453125 19.1875 8.296875 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-50\"/>\n",
|
|
" <path d=\"M 10.796875 72.90625 \n",
|
|
"L 49.515625 72.90625 \n",
|
|
"L 49.515625 64.59375 \n",
|
|
"L 19.828125 64.59375 \n",
|
|
"L 19.828125 46.734375 \n",
|
|
"Q 21.96875 47.46875 24.109375 47.828125 \n",
|
|
"Q 26.265625 48.1875 28.421875 48.1875 \n",
|
|
"Q 40.625 48.1875 47.75 41.5 \n",
|
|
"Q 54.890625 34.8125 54.890625 23.390625 \n",
|
|
"Q 54.890625 11.625 47.5625 5.09375 \n",
|
|
"Q 40.234375 -1.421875 26.90625 -1.421875 \n",
|
|
"Q 22.3125 -1.421875 17.546875 -0.640625 \n",
|
|
"Q 12.796875 0.140625 7.71875 1.703125 \n",
|
|
"L 7.71875 11.625 \n",
|
|
"Q 12.109375 9.234375 16.796875 8.0625 \n",
|
|
"Q 21.484375 6.890625 26.703125 6.890625 \n",
|
|
"Q 35.15625 6.890625 40.078125 11.328125 \n",
|
|
"Q 45.015625 15.765625 45.015625 23.390625 \n",
|
|
"Q 45.015625 31 40.078125 35.4375 \n",
|
|
"Q 35.15625 39.890625 26.703125 39.890625 \n",
|
|
"Q 22.75 39.890625 18.8125 39.015625 \n",
|
|
"Q 14.890625 38.140625 10.796875 36.28125 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-53\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(13.5625 362.656761)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_3\">\n",
|
|
" <g id=\"line2d_6\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"314.87696\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_6\">\n",
|
|
" <!-- 50 -->\n",
|
|
" <g transform=\"translate(13.5625 318.676179)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-53\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_4\">\n",
|
|
" <g id=\"line2d_7\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"270.896377\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_7\">\n",
|
|
" <!-- 75 -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 8.203125 72.90625 \n",
|
|
"L 55.078125 72.90625 \n",
|
|
"L 55.078125 68.703125 \n",
|
|
"L 28.609375 0 \n",
|
|
"L 18.3125 0 \n",
|
|
"L 43.21875 64.59375 \n",
|
|
"L 8.203125 64.59375 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-55\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(13.5625 274.695596)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-55\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_5\">\n",
|
|
" <g id=\"line2d_8\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"226.915795\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_8\">\n",
|
|
" <!-- 100 -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 12.40625 8.296875 \n",
|
|
"L 28.515625 8.296875 \n",
|
|
"L 28.515625 63.921875 \n",
|
|
"L 10.984375 60.40625 \n",
|
|
"L 10.984375 69.390625 \n",
|
|
"L 28.421875 72.90625 \n",
|
|
"L 38.28125 72.90625 \n",
|
|
"L 38.28125 8.296875 \n",
|
|
"L 54.390625 8.296875 \n",
|
|
"L 54.390625 0 \n",
|
|
"L 12.40625 0 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-49\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(7.2 230.715014)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
|
|
" <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_6\">\n",
|
|
" <g id=\"line2d_9\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"182.935212\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_9\">\n",
|
|
" <!-- 125 -->\n",
|
|
" <g transform=\"translate(7.2 186.734431)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-50\"/>\n",
|
|
" <use x=\"127.246094\" xlink:href=\"#DejaVuSans-53\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_7\">\n",
|
|
" <g id=\"line2d_10\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"138.95463\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_10\">\n",
|
|
" <!-- 150 -->\n",
|
|
" <g transform=\"translate(7.2 142.753849)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n",
|
|
" <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_8\">\n",
|
|
" <g id=\"line2d_11\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"94.974047\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_11\">\n",
|
|
" <!-- 175 -->\n",
|
|
" <g transform=\"translate(7.2 98.773266)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-55\"/>\n",
|
|
" <use x=\"127.246094\" xlink:href=\"#DejaVuSans-53\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_9\">\n",
|
|
" <g id=\"line2d_12\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#mff1e083e3c\" y=\"50.993465\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_12\">\n",
|
|
" <!-- 200 -->\n",
|
|
" <g transform=\"translate(7.2 54.792684)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
|
|
" <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"line2d_13\">\n",
|
|
" <path clip-path=\"url(#p7b6b825212)\" d=\"M 0 0 \n",
|
|
"\" style=\"fill:none;stroke:#424242;stroke-linecap:square;stroke-width:2.7;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"line2d_14\">\n",
|
|
" <path clip-path=\"url(#p7b6b825212)\" d=\"M 0 0 \n",
|
|
"\" style=\"fill:none;stroke:#424242;stroke-linecap:square;stroke-width:2.7;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"line2d_15\">\n",
|
|
" <path clip-path=\"url(#p7b6b825212)\" d=\"M 0 0 \n",
|
|
"\" style=\"fill:none;stroke:#424242;stroke-linecap:square;stroke-width:2.7;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_6\">\n",
|
|
" <path d=\"M 33.2875 402.838125 \n",
|
|
"L 33.2875 22.318125 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_7\">\n",
|
|
" <path d=\"M 591.2875 402.838125 \n",
|
|
"L 591.2875 22.318125 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_8\">\n",
|
|
" <path d=\"M 33.2875 402.838125 \n",
|
|
"L 591.2875 402.838125 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_9\">\n",
|
|
" <path d=\"M 33.2875 22.318125 \n",
|
|
"L 591.2875 22.318125 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_13\">\n",
|
|
" <!-- Top genres -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M -0.296875 72.90625 \n",
|
|
"L 61.375 72.90625 \n",
|
|
"L 61.375 64.59375 \n",
|
|
"L 35.5 64.59375 \n",
|
|
"L 35.5 0 \n",
|
|
"L 25.59375 0 \n",
|
|
"L 25.59375 64.59375 \n",
|
|
"L -0.296875 64.59375 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-84\"/>\n",
|
|
" <path d=\"M 44.28125 53.078125 \n",
|
|
"L 44.28125 44.578125 \n",
|
|
"Q 40.484375 46.53125 36.375 47.5 \n",
|
|
"Q 32.28125 48.484375 27.875 48.484375 \n",
|
|
"Q 21.1875 48.484375 17.84375 46.4375 \n",
|
|
"Q 14.5 44.390625 14.5 40.28125 \n",
|
|
"Q 14.5 37.15625 16.890625 35.375 \n",
|
|
"Q 19.28125 33.59375 26.515625 31.984375 \n",
|
|
"L 29.59375 31.296875 \n",
|
|
"Q 39.15625 29.25 43.1875 25.515625 \n",
|
|
"Q 47.21875 21.78125 47.21875 15.09375 \n",
|
|
"Q 47.21875 7.46875 41.1875 3.015625 \n",
|
|
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
|
|
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
|
|
"Q 10.6875 0.296875 5.421875 2 \n",
|
|
"L 5.421875 11.28125 \n",
|
|
"Q 10.40625 8.6875 15.234375 7.390625 \n",
|
|
"Q 20.0625 6.109375 24.8125 6.109375 \n",
|
|
"Q 31.15625 6.109375 34.5625 8.28125 \n",
|
|
"Q 37.984375 10.453125 37.984375 14.40625 \n",
|
|
"Q 37.984375 18.0625 35.515625 20.015625 \n",
|
|
"Q 33.0625 21.96875 24.703125 23.78125 \n",
|
|
"L 21.578125 24.515625 \n",
|
|
"Q 13.234375 26.265625 9.515625 29.90625 \n",
|
|
"Q 5.8125 33.546875 5.8125 39.890625 \n",
|
|
"Q 5.8125 47.609375 11.28125 51.796875 \n",
|
|
"Q 16.75 56 26.8125 56 \n",
|
|
"Q 31.78125 56 36.171875 55.265625 \n",
|
|
"Q 40.578125 54.546875 44.28125 53.078125 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-115\"/>\n",
|
|
" </defs>\n",
|
|
" <g style=\"fill:#0000ff;\" transform=\"translate(278.665938 16.318125)scale(0.12 -0.12)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-84\"/>\n",
|
|
" <use x=\"60.818359\" xlink:href=\"#DejaVuSans-111\"/>\n",
|
|
" <use x=\"122\" xlink:href=\"#DejaVuSans-112\"/>\n",
|
|
" <use x=\"185.476562\" xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"217.263672\" xlink:href=\"#DejaVuSans-103\"/>\n",
|
|
" <use x=\"280.740234\" xlink:href=\"#DejaVuSans-101\"/>\n",
|
|
" <use x=\"342.263672\" xlink:href=\"#DejaVuSans-110\"/>\n",
|
|
" <use x=\"405.642578\" xlink:href=\"#DejaVuSans-114\"/>\n",
|
|
" <use x=\"446.724609\" xlink:href=\"#DejaVuSans-101\"/>\n",
|
|
" <use x=\"508.248047\" xlink:href=\"#DejaVuSans-115\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <defs>\n",
|
|
" <clipPath id=\"p7b6b825212\">\n",
|
|
" <rect height=\"380.52\" width=\"558\" x=\"33.2875\" y=\"22.318125\"/>\n",
|
|
" </clipPath>\n",
|
|
" </defs>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 720x504 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"df = df[(df['artist_top_genre'] == 'afro dancehall') | (df['artist_top_genre'] == 'afropop') | (df['artist_top_genre'] == 'nigerian pop')]\n",
|
|
"df = df[(df['popularity'] > 0)]\n",
|
|
"top = df['artist_top_genre'].value_counts()\n",
|
|
"plt.figure(figsize=(10,7))\n",
|
|
"sns.barplot(x=top.index,y=top.values)\n",
|
|
"plt.xticks(rotation=45)\n",
|
|
"plt.title('Top genres',color = 'blue')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>name</th>\n",
|
|
" <th>album</th>\n",
|
|
" <th>artist</th>\n",
|
|
" <th>artist_top_genre</th>\n",
|
|
" <th>release_date</th>\n",
|
|
" <th>length</th>\n",
|
|
" <th>popularity</th>\n",
|
|
" <th>danceability</th>\n",
|
|
" <th>acousticness</th>\n",
|
|
" <th>energy</th>\n",
|
|
" <th>instrumentalness</th>\n",
|
|
" <th>liveness</th>\n",
|
|
" <th>loudness</th>\n",
|
|
" <th>speechiness</th>\n",
|
|
" <th>tempo</th>\n",
|
|
" <th>time_signature</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>shuga rush</td>\n",
|
|
" <td>EVERYTHING YOU HEARD IS TRUE</td>\n",
|
|
" <td>Odunsi (The Engine)</td>\n",
|
|
" <td>afropop</td>\n",
|
|
" <td>2020</td>\n",
|
|
" <td>89488</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>0.710</td>\n",
|
|
" <td>0.0822</td>\n",
|
|
" <td>0.683</td>\n",
|
|
" <td>0.000169</td>\n",
|
|
" <td>0.1010</td>\n",
|
|
" <td>-5.640</td>\n",
|
|
" <td>0.3600</td>\n",
|
|
" <td>129.993</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>Confident / Feeling Cool</td>\n",
|
|
" <td>Enjoy Your Life</td>\n",
|
|
" <td>Lady Donli</td>\n",
|
|
" <td>nigerian pop</td>\n",
|
|
" <td>2019</td>\n",
|
|
" <td>175135</td>\n",
|
|
" <td>14</td>\n",
|
|
" <td>0.894</td>\n",
|
|
" <td>0.7980</td>\n",
|
|
" <td>0.611</td>\n",
|
|
" <td>0.000187</td>\n",
|
|
" <td>0.0964</td>\n",
|
|
" <td>-4.961</td>\n",
|
|
" <td>0.1130</td>\n",
|
|
" <td>111.087</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>wanted you</td>\n",
|
|
" <td>rare.</td>\n",
|
|
" <td>Odunsi (The Engine)</td>\n",
|
|
" <td>afropop</td>\n",
|
|
" <td>2018</td>\n",
|
|
" <td>152049</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0.702</td>\n",
|
|
" <td>0.1160</td>\n",
|
|
" <td>0.833</td>\n",
|
|
" <td>0.910000</td>\n",
|
|
" <td>0.3480</td>\n",
|
|
" <td>-6.044</td>\n",
|
|
" <td>0.0447</td>\n",
|
|
" <td>105.115</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>Kasala</td>\n",
|
|
" <td>Pioneers</td>\n",
|
|
" <td>DRB Lasgidi</td>\n",
|
|
" <td>nigerian pop</td>\n",
|
|
" <td>2020</td>\n",
|
|
" <td>184800</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0.803</td>\n",
|
|
" <td>0.1270</td>\n",
|
|
" <td>0.525</td>\n",
|
|
" <td>0.000007</td>\n",
|
|
" <td>0.1290</td>\n",
|
|
" <td>-10.034</td>\n",
|
|
" <td>0.1970</td>\n",
|
|
" <td>100.103</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>Pull Up</td>\n",
|
|
" <td>Everything Pretty</td>\n",
|
|
" <td>prettyboydo</td>\n",
|
|
" <td>nigerian pop</td>\n",
|
|
" <td>2018</td>\n",
|
|
" <td>202648</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0.818</td>\n",
|
|
" <td>0.4520</td>\n",
|
|
" <td>0.587</td>\n",
|
|
" <td>0.004490</td>\n",
|
|
" <td>0.5900</td>\n",
|
|
" <td>-9.840</td>\n",
|
|
" <td>0.1990</td>\n",
|
|
" <td>95.842</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" name album \\\n",
|
|
"1 shuga rush EVERYTHING YOU HEARD IS TRUE \n",
|
|
"3 Confident / Feeling Cool Enjoy Your Life \n",
|
|
"4 wanted you rare. \n",
|
|
"5 Kasala Pioneers \n",
|
|
"6 Pull Up Everything Pretty \n",
|
|
"\n",
|
|
" artist artist_top_genre release_date length popularity \\\n",
|
|
"1 Odunsi (The Engine) afropop 2020 89488 30 \n",
|
|
"3 Lady Donli nigerian pop 2019 175135 14 \n",
|
|
"4 Odunsi (The Engine) afropop 2018 152049 25 \n",
|
|
"5 DRB Lasgidi nigerian pop 2020 184800 26 \n",
|
|
"6 prettyboydo nigerian pop 2018 202648 29 \n",
|
|
"\n",
|
|
" danceability acousticness energy instrumentalness liveness loudness \\\n",
|
|
"1 0.710 0.0822 0.683 0.000169 0.1010 -5.640 \n",
|
|
"3 0.894 0.7980 0.611 0.000187 0.0964 -4.961 \n",
|
|
"4 0.702 0.1160 0.833 0.910000 0.3480 -6.044 \n",
|
|
"5 0.803 0.1270 0.525 0.000007 0.1290 -10.034 \n",
|
|
"6 0.818 0.4520 0.587 0.004490 0.5900 -9.840 \n",
|
|
"\n",
|
|
" speechiness tempo time_signature \n",
|
|
"1 0.3600 129.993 3 \n",
|
|
"3 0.1130 111.087 4 \n",
|
|
"4 0.0447 105.115 4 \n",
|
|
"5 0.1970 100.103 4 \n",
|
|
"6 0.1990 95.842 4 "
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"df.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Apply K-Means Clustering to Nigerian Music Features\n",
|
|
"\n",
|
|
"from sklearn.cluster import KMeans\n",
|
|
"from sklearn.preprocessing import StandardScaler\n",
|
|
"\n",
|
|
"# Select features for clustering\n",
|
|
"features = df[['tempo', 'danceability', 'energy']]\n",
|
|
"\n",
|
|
"# Standardize features\n",
|
|
"scaler = StandardScaler()\n",
|
|
"scaled_features = scaler.fit_transform(features)\n",
|
|
"\n",
|
|
"# Train KMeans\n",
|
|
"kmeans = KMeans(n_clusters=3, random_state=42)\n",
|
|
"df['cluster'] = kmeans.fit_predict(scaled_features)\n",
|
|
"\n",
|
|
"# Plot the clusters\n",
|
|
"plt.figure(figsize=(10, 6))\n",
|
|
"sns.scatterplot(x=scaled_features[:, 0], y=scaled_features[:, 1], hue=df['cluster'], palette='viridis')\n",
|
|
"plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], \n",
|
|
" s=200, c='red', marker='X', label='Centroids')\n",
|
|
"plt.title(\"K-Means Clustering of Nigerian Music\")\n",
|
|
"plt.xlabel(\"Tempo (standardized)\")\n",
|
|
"plt.ylabel(\"Danceability (standardized)\")\n",
|
|
"plt.legend()\n",
|
|
"plt.grid(True)\n",
|
|
"plt.show()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"K-Means Clustering on Nigerian Music\n",
|
|
"\n",
|
|
"In this section, we apply K-Means clustering on Nigerian music using features like tempo, danceability, and energy. The resulting clusters represent different types of music styles based on these characteristics.\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3.7.0 64-bit ('3.7')",
|
|
"name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7"
|
|
},
|
|
"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.7.0"
|
|
},
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
|
|
}
|
|
},
|
|
"orig_nbformat": 2
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|