Michaël Defferrard, Kirell Benzi, Pierre Vandergheynst, Xavier Bresson, EPFL LTS2.
All numbers and figures which appear in the paper and much more.
%matplotlib inline
import IPython.display as ipd
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import MultiLabelBinarizer
import utils
sns.set_context("notebook", font_scale=1.5)
plt.rcParams['figure.figsize'] = (17, 5)
tracks = utils.load('data/fma_metadata/tracks.csv')
genres = utils.load('data/fma_metadata/genres.csv')
features = utils.load('data/fma_metadata/features.csv')
echonest = utils.load('data/fma_metadata/echonest.csv')
np.testing.assert_array_equal(features.index, tracks.index)
assert echonest.index.isin(tracks.index).all()
tracks.shape, genres.shape, features.shape, echonest.shape
((106574, 52), (163, 4), (106574, 518), (13129, 249))
print('{} tracks, {} artists, {} albums, {} genres'.format(
len(tracks), len(tracks['artist', 'id'].unique()),
len(tracks['album', 'id'].unique()),
sum(genres['#tracks'] > 0)))
mean_duration = tracks['track', 'duration'].mean()
print('track duration: {:.0f} days total, {:.0f} seconds average'.format(
sum(tracks['track', 'duration']) / 3600 / 24,
mean_duration))
106574 tracks, 16341 artists, 14854 albums, 161 genres track duration: 343 days total, 278 seconds average
dimensionality = mean_duration * 44000 * 2
print('sample dimensionality: {:.1e}'.format(dimensionality))
print('total size, i.e. number of audio samples: {:.1e}'.format(dimensionality * len(tracks)))
sample dimensionality: 2.4e+07 total size, i.e. number of audio samples: 2.6e+12
for subset in tracks['set', 'subset'].unique():
indicator = tracks['set', 'subset'] <= subset
print('{:6} {:6} tracks {:.1f} days'.format(
subset, sum(indicator), sum(indicator) * 30 / 3600 / 24))
small 8000 tracks 2.8 days medium 25000 tracks 8.7 days large 106574 tracks 37.0 days
print('{} deleted tracks (largest track_id is {})'.format(tracks.index.max() - len(tracks), tracks.index.max()))
print('First track: {}'.format(tracks['track', 'date_created'].min()))
d = pd.DataFrame(tracks.index, index=tracks['track', 'date_created'].values)
d['indicator'] = 1
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
d['track_id'].plot(ax=ax1)
d['indicator'].cumsum().plot(ax=ax1)
ax1.set_ylabel('#tracks')
ax1.set_ylim(0, 160000)
(d['indicator'] * -100).plot(ax=ax2, style='r') # needed for no apparent reason
color = sns.color_palette('deep', 3)[2]
d['indicator'].resample('2M').sum().fillna(0).plot(ax=ax2, style='--', color=color)
ax2.set_ylabel('#tracks added')
ax2.set_ylim(500, 4500)
ax2.set_ylim(0, 4000)
ax2.grid(False)
lns = ax1.get_lines() + [ax2.get_lines()[1]]
ax1.legend(lns, ['largest track id', '#tracks still present', '#tracks added per 2 months'], loc='lower right')
plt.savefig('figures/growth.pdf')
48746 deleted tracks (largest track_id is 155320) First track: 2008-11-25 17:49:06
SPLITS = ['training', 'validation', 'test']
SUBSETS = ['small', 'medium', 'large']
print('subset #train #val #test val_ratio test_ratio')
for subset in SUBSETS:
counts = [sum((tracks['set', 'split'] == split) & (tracks['set', 'subset'] <= subset)) for split in SPLITS]
ratios = np.array(counts[0] / counts[1:])
print('{:8s} {:7d} {:7d} {:7d} {:8.2f} {:9.2f}'.format(subset, *counts, *ratios))
subset #train #val #test val_ratio test_ratio small 6400 800 800 8.00 8.00 medium 19922 2505 2573 7.95 7.74 large 84353 10958 11263 7.70 7.49
for subset in ['small', 'medium']:
subset = tracks['set', 'subset'] <= subset
d = genres.reset_index().set_index('title')
d = d.loc[tracks.loc[subset, ('track', 'genre_top')].unique()]
for split in SPLITS:
b = tracks['set', 'split'] == split
d['#' + split] = tracks.loc[subset & b, ('track', 'genre_top')].value_counts()
d['val_ratio'] = d['#training'] / d['#validation']
d['test_ratio'] = d['#training'] / d['#test']
ipd.display(d.sort_values('#training', ascending=False))
genre_id | #tracks | parent | top_level | #training | #validation | #test | val_ratio | test_ratio | |
---|---|---|---|---|---|---|---|---|---|
title | |||||||||
Hip-Hop | 21 | 8389 | 0 | 21 | 800 | 100 | 100 | 8.0 | 8.0 |
Pop | 10 | 13845 | 0 | 10 | 800 | 100 | 100 | 8.0 | 8.0 |
Folk | 17 | 12706 | 0 | 17 | 800 | 100 | 100 | 8.0 | 8.0 |
Experimental | 38 | 38154 | 0 | 38 | 800 | 100 | 100 | 8.0 | 8.0 |
Rock | 12 | 32923 | 0 | 12 | 800 | 100 | 100 | 8.0 | 8.0 |
International | 2 | 5271 | 0 | 2 | 800 | 100 | 100 | 8.0 | 8.0 |
Electronic | 15 | 34413 | 0 | 15 | 800 | 100 | 100 | 8.0 | 8.0 |
Instrumental | 1235 | 14938 | 0 | 1235 | 800 | 100 | 100 | 8.0 | 8.0 |
genre_id | #tracks | parent | top_level | #training | #validation | #test | val_ratio | test_ratio | |
---|---|---|---|---|---|---|---|---|---|
title | |||||||||
Rock | 12 | 32923 | 0 | 12 | 5681 | 711 | 711 | 7.990155 | 7.990155 |
Electronic | 15 | 34413 | 0 | 15 | 5050 | 632 | 632 | 7.990506 | 7.990506 |
Experimental | 38 | 38154 | 0 | 38 | 1801 | 225 | 225 | 8.004444 | 8.004444 |
Hip-Hop | 21 | 8389 | 0 | 21 | 1761 | 220 | 220 | 8.004545 | 8.004545 |
Folk | 17 | 12706 | 0 | 17 | 1215 | 152 | 152 | 7.993421 | 7.993421 |
Instrumental | 1235 | 14938 | 0 | 1235 | 1045 | 131 | 174 | 7.977099 | 6.005747 |
Pop | 10 | 13845 | 0 | 10 | 945 | 122 | 119 | 7.745902 | 7.941176 |
International | 2 | 5271 | 0 | 2 | 814 | 102 | 102 | 7.980392 | 7.980392 |
Classical | 5 | 4106 | 0 | 5 | 495 | 62 | 62 | 7.983871 | 7.983871 |
Old-Time / Historic | 8 | 868 | 0 | 8 | 408 | 51 | 51 | 8.000000 | 8.000000 |
Jazz | 4 | 4126 | 0 | 4 | 306 | 39 | 39 | 7.846154 | 7.846154 |
Country | 9 | 1987 | 0 | 9 | 142 | 18 | 18 | 7.888889 | 7.888889 |
Soul-RnB | 14 | 1499 | 0 | 14 | 94 | 18 | 42 | 5.222222 | 2.238095 |
Spoken | 20 | 1876 | 0 | 20 | 94 | 12 | 12 | 7.833333 | 7.833333 |
Blues | 3 | 1752 | 0 | 3 | 58 | 8 | 8 | 7.250000 | 7.250000 |
Easy Listening | 13 | 730 | 0 | 13 | 13 | 2 | 6 | 6.500000 | 2.166667 |
d = pd.DataFrame(index=genres.index, columns=SPLITS)
for genre in genres.index:
b = tracks['track', 'genres_all'].map(lambda genres: genre in genres)
d.loc[genre] = tracks.loc[b, ('set', 'split')].value_counts()
d['val_ratio'] = d['training'] / d['validation']
d['test_ratio'] = d['training'] / d['test']
d.sort_values('training', ascending=False, inplace=True)
ipd.display(d.head(10))
ipd.display(d.tail(10))
training | validation | test | val_ratio | test_ratio | |
---|---|---|---|---|---|
genre_id | |||||
38 | 29691 | 4511 | 3952 | 6.58191 | 7.5129 |
15 | 27313 | 3463 | 3637 | 7.88709 | 7.50976 |
12 | 25819 | 3690 | 3414 | 6.99702 | 7.56268 |
1235 | 11785 | 1474 | 1679 | 7.99525 | 7.01906 |
10 | 11001 | 1376 | 1468 | 7.99491 | 7.49387 |
17 | 9960 | 1245 | 1501 | 8 | 6.63558 |
25 | 7366 | 974 | 921 | 7.56263 | 7.99783 |
1 | 6865 | 970 | 858 | 7.07732 | 8.00117 |
21 | 6426 | 961 | 1002 | 6.68678 | 6.41317 |
107 | 5764 | 721 | 721 | 7.99445 | 7.99445 |
training | validation | test | val_ratio | test_ratio | |
---|---|---|---|---|---|
genre_id | |||||
444 | 10 | 7 | 8 | 1.42857 | 1.25 |
374 | 9 | NaN | NaN | NaN | NaN |
808 | 8 | 4 | NaN | 2 | NaN |
465 | 4 | 4 | 10 | 1 | 0.4 |
173 | 3 | NaN | 1 | NaN | 3 |
174 | 2 | 1 | 14 | 2 | 0.142857 |
377 | 1 | NaN | NaN | NaN | NaN |
493 | 1 | 1 | 2 | 1 | 0.5 |
175 | NaN | NaN | NaN | NaN | NaN |
178 | NaN | NaN | NaN | NaN | NaN |
def isnull(column, df=tracks):
if column[1] in ['tags', 'genres', 'genres_all']:
return df[column].apply(lambda x: len(x) == 0)
elif df.dtypes[column] == np.int:
return df[column] <= 0
else:
return df[column].isnull()
def count(series):
col0 = series.name[0]
df = tracks if col0 == 'track' else tracks.drop_duplicates((col0, 'id'))
n = (~isnull(series.name, df)).sum()
p = n / len(df) * 100
return n, p
# Columns / metadata usage across dataset.
d = pd.DataFrame(index=tracks.columns.drop('set'), columns=['n', 'p'])
d = d.apply(count, axis=1)
d['n'] = d['n'].astype(np.int)
d
n | p | ||
---|---|---|---|
album | comments | 1842 | 12.400700 |
date_created | 14395 | 96.909923 | |
date_released | 9450 | 63.619227 | |
engineer | 2328 | 15.672546 | |
favorites | 5678 | 38.225394 | |
id | 14853 | 99.993268 | |
information | 11305 | 76.107446 | |
listens | 14395 | 96.909923 | |
producer | 2603 | 17.523899 | |
tags | 2659 | 17.900902 | |
title | 14853 | 99.993268 | |
tracks | 14247 | 95.913559 | |
type | 13940 | 93.846775 | |
artist | active_year_begin | 1254 | 7.673949 |
active_year_end | 321 | 1.964384 | |
associated_labels | 862 | 5.275075 | |
bio | 6140 | 37.574200 | |
comments | 1804 | 11.039716 | |
date_created | 16109 | 98.580258 | |
favorites | 7794 | 47.695979 | |
id | 16341 | 100.000000 | |
latitude | 3836 | 23.474696 | |
location | 6033 | 36.919405 | |
longitude | 3836 | 23.474696 | |
members | 4069 | 24.900557 | |
name | 16341 | 100.000000 | |
related_projects | 762 | 4.663117 | |
tags | 15780 | 96.566918 | |
website | 6946 | 42.506579 | |
wikipedia_page | 392 | 2.398874 | |
track | bit_rate | 106469 | 99.901477 |
comments | 2151 | 2.018316 | |
composer | 3835 | 3.598439 | |
date_created | 106574 | 100.000000 | |
date_recorded | 6159 | 5.779083 | |
duration | 106558 | 99.984987 | |
favorites | 64595 | 60.610468 | |
genre_top | 49598 | 46.538555 | |
genres | 104343 | 97.906619 | |
genres_all | 104343 | 97.906619 | |
information | 2509 | 2.354233 | |
interest | 106574 | 100.000000 | |
language_code | 15024 | 14.097247 | |
license | 106487 | 99.918367 | |
listens | 106573 | 99.999062 | |
lyricist | 481 | 0.451330 | |
number | 98680 | 92.592940 | |
publisher | 1434 | 1.345544 | |
tags | 23496 | 22.046653 | |
title | 106573 | 99.999062 |
# Excerpt as example in the paper.
columns = [
('track', 'title'),
('track', 'genres_all'),
('track', 'genre_top'),
('track', 'duration'),
('track', 'listens'),
('album', 'title'),
('album', 'listens'),
('album', 'tags'),
('artist', 'name'),
('artist', 'location'),
]
non_null = ~isnull(columns[0])
for column in columns[1:]:
non_null &= ~isnull(column)
tids = np.random.RandomState(42).permutation(tracks.index[non_null])[:8]
tracks.loc[tids, columns].head()
#tracks.loc[tids, columns].to_latex('figures/tracks.tex', formatters={
# ('artist', 'longitude'): '{:,.1f}'.format,
# ('artist', 'latitude'): '{:,.1f}'.format,
#})
track | album | artist | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
title | genres_all | genre_top | duration | listens | title | listens | tags | name | location | |
track_id | ||||||||||
150073 | Welcome to Asia | [2, 79] | International | 81 | 683 | Reprise | 4091 | [world music, dubtronica, fusion, dub] | DubRaJah | Russia |
140943 | Sleepless Nights | [322, 5] | Classical | 246 | 1777 | Creative Commons Vol. 7 | 28900 | [classical, alternate, soundtrack, piano, cont... | Dexter Britain | United Kingdom |
64604 | i dont want to die alone | [32, 38, 456] | Experimental | 138 | 830 | Summer Gut String | 7408 | [improvised, minimalist, noise, field recordin... | Buildings and Mountains | Oneonta, NY |
23500 | A Life In A Day | [236, 286, 15] | Electronic | 264 | 1149 | A Life in a Day | 6691 | [idm, candlestick, romanian, candle, candlesti... | Candlestickmaker | Romania |
131150 | Yeti-Bo-Betty | [25, 12, 85] | Rock | 124 | 183 | No Life After Crypts | 3594 | [richmond, fredericksburg, trash rock, virgini... | The Crypts! | Fredericksburg, VA 22401 |
tracks['track', 'license'].value_counts().head(10)
Attribution-Noncommercial-Share Alike 3.0 United States 19250 Attribution-NonCommercial-NoDerivatives (aka Music Sharing) 3.0 International 17732 Attribution-NonCommercial-ShareAlike 3.0 International 15260 Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 12133 Attribution-Noncommercial-No Derivative Works 3.0 United States 10584 Attribution-NonCommercial-ShareAlike 6907 Attribution 4991 Attribution-NonCommercial 3.0 International 3570 Attribution-NonCommercial 3409 Attribution-ShareAlike 1549 Name: (track, license), dtype: int64
tracks['track', 'language_code'].value_counts().head(10)
en 14255 es 204 fr 191 pt 81 de 68 ru 30 it 28 tr 25 sr 23 pl 12 Name: (track, language_code), dtype: int64
durations = tracks['track', 'duration']
plt.figure(figsize=(10, 4)) # Poster: (7, 3)
p = sns.distplot(durations[durations.values < 800], kde=False, rug=False, color='k', hist_kws=dict(alpha=0.4))
p.set_xlabel('duration [seconds]')
p.set_ylabel('#tracks')
p.set_xlim(0, 800) # Poster: 500
plt.tight_layout()
plt.savefig('figures/duration_distribution.pdf')
durations.describe()
count 106574.000000 mean 277.849100 std 305.518553 min 0.000000 25% 149.000000 50% 216.000000 75% 305.000000 max 18350.000000 Name: (track, duration), dtype: float64
# Uncommon bit rates are VBR encodings.
print('Common bit rates: {}'.format(tracks['track', 'bit_rate'].value_counts().head(5).index.tolist()))
print('Average bit rate: {:.0f} kbit/s'.format(tracks['track', 'bit_rate'].mean()/1000))
p = sns.distplot(tracks['track', 'bit_rate'], kde=False, rug=False)
p.set_xlabel('bit rate')
p.set_ylabel('#tracks');
Common bit rates: [320000, 256000, 192000, 128000, 160000] Average bit rate: 263 kbit/s
# Tags.
d1 = tracks['track', 'tags'].apply(len)
d2 = tracks.drop_duplicates(('album', 'id'))
d2 = d2['album', 'tags'].apply(len)
d3 = tracks.drop_duplicates(('artist', 'id'))
d3 = d3['artist', 'tags'].apply(len) - 1
labels = ['track', 'album', 'artist']
for l, d in zip(labels, [d1, d2, d3]):
print('{}: from {} to {} tags'.format(l, max(d.min(), 0), d.max()))
MAX = 13 # Poster: 11
fig, ax1 = plt.subplots(figsize=(10, 4)) # Poster: (7, 3)
ax2 = ax1.twinx()
ax1.hist(d1, bins=np.arange(MAX)+0.25, rwidth=0.2, color='C0', label=labels[0])
ax2.hist(d2, bins=np.arange(MAX)+0.50, rwidth=0.2, color='C1', label=labels[1])
ax2.hist(d3, bins=np.arange(MAX)+0.75, rwidth=0.2, color='C2', label=labels[2])
ax1.set_xlabel('#tags')
ax1.set_ylabel('#tracks')
ax2.set_ylabel('#artists / #albums')
ax1.set_xlim(0.5, MAX-0.5)
ax1.set_xticks(range(1, MAX))
ax1.set_ylim(0, 5000)
ax2.set_ylim(0, 500)
ax1.legend(loc='upper center')
ax2.legend(loc='upper right')
ax2.grid(False)
fig.tight_layout()
fig.savefig('figures/tag_distribution.pdf')
track: from 0 to 150 tags album: from 0 to 150 tags artist: from 0 to 55 tags
# One artist tag is often the artist name.
col = 'artist'
d = tracks.drop_duplicates((col, 'id'))
d.loc[d[col, 'tags'].apply(len) > 0, [('artist', 'name'), (col, 'tags')]].head()
artist | ||
---|---|---|
name | tags | |
track_id | ||
2 | AWOL | [awol] |
10 | Kurt Vile | [philly, kurt vile] |
20 | Nicky Cook | [instrumentals, experimental pop, post punk, e... |
135 | Abominog | [abominog] |
137 | Airway | [airway] |
# Listens, favorites, comments.
def plot(col0, col1, maxval, subplot=None):
if col0 == 'track':
d = tracks['track']
if col0 in ['artist', 'album']:
d = tracks[col0].drop_duplicates('id')
if subplot:
plt.subplot(subplot)
d = d[col1]
p = sns.distplot(d[d.values < maxval], kde=False, color='k', hist_kws=dict(alpha=0.4))
p.set_xlim(-1, maxval)
p.set_xlabel('#' + col1)
p.set_ylabel('#' + col0 + 's')
plt.figure(figsize=(17, 10))
plot('track', 'listens', 10e3, 221)
plot('track', 'interest', 10e3, 222)
plot('track', 'favorites', 100, 223)
plot('track', 'comments', 20, 224)
plt.figure(figsize=(17, 10))
plot('album', 'listens', 100e3, 221)
plot('album', 'favorites', 100, 223)
plot('album', 'comments', 20, 224)
plt.figure(figsize=(17, 5))
plot('artist', 'favorites', 100, 121)
plot('artist', 'comments', 20, 122)
# Same as above, formated for the paper.
plt.figure(figsize=(10, 4)) # Poster: (7, 3)
plot('album', 'listens', 40e3) # Poster 20e3
plt.tight_layout()
plt.savefig('figures/listens_distribution.pdf')
tracks['album', 'listens'].max()
3564243
# Most listened albums.
tracks['album'].groupby('id').first().sort_values('listens', ascending=False).head(10)
comments | date_created | date_released | engineer | favorites | information | listens | producer | tags | title | tracks | type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
id | ||||||||||||
13010 | 53 | 2012-12-06 16:45:52 | 2012-12-12 | NaN | 11 | <p><a href="http://wfmu.org/" target="_blank">... | 3564243 | NaN | [music is a belief, chary, nishad, uju, ibiene... | Entries | 200 | Album |
14586 | 10 | 2013-07-03 11:51:03 | 2013-06-28 | NaN | 55 | <p>29 funky chiptunes from the soundtrack of "... | 1553769 | NaN | [] | Nameless: The Hackers RPG Soundtrack | 29 | Album |
15736 | 13 | 2013-12-30 16:53:43 | 2014-01-02 | NaN | 60 | <p>Zabriskie’s move toward the likes of Cage, ... | 1363291 | NaN | [piano] | Cylinders | 18 | Album |
9870 | 6 | 2011-08-17 15:18:08 | NaT | NaN | 31 | <p>Jason Shaw's music is a great resource for ... | 1282752 | NaN | [1outro, tracks to sync, piano, soft, strings] | Audionautix: Acoustic | 40 | Album |
9615 | 1 | 2011-07-15 11:52:14 | NaT | NaN | 17 | <p>A collection of classical tracks recorded b... | 1193803 | NaN | [1dance, erik satie, strauss, satie, beethoven... | Classical Sampler | 59 | Album |
10052 | 5 | 2011-09-14 19:41:50 | 2009-09-22 | NaN | 25 | <p>Twenty-three improvised preludes for solo p... | 1013245 | NaN | [piano] | Preludes | 23 | Album |
11948 | 3 | 2012-06-17 23:19:50 | 2012-06-18 | NaN | 19 | NaN | 832311 | NaN | [electronic, new age, space, instrumental] | Reappear | 7 | Album |
10927 | 11 | 2012-01-25 21:36:45 | 2012-01-25 | NaN | 54 | NaN | 808928 | NaN | [piano, instrumental, melancholy] | Undercover Vampire Policeman | 8 | Album |
10490 | 0 | 2011-11-29 11:55:02 | 2011-12-01 | NaN | 10 | <p>DUBLAB “BONUS BEAT BLAST” – A CREATIVE COMM... | 808021 | NaN | [] | Bonus Beat Blast 2011 | 74 | Album |
20211 | 5 | 2016-03-28 16:57:28 | NaT | NaN | 20 | <p>Compositions for commercial use. Uplifiting... | 795319 | NaN | [] | Commercial | 36 | Album |
def plot(col0, col1):
if col0 == 'track':
d = tracks['track']
if col0 in ['artist', 'album']:
d = tracks[col0].drop_duplicates('id')
d = pd.Series(1, index=d[col1])
d.resample('A').sum().fillna(0).plot()
plt.figure()
plot('track', 'date_recorded')
plot('album', 'date_released')
plt.figure()
plot('artist', 'active_year_begin')
plot('artist', 'active_year_end')
plt.figure()
plot('track', 'date_created')
plot('album', 'date_created')
plot('artist', 'date_created')
# Same as above, formated for the paper.
plt.figure(figsize=(5, 4))
d = tracks['album'].drop_duplicates('id')
d = pd.Series(1, index=d['date_released'])
d = d.resample('A').sum().fillna(0)
b = d.index >= pd.to_datetime(1990, format='%Y')
b &= d.index <= pd.to_datetime(2017, format='%Y')
d[b].plot(color='k')
plt.xlabel('release year')
plt.ylabel('#albums')
plt.tight_layout()
plt.savefig('figures/album_release_year.pdf')
d.index.min().year, d.index.max().year
(1902, 2021)
for effect in ['artist', 'album']:
d = tracks[effect, 'id'].value_counts()
ipd.display(d.head(5))
p = sns.distplot(d[(d.values < 50) & (d.values >= 0)], kde=False)
p.set_xlabel('#tracks per ' + effect);
p.set_ylabel('#' + effect + 's');
15891 745 7168 604 129 499 19461 416 2008 371 Name: (artist, id), dtype: int64
-1 1025 17509 310 2275 151 21841 150 13010 139 Name: (album, id), dtype: int64
counts = pd.Series(index=genres.loc[genres['parent'] == 0, 'title'].values, name='#artists')
for genre in counts.index:
counts[genre] = len(tracks.loc[tracks['track', 'genre_top'] == genre, ('artist', 'id')].unique())
counts.sort_values(ascending=False).plot.bar()
plt.ylabel('#artists');
a = set(tracks['track', 'genre_top'].unique().dropna())
b = set(genres.loc[genres['top_level'].unique(), 'title'].values)
assert a == b
print('{} top-level genres'.format(len(a)))
genres[genres['parent'] == 0].sort_values('#tracks', ascending=False)
16 top-level genres
#tracks | parent | title | top_level | |
---|---|---|---|---|
genre_id | ||||
38 | 38154 | 0 | Experimental | 38 |
15 | 34413 | 0 | Electronic | 15 |
12 | 32923 | 0 | Rock | 12 |
1235 | 14938 | 0 | Instrumental | 1235 |
10 | 13845 | 0 | Pop | 10 |
17 | 12706 | 0 | Folk | 17 |
21 | 8389 | 0 | Hip-Hop | 21 |
2 | 5271 | 0 | International | 2 |
4 | 4126 | 0 | Jazz | 4 |
5 | 4106 | 0 | Classical | 5 |
9 | 1987 | 0 | Country | 9 |
20 | 1876 | 0 | Spoken | 20 |
3 | 1752 | 0 | Blues | 3 |
14 | 1499 | 0 | Soul-RnB | 14 |
8 | 868 | 0 | Old-Time / Historic | 8 |
13 | 730 | 0 | Easy Listening | 13 |
Number of genres per track:
genres
: they have introduced a limit of 3 genres per track early on.genres_all
: more genres per track as all coarser genres in the hierarchy are included. E.g. an Indie-Rock song is counted as a Rock song too.# Genres per track.
labels = ['genres', 'genres_all'] #, 'genres_top']
d = [tracks['track', label].map(len) for label in labels]
labels = ['{}\nmax: {}'.format(label, d1.max()) for label, d1 in zip(labels, d)]
for l, d1 in zip(labels, d):
print('{} per track: from {} to {} tags'.format(l, d1.min(), d1.max()))
print('#tracks without genre: {}'.format((tracks['track', 'genres'].map(len) == 0).sum()))
MAX = 9
fig, ax = plt.subplots(figsize=(5, 4))
ax.hist(d, bins=np.arange(MAX)-0.5, label=labels)
ax.set_xlabel('#genres per track')
ax.set_ylabel('#tracks')
ax.set_xlim(-0.5, MAX-1.5)
ax.set_xticks(range(MAX-1))
ax.set_yticklabels(['0'] + ['{}0k'.format(i) for i in range(1, 6)])
ax.legend(loc='upper right')
fig.tight_layout()
fig.savefig('figures/genres_per_track.pdf')
genres max: 25 per track: from 0 to 25 tags genres_all max: 31 per track: from 0 to 31 tags #tracks without genre: 2231
# Number of tracks per genre (full).
d = genres[genres['#tracks'] > 2000].sort_values('#tracks', ascending=False) # Poster: 5000
plt.figure(figsize=(10, 4)) # Poster: (7, 4)
p = sns.barplot('title', '#tracks', data=d, color='k', alpha=0.4)
p.set_xlabel('')
p.set_ylabel('#tracks')
plt.xticks(rotation=90)
plt.tight_layout()
plt.savefig('figures/genre_distribution.pdf')
genres.loc[genres['#tracks'] > 0, '#tracks'].min(), genres['#tracks'].max()
(1, 38154)
# Number of tracks per top-level genre (medium).
d = tracks[tracks['set', 'subset'] <= 'medium']
d = d['track', 'genre_top'].value_counts()
plt.figure(figsize=(10, 4)) # Poster: (7, 4)
d.plot.bar(color='k', alpha=0.4)
plt.ylabel('#tracks')
plt.xlabel('')
plt.tight_layout()
plt.savefig('figures/genre_top_distribution.pdf')
d
Rock 7103 Electronic 6314 Experimental 2251 Hip-Hop 2201 Folk 1519 Instrumental 1350 Pop 1186 International 1018 Classical 619 Old-Time / Historic 510 Jazz 384 Country 178 Soul-RnB 154 Spoken 118 Blues 74 Easy Listening 21 Name: (track, genre_top), dtype: int64
g = utils.Genres(genres)
graph = g.create_tree([25, 31], 1)
ipd.Image(graph.create_png())
graph = g.create_tree(14)
graph.write_pdf('figures/genre_hierarchy.pdf');
roots = g.find_roots()
print('{} roots'.format(len(roots)))
graph = g.create_tree(roots)
graph.write_pdf('figures/genre_hierarchy.pdf');
16 roots
enc = MultiLabelBinarizer()
genres_indicator = enc.fit_transform(tracks['track', 'genres'])
genres_names = enc.classes_
genres_names = genres.loc[enc.classes_, 'title'].values
cross_correlation = genres_indicator.T @ genres_indicator
np.fill_diagonal(cross_correlation, 0)
plt.figure(figsize=(28, 28))
plt.imshow(np.log(cross_correlation))
plt.yticks(range(len(genres_names)), genres_names);
plt.xticks(range(len(genres_names)), genres_names, rotation=90);
/home/michael/.conda/envs/fma/lib/python3.6/site-packages/ipykernel_launcher.py:4: RuntimeWarning: divide by zero encountered in log after removing the cwd from sys.path.
cross_correlation = np.tril(cross_correlation, k=-1)
sort = np.argsort(cross_correlation.flatten())
N = 20
indices = np.unravel_index(sort[:-N:-1], cross_correlation.shape)
for i, j in zip(*indices):
print('{}: {} | {}'.format(cross_correlation[i, j], genres_names[i], genres_names[j]))
6771: Experimental | Electronic 6088: Experimental | Avant-Garde 4782: Electroacoustic | Experimental 4121: Experimental | Noise 2783: Instrumental | Soundtrack 2663: Ambient | Experimental 2555: Electroacoustic | Avant-Garde 2507: Musique Concrete | Experimental 2385: Improv | Experimental 2250: Ambient Electronic | Experimental 2230: IDM | Electronic 2183: Musique Concrete | Electroacoustic 2122: Experimental | Field Recordings 2099: Ambient | Electronic 2097: Noise | Electronic 2049: Musique Concrete | Avant-Garde 1888: Instrumental | Electronic 1838: Electroacoustic | Electronic 1834: Ambient Electronic | Electronic
Todo: e.g. audio features (echonest / librosa, spectrograms) to show diversity.
Todo: understand features by listening to segments who have them, e.g. http://musicinformationretrieval.com/feature_sonification.html.
features.head(5).style.format('{:.2f}')
feature | chroma_cens | chroma_cqt | chroma_stft | mfcc | rmse | spectral_bandwidth | spectral_centroid | spectral_contrast | spectral_rolloff | tonnetz | zcr | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
statistics | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | kurtosis | max | mean | median | min | skew | std | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
number | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 01 | 02 | 03 | 04 | 05 | 06 | 01 | 02 | 03 | 04 | 05 | 06 | 01 | 02 | 03 | 04 | 05 | 06 | 01 | 02 | 03 | 04 | 05 | 06 | 01 | 02 | 03 | 04 | 05 | 06 | 01 | 02 | 03 | 04 | 05 | 06 | 01 | 02 | 03 | 04 | 05 | 06 | 01 | 01 | 01 | 01 | 01 | 01 | 01 |
track_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | 7.18 | 5.23 | 0.25 | 1.35 | 1.48 | 0.53 | 1.48 | 2.69 | 0.87 | 1.34 | 1.35 | 1.24 | 0.69 | 0.57 | 0.60 | 0.63 | 0.57 | 0.44 | 0.49 | 0.50 | 0.57 | 0.58 | 0.62 | 0.59 | 0.47 | 0.37 | 0.24 | 0.23 | 0.22 | 0.22 | 0.23 | 0.25 | 0.20 | 0.18 | 0.20 | 0.32 | 0.48 | 0.39 | 0.25 | 0.24 | 0.23 | 0.23 | 0.23 | 0.25 | 0.20 | 0.17 | 0.20 | 0.31 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | -2.00 | -1.81 | -0.35 | -0.44 | -0.57 | -0.44 | -0.15 | -0.66 | 0.10 | 0.57 | 0.36 | -0.44 | 0.11 | 0.09 | 0.09 | 0.08 | 0.07 | 0.08 | 0.08 | 0.07 | 0.08 | 0.09 | 0.09 | 0.10 | 4.52 | 0.22 | -1.10 | -0.78 | -0.94 | -1.13 | -0.91 | -0.50 | -0.37 | -0.26 | -0.54 | 0.68 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.88 | 0.67 | 0.52 | 0.49 | 0.49 | 0.51 | 0.51 | 0.51 | 0.44 | 0.41 | 0.45 | 0.61 | 1.00 | 0.68 | 0.53 | 0.50 | 0.50 | 0.50 | 0.50 | 0.50 | 0.42 | 0.38 | 0.43 | 0.62 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | -2.24 | -0.62 | -0.02 | 0.05 | -0.02 | 0.06 | 0.07 | 0.19 | 0.38 | 0.52 | 0.34 | -0.52 | 0.23 | 0.23 | 0.27 | 0.24 | 0.24 | 0.27 | 0.25 | 0.24 | 0.22 | 0.23 | 0.24 | 0.20 | -1.01 | -0.63 | -0.23 | -0.12 | 0.00 | 1.22 | 0.97 | -0.88 | -0.47 | -0.52 | -0.63 | -0.90 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.70 | 0.45 | 0.36 | 0.35 | 0.34 | 0.27 | 0.29 | 0.43 | 0.38 | 0.38 | 0.42 | 0.53 | 0.81 | 0.41 | 0.29 | 0.28 | 0.27 | 0.18 | 0.23 | 0.37 | 0.31 | 0.31 | 0.37 | 0.51 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | -0.64 | 0.44 | 0.83 | 0.85 | 0.93 | 1.34 | 1.22 | 0.52 | 0.72 | 0.71 | 0.57 | 0.07 | 0.33 | 0.28 | 0.28 | 0.26 | 0.27 | 0.24 | 0.24 | 0.31 | 0.28 | 0.29 | 0.28 | 0.28 | 3.86 | 1.54 | 0.00 | 0.33 | 0.12 | -0.34 | -0.26 | 0.15 | 0.41 | -0.16 | -0.03 | 0.43 | -0.23 | -0.30 | -0.19 | -0.05 | -0.15 | -0.00 | 0.08 | 0.00 | 28.66 | 215.54 | 52.42 | 103.29 | 54.60 | 85.16 | 37.84 | 58.17 | 30.03 | 39.13 | 27.74 | 37.24 | 34.15 | 33.54 | 30.84 | 28.61 | 32.68 | 22.62 | 27.04 | 21.43 | -163.77 | 116.70 | -41.75 | 29.14 | -15.05 | 18.88 | -8.92 | 12.00 | -4.25 | 1.36 | -2.68 | -0.79 | -6.92 | -3.66 | 1.47 | 0.20 | 4.00 | -2.11 | 0.12 | -5.79 | -143.59 | 124.86 | -43.52 | 28.89 | -13.50 | 19.18 | -7.83 | 11.58 | -3.64 | 1.09 | -2.27 | -0.95 | -6.49 | -3.21 | 1.11 | 0.03 | 3.86 | -1.70 | 0.00 | -5.59 | -504.89 | -0.00 | -115.32 | -51.57 | -97.88 | -41.52 | -61.75 | -39.68 | -54.22 | -42.56 | -49.20 | -35.53 | -38.51 | -33.41 | -31.21 | -32.89 | -28.14 | -32.31 | -27.95 | -34.33 | -1.75 | -1.19 | 0.32 | 0.04 | -0.26 | 0.03 | -0.27 | 0.07 | -0.17 | -0.10 | -0.16 | 0.26 | -0.10 | 0.03 | 0.02 | -0.10 | 0.02 | -0.17 | 0.07 | -0.15 | 97.81 | 38.57 | 22.58 | 20.77 | 19.87 | 20.30 | 14.63 | 12.18 | 9.40 | 10.74 | 10.06 | 8.60 | 9.28 | 9.25 | 8.52 | 8.56 | 7.65 | 7.25 | 7.08 | 7.39 | 2.50 | 14.75 | 3.19 | 2.65 | 0.00 | 1.57 | 2.54 | 3.87 | 3451.11 | 1607.47 | 1618.85 | 0.00 | -0.88 | 436.81 | 2.41 | 5514.05 | 1639.58 | 1503.50 | 0.00 | 1.08 | 719.77 | 2.27 | 0.45 | 0.76 | 0.08 | 0.01 | 7.25 | 3.26 | 50.83 | 41.39 | 39.33 | 31.51 | 33.35 | 47.27 | 54.69 | 18.01 | 15.36 | 17.13 | 17.16 | 18.09 | 17.62 | 38.27 | 17.58 | 15.03 | 16.84 | 16.99 | 17.82 | 17.26 | 39.83 | 2.67 | 2.30 | 3.39 | 3.75 | 5.48 | 9.66 | 10.45 | 0.89 | 0.49 | 0.61 | 0.37 | 0.43 | 1.69 | -1.57 | 4.54 | 4.32 | 3.94 | 3.14 | 3.31 | 3.10 | 7.62 | 0.84 | 9410.01 | 3267.80 | 3143.85 | 0.00 | 0.35 | 1300.73 | 2.30 | 0.98 | 1.03 | 1.67 | 0.83 | 8.46 | 0.10 | 0.16 | 0.21 | 0.32 | 0.06 | 0.07 | -0.00 | 0.02 | 0.01 | 0.07 | 0.01 | 0.02 | -0.00 | 0.02 | 0.01 | 0.07 | 0.01 | 0.02 | -0.06 | -0.09 | -0.19 | -0.14 | -0.05 | -0.09 | 0.75 | 0.26 | 0.20 | 0.59 | -0.18 | -1.42 | 0.02 | 0.03 | 0.04 | 0.05 | 0.01 | 0.01 | 5.76 | 0.46 | 0.09 | 0.07 | 0.00 | 2.09 | 0.06 |
3 | 1.89 | 0.76 | 0.35 | 2.30 | 1.65 | 0.07 | 1.37 | 1.05 | 0.11 | 0.62 | 1.04 | 1.29 | 0.68 | 0.58 | 0.58 | 0.58 | 0.45 | 0.46 | 0.54 | 0.66 | 0.51 | 0.53 | 0.60 | 0.55 | 0.23 | 0.23 | 0.23 | 0.22 | 0.22 | 0.24 | 0.37 | 0.42 | 0.31 | 0.24 | 0.26 | 0.23 | 0.23 | 0.23 | 0.21 | 0.20 | 0.23 | 0.26 | 0.39 | 0.44 | 0.31 | 0.24 | 0.26 | 0.23 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.64 | 0.49 | 0.79 | 1.27 | -0.94 | -0.89 | -1.09 | -0.86 | -0.46 | 0.39 | 0.44 | 0.37 | 0.08 | 0.08 | 0.10 | 0.09 | 0.08 | 0.10 | 0.08 | 0.10 | 0.09 | 0.08 | 0.08 | 0.07 | -0.86 | -0.88 | -0.99 | -0.68 | -0.36 | -0.93 | 0.09 | 0.94 | -0.08 | -0.93 | -0.93 | -0.71 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.53 | 0.52 | 0.52 | 0.50 | 0.49 | 0.53 | 0.71 | 0.83 | 0.61 | 0.54 | 0.56 | 0.50 | 0.51 | 0.49 | 0.48 | 0.44 | 0.47 | 0.52 | 0.73 | 0.95 | 0.61 | 0.52 | 0.55 | 0.48 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.22 | 0.26 | 0.32 | 0.54 | 0.29 | 0.13 | -0.60 | -1.30 | -0.16 | 0.16 | 0.15 | 0.28 | 0.25 | 0.24 | 0.25 | 0.24 | 0.21 | 0.25 | 0.21 | 0.23 | 0.20 | 0.25 | 0.25 | 0.23 | -0.95 | -0.66 | -1.05 | -0.98 | -0.34 | -0.52 | -0.97 | -1.26 | -1.13 | -0.95 | -1.21 | -1.14 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.45 | 0.41 | 0.48 | 0.46 | 0.39 | 0.41 | 0.49 | 0.58 | 0.51 | 0.51 | 0.58 | 0.54 | 0.41 | 0.36 | 0.43 | 0.40 | 0.32 | 0.36 | 0.48 | 0.58 | 0.51 | 0.51 | 0.60 | 0.53 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.39 | 0.56 | 0.34 | 0.45 | 0.77 | 0.65 | 0.13 | -0.10 | 0.06 | 0.07 | -0.14 | 0.05 | 0.29 | 0.28 | 0.30 | 0.30 | 0.27 | 0.28 | 0.27 | 0.31 | 0.29 | 0.28 | 0.30 | 0.30 | 4.30 | 1.40 | 0.11 | -0.21 | 0.03 | -0.02 | 0.15 | 0.05 | 0.03 | -0.06 | 0.51 | 0.37 | 0.21 | 0.10 | 0.48 | 0.27 | 0.11 | 0.09 | 0.31 | 0.06 | 29.38 | 207.70 | 76.74 | 137.25 | 53.94 | 105.26 | 55.66 | 59.43 | 36.57 | 40.32 | 26.74 | 49.43 | 25.32 | 20.49 | 37.79 | 27.83 | 32.36 | 29.40 | 30.73 | 31.93 | -159.00 | 120.16 | -33.23 | 47.34 | -6.25 | 31.41 | -5.26 | 11.62 | -1.60 | 5.13 | -3.42 | 6.95 | -4.18 | -3.53 | 0.27 | -2.27 | 1.09 | -2.34 | 0.47 | -1.55 | -140.04 | 128.24 | -33.95 | 46.59 | -6.29 | 33.55 | -5.44 | 12.08 | -1.31 | 5.82 | -2.97 | 5.82 | -4.06 | -2.81 | -0.63 | -1.77 | 1.09 | -2.19 | 0.63 | -1.28 | -546.27 | -18.52 | -85.01 | -12.55 | -87.05 | -26.99 | -61.85 | -33.42 | -47.01 | -31.35 | -46.10 | -24.69 | -35.11 | -34.73 | -34.03 | -35.29 | -27.16 | -28.57 | -29.91 | -39.94 | -1.78 | -1.17 | 0.30 | -0.03 | 0.05 | -0.01 | 0.18 | -0.11 | 0.08 | -0.29 | -0.27 | 0.49 | -0.08 | -0.32 | 0.58 | -0.13 | -0.22 | 0.09 | -0.30 | 0.04 | 111.69 | 41.19 | 19.41 | 22.03 | 19.33 | 19.18 | 12.42 | 10.26 | 9.39 | 10.17 | 8.77 | 10.03 | 6.98 | 7.65 | 9.60 | 7.22 | 8.40 | 7.29 | 7.42 | 8.78 | -0.64 | 9.10 | 3.61 | 3.71 | 0.00 | 0.02 | 1.95 | 2.38 | 3469.18 | 1736.96 | 1686.77 | 0.00 | 0.46 | 486.66 | 3.52 | 6288.43 | 1763.01 | 1517.99 | 0.00 | 1.65 | 972.76 | 3.21 | 0.24 | -0.01 | -0.28 | 0.25 | 1.28 | 3.73 | 59.70 | 40.60 | 42.14 | 31.47 | 38.78 | 37.24 | 58.20 | 15.73 | 15.05 | 17.37 | 17.21 | 18.18 | 18.90 | 39.20 | 15.31 | 14.71 | 17.17 | 17.20 | 17.86 | 18.70 | 40.40 | 0.39 | 0.65 | 1.84 | 1.84 | 1.84 | 1.84 | 1.84 | 1.00 | 0.47 | 0.33 | 0.10 | 0.47 | 0.39 | -1.46 | 4.43 | 4.52 | 4.63 | 3.75 | 4.09 | 3.35 | 7.61 | 2.38 | 10002.17 | 3514.62 | 3413.01 | 0.00 | 1.12 | 1650.36 | 2.00 | 1.38 | 0.87 | 2.02 | 0.43 | 0.48 | 0.18 | 0.11 | 0.27 | 0.21 | 0.07 | 0.07 | 0.00 | 0.01 | 0.05 | -0.03 | 0.02 | -0.00 | -0.00 | 0.01 | 0.05 | -0.02 | 0.02 | -0.00 | -0.10 | -0.08 | -0.16 | -0.30 | -0.02 | -0.06 | 0.27 | -0.13 | 0.17 | -0.99 | 0.57 | 0.56 | 0.03 | 0.02 | 0.05 | 0.06 | 0.01 | 0.02 | 2.82 | 0.47 | 0.08 | 0.06 | 0.00 | 1.72 | 0.07 |
5 | 0.53 | -0.08 | -0.28 | 0.69 | 1.94 | 0.88 | -0.92 | -0.93 | 0.67 | 1.04 | 0.27 | 1.13 | 0.61 | 0.65 | 0.49 | 0.45 | 0.47 | 0.45 | 0.50 | 0.56 | 0.67 | 0.61 | 0.55 | 0.60 | 0.26 | 0.30 | 0.25 | 0.22 | 0.25 | 0.24 | 0.28 | 0.29 | 0.35 | 0.29 | 0.25 | 0.22 | 0.26 | 0.29 | 0.25 | 0.22 | 0.25 | 0.24 | 0.28 | 0.29 | 0.35 | 0.28 | 0.24 | 0.21 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | -0.26 | 0.05 | -0.04 | -0.17 | -0.72 | -0.58 | -0.27 | -0.07 | -0.25 | 0.42 | 0.11 | 0.55 | 0.09 | 0.13 | 0.10 | 0.07 | 0.07 | 0.08 | 0.13 | 0.13 | 0.11 | 0.10 | 0.09 | 0.09 | -0.61 | -1.18 | -0.66 | -0.39 | -0.44 | -0.66 | -1.04 | -1.35 | -0.33 | -0.71 | -0.47 | -0.56 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.54 | 0.61 | 0.52 | 0.49 | 0.53 | 0.52 | 0.57 | 0.62 | 0.67 | 0.58 | 0.52 | 0.49 | 0.54 | 0.58 | 0.51 | 0.45 | 0.51 | 0.51 | 0.57 | 0.61 | 0.70 | 0.56 | 0.49 | 0.46 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.01 | -0.02 | 0.10 | 0.42 | 0.11 | 0.16 | -0.10 | -0.10 | -0.50 | 0.05 | 0.32 | 0.34 | 0.24 | 0.29 | 0.23 | 0.23 | 0.23 | 0.24 | 0.27 | 0.31 | 0.24 | 0.24 | 0.23 | 0.24 | -0.79 | -1.26 | -0.66 | -0.41 | -0.02 | 0.01 | -0.19 | -0.51 | -0.87 | -0.95 | -1.28 | -1.10 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.48 | 0.66 | 0.45 | 0.37 | 0.33 | 0.32 | 0.34 | 0.35 | 0.41 | 0.42 | 0.47 | 0.47 | 0.44 | 0.73 | 0.41 | 0.29 | 0.27 | 0.25 | 0.26 | 0.28 | 0.33 | 0.35 | 0.42 | 0.41 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.33 | -0.45 | 0.42 | 0.76 | 0.89 | 0.92 | 0.89 | 0.74 | 0.61 | 0.52 | 0.26 | 0.37 | 0.28 | 0.34 | 0.27 | 0.27 | 0.26 | 0.26 | 0.28 | 0.28 | 0.31 | 0.31 | 0.33 | 0.31 | 2.62 | 2.42 | 0.44 | -0.78 | -0.77 | -0.72 | 0.09 | 0.15 | 0.26 | -0.61 | 0.10 | -0.25 | 0.16 | 0.64 | 0.19 | 0.29 | -0.07 | 0.36 | 0.61 | 0.13 | -40.50 | 218.97 | 50.37 | 112.31 | 51.51 | 66.55 | 29.27 | 57.99 | 48.33 | 43.88 | 27.20 | 32.23 | 37.52 | 35.24 | 45.28 | 33.54 | 31.72 | 30.78 | 36.51 | 24.97 | -205.44 | 132.22 | -16.09 | 41.51 | -7.64 | 16.94 | -5.65 | 9.57 | 0.50 | 8.67 | -8.27 | 0.59 | -0.34 | 2.38 | 7.90 | 1.95 | 7.44 | -1.74 | 0.28 | -5.49 | -181.02 | 138.25 | -14.51 | 43.08 | -8.00 | 17.44 | -3.93 | 9.79 | 0.27 | 8.91 | -7.98 | 0.26 | -0.11 | 2.25 | 7.51 | 1.87 | 7.34 | -1.92 | 0.00 | -5.60 | -528.70 | -62.28 | -87.21 | -24.32 | -74.06 | -30.45 | -59.32 | -33.44 | -38.41 | -26.08 | -46.70 | -35.25 | -33.57 | -34.80 | -22.94 | -33.81 | -20.74 | -29.76 | -37.07 | -30.42 | -1.49 | -1.26 | -0.36 | -0.11 | 0.02 | 0.04 | -0.51 | -0.02 | -0.05 | -0.09 | -0.17 | -0.03 | 0.11 | -0.08 | 0.25 | -0.04 | 0.06 | 0.30 | 0.21 | 0.12 | 95.05 | 39.37 | 18.87 | 24.32 | 23.16 | 17.16 | 13.05 | 10.91 | 9.78 | 11.81 | 8.86 | 9.58 | 8.90 | 8.14 | 8.20 | 7.78 | 7.13 | 7.54 | 8.45 | 7.33 | 0.00 | 11.03 | 3.25 | 2.41 | 0.00 | 1.03 | 2.59 | 0.90 | 3492.74 | 1512.92 | 1591.52 | 0.00 | -0.66 | 474.41 | 1.32 | 5648.61 | 1292.96 | 1186.51 | 0.00 | 0.94 | 665.32 | 1.48 | 0.36 | 0.46 | 0.08 | -0.11 | 0.77 | 0.93 | 50.93 | 38.54 | 39.02 | 33.71 | 32.75 | 38.79 | 51.90 | 17.10 | 15.97 | 18.65 | 16.97 | 17.29 | 19.26 | 36.41 | 16.49 | 15.86 | 18.53 | 16.88 | 16.94 | 19.11 | 39.10 | 3.42 | 2.31 | 3.42 | 7.14 | 9.32 | 7.23 | 8.57 | 0.82 | 0.20 | 0.21 | 0.25 | 0.48 | 0.37 | -1.27 | 4.94 | 4.38 | 4.26 | 3.19 | 3.10 | 3.09 | 8.49 | -0.24 | 9442.31 | 2773.93 | 2863.92 | 0.00 | 0.27 | 1323.47 | 10.77 | 0.92 | -0.19 | 0.53 | 0.15 | 7.70 | 0.25 | 0.09 | 0.19 | 0.18 | 0.07 | 0.08 | -0.01 | -0.02 | -0.03 | 0.02 | 0.00 | -0.00 | -0.01 | -0.02 | -0.02 | 0.02 | 0.00 | -0.00 | -0.13 | -0.13 | -0.36 | -0.17 | -0.04 | -0.15 | 1.21 | 0.22 | -0.42 | -0.01 | -0.20 | -0.93 | 0.03 | 0.02 | 0.08 | 0.04 | 0.01 | 0.01 | 6.81 | 0.38 | 0.05 | 0.04 | 0.00 | 2.19 | 0.04 |
10 | 3.70 | -0.29 | 2.20 | -0.23 | 1.37 | 1.00 | 1.77 | 1.60 | 0.52 | 1.98 | 4.33 | 1.30 | 0.46 | 0.54 | 0.45 | 0.65 | 0.59 | 0.51 | 0.65 | 0.52 | 0.51 | 0.48 | 0.64 | 0.64 | 0.23 | 0.29 | 0.24 | 0.23 | 0.19 | 0.29 | 0.41 | 0.35 | 0.27 | 0.24 | 0.27 | 0.24 | 0.23 | 0.28 | 0.23 | 0.23 | 0.21 | 0.28 | 0.44 | 0.36 | 0.27 | 0.24 | 0.25 | 0.23 | 0.00 | 0.00 | 0.01 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.01 | 0.00 | -0.29 | 0.00 | 0.36 | 0.21 | -0.09 | -0.06 | -0.79 | -0.89 | -0.52 | -0.49 | 1.08 | 0.55 | 0.05 | 0.10 | 0.06 | 0.12 | 0.08 | 0.07 | 0.08 | 0.07 | 0.10 | 0.08 | 0.07 | 0.09 | 0.16 | -0.75 | -0.09 | -0.79 | -0.42 | 0.10 | 1.62 | -0.56 | -1.12 | -0.88 | -0.49 | -0.59 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.52 | 0.63 | 0.54 | 0.54 | 0.48 | 0.63 | 0.87 | 0.72 | 0.61 | 0.57 | 0.61 | 0.55 | 0.51 | 0.61 | 0.54 | 0.52 | 0.48 | 0.64 | 0.98 | 0.73 | 0.61 | 0.57 | 0.61 | 0.53 | 0.07 | 0.06 | 0.07 | 0.02 | 0.04 | 0.08 | 0.09 | 0.07 | 0.03 | 0.03 | 0.06 | 0.07 | 0.37 | 0.08 | 0.25 | 0.22 | 0.11 | -0.25 | -1.52 | -0.40 | -0.13 | -0.00 | 0.04 | 0.31 | 0.16 | 0.22 | 0.17 | 0.25 | 0.19 | 0.17 | 0.19 | 0.20 | 0.27 | 0.22 | 0.20 | 0.21 | 0.95 | -1.27 | 0.03 | -0.65 | 0.66 | 0.08 | -1.24 | 0.10 | -0.74 | 0.67 | -1.21 | 0.36 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.39 | 0.66 | 0.45 | 0.44 | 0.36 | 0.41 | 0.61 | 0.42 | 0.45 | 0.37 | 0.59 | 0.39 | 0.35 | 0.66 | 0.41 | 0.37 | 0.32 | 0.37 | 0.61 | 0.39 | 0.39 | 0.33 | 0.57 | 0.35 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1.07 | -0.22 | 0.74 | 0.68 | 0.95 | 0.76 | -0.13 | 0.72 | 0.57 | 1.00 | -0.03 | 0.86 | 0.22 | 0.29 | 0.22 | 0.28 | 0.21 | 0.23 | 0.30 | 0.23 | 0.28 | 0.22 | 0.30 | 0.22 | 5.08 | 1.16 | 2.10 | 1.37 | -0.20 | -0.35 | -0.53 | 0.56 | 0.28 | -0.15 | -0.05 | -0.19 | 0.02 | 0.11 | 0.18 | -0.12 | -0.03 | -0.15 | 0.11 | 0.04 | 20.20 | 235.20 | 60.41 | 78.47 | 52.21 | 58.24 | 21.60 | 42.96 | 27.95 | 36.47 | 24.78 | 36.50 | 17.19 | 27.24 | 22.88 | 28.58 | 26.52 | 22.58 | 21.73 | 24.47 | -135.86 | 157.04 | -53.45 | 17.20 | 6.87 | 13.93 | -11.75 | 8.36 | -5.13 | 0.23 | -5.42 | 1.68 | -6.22 | 1.84 | -4.10 | 0.78 | -0.56 | -1.02 | -3.81 | -0.68 | -113.09 | 162.58 | -59.37 | 18.40 | 5.17 | 15.09 | -12.18 | 9.03 | -4.42 | 0.40 | -5.51 | 1.44 | -5.89 | 1.79 | -3.71 | 0.43 | -0.35 | -0.94 | -3.77 | -0.47 | -537.59 | 0.00 | -130.03 | -50.58 | -45.11 | -45.51 | -44.85 | -43.02 | -44.33 | -40.17 | -33.50 | -27.47 | -35.83 | -27.61 | -31.05 | -29.61 | -24.42 | -27.49 | -31.34 | -25.62 | -2.15 | -0.95 | 1.33 | -0.56 | 0.20 | -0.33 | 0.03 | -0.52 | -0.32 | -0.14 | 0.12 | 0.03 | -0.17 | -0.05 | -0.26 | 0.08 | 0.00 | 0.05 | -0.05 | -0.08 | 102.74 | 44.41 | 29.07 | 14.01 | 15.49 | 16.69 | 10.71 | 11.68 | 9.72 | 11.37 | 8.29 | 7.99 | 7.08 | 6.97 | 7.07 | 7.27 | 7.05 | 6.93 | 6.43 | 6.19 | 1.77 | 12.32 | 3.89 | 3.76 | 0.00 | 0.83 | 2.00 | 0.44 | 3962.70 | 1420.26 | 1301.81 | 0.00 | 0.88 | 604.89 | 9.73 | 5739.39 | 1360.03 | 1180.97 | 0.00 | 2.52 | 668.70 | 2.24 | 0.74 | 1.61 | 0.46 | -0.14 | 1.70 | -0.40 | 58.62 | 37.43 | 45.41 | 28.71 | 33.74 | 46.30 | 52.13 | 19.18 | 14.28 | 15.51 | 16.54 | 20.32 | 18.97 | 34.89 | 18.23 | 13.76 | 15.09 | 16.40 | 20.16 | 17.75 | 36.59 | 4.17 | 4.42 | 6.24 | 3.98 | 10.01 | 9.76 | 11.21 | 1.11 | 0.73 | 0.85 | 0.37 | 0.19 | 1.26 | -0.59 | 5.56 | 4.01 | 3.69 | 2.65 | 3.46 | 4.69 | 8.40 | 3.62 | 10056.01 | 2603.49 | 2002.59 | 0.00 | 1.80 | 1524.40 | 0.50 | 2.95 | 0.09 | 3.00 | 4.28 | 0.35 | 0.06 | 0.10 | 0.32 | 0.19 | 0.12 | 0.06 | -0.02 | -0.02 | -0.00 | -0.07 | 0.01 | 0.01 | -0.02 | -0.02 | -0.01 | -0.07 | 0.01 | 0.01 | -0.11 | -0.19 | -0.27 | -0.34 | -0.05 | -0.03 | -0.14 | -0.28 | 0.02 | -1.09 | 1.16 | 0.25 | 0.02 | 0.03 | 0.09 | 0.07 | 0.02 | 0.01 | 21.43 | 0.45 | 0.08 | 0.07 | 0.00 | 3.54 | 0.04 |
20 | -0.19 | -0.20 | 0.20 | 0.26 | 0.78 | 0.08 | -0.29 | -0.82 | 0.04 | -0.80 | -0.99 | -0.43 | 0.65 | 0.68 | 0.67 | 0.60 | 0.65 | 0.70 | 0.66 | 0.69 | 0.64 | 0.67 | 0.69 | 0.68 | 0.20 | 0.25 | 0.26 | 0.19 | 0.18 | 0.24 | 0.28 | 0.29 | 0.25 | 0.29 | 0.30 | 0.24 | 0.20 | 0.22 | 0.23 | 0.19 | 0.16 | 0.24 | 0.26 | 0.27 | 0.24 | 0.27 | 0.29 | 0.24 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.46 | 0.62 | 0.78 | 0.56 | 0.95 | 0.36 | 0.28 | 0.23 | 0.30 | 0.17 | 0.14 | 0.08 | 0.13 | 0.16 | 0.15 | 0.11 | 0.13 | 0.13 | 0.15 | 0.17 | 0.11 | 0.16 | 0.18 | 0.14 | -0.86 | -1.23 | -1.18 | -0.17 | -0.27 | -0.69 | -1.09 | -1.37 | -0.67 | -1.15 | -1.40 | -0.85 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.44 | 0.51 | 0.52 | 0.41 | 0.40 | 0.47 | 0.53 | 0.57 | 0.48 | 0.55 | 0.59 | 0.47 | 0.38 | 0.45 | 0.48 | 0.36 | 0.34 | 0.41 | 0.51 | 0.55 | 0.46 | 0.55 | 0.58 | 0.44 | 0.02 | 0.02 | 0.03 | 0.02 | 0.03 | 0.03 | 0.03 | 0.02 | 0.04 | 0.03 | 0.02 | 0.02 | 0.56 | 0.32 | 0.29 | 0.72 | 0.81 | 0.60 | 0.22 | 0.05 | 0.37 | 0.04 | -0.04 | 0.32 | 0.29 | 0.30 | 0.28 | 0.24 | 0.25 | 0.26 | 0.27 | 0.31 | 0.24 | 0.28 | 0.32 | 0.26 | -0.05 | -0.54 | -1.34 | -0.41 | -0.68 | -0.96 | -1.11 | -1.32 | -0.75 | -1.03 | -1.33 | -0.80 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 0.35 | 0.37 | 0.52 | 0.36 | 0.39 | 0.46 | 0.51 | 0.58 | 0.48 | 0.55 | 0.62 | 0.49 | 0.28 | 0.32 | 0.49 | 0.31 | 0.32 | 0.41 | 0.53 | 0.57 | 0.46 | 0.53 | 0.62 | 0.46 | 0.01 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.01 | 0.00 | 0.01 | 0.01 | 0.01 | 0.01 | 0.87 | 0.58 | 0.15 | 0.69 | 0.63 | 0.46 | 0.01 | -0.07 | 0.30 | 0.13 | -0.16 | 0.35 | 0.25 | 0.25 | 0.32 | 0.26 | 0.27 | 0.29 | 0.29 | 0.32 | 0.26 | 0.27 | 0.31 | 0.26 | 11.88 | 4.09 | 0.00 | 1.52 | 0.18 | 0.34 | 0.37 | 0.07 | -0.02 | 0.03 | 0.25 | 0.13 | 0.08 | 0.04 | -0.05 | 0.06 | 0.32 | 0.35 | 0.69 | 0.43 | -6.42 | 177.52 | 77.09 | 88.49 | 63.75 | 58.96 | 42.60 | 43.25 | 26.63 | 39.85 | 31.51 | 32.32 | 31.28 | 32.22 | 24.53 | 27.89 | 25.16 | 32.53 | 37.03 | 38.72 | -135.14 | 114.81 | 12.35 | 19.76 | 18.67 | 19.64 | 3.57 | 12.12 | -2.29 | 8.84 | -0.81 | 4.08 | 0.21 | 3.88 | -0.24 | 0.39 | -0.57 | 2.78 | 2.43 | 3.03 | -129.96 | 118.39 | 12.15 | 17.80 | 19.30 | 19.55 | 3.73 | 12.41 | -1.77 | 8.90 | -1.03 | 3.96 | 0.17 | 3.82 | -0.12 | 0.65 | -0.37 | 2.52 | 1.84 | 2.86 | -484.60 | -6.12 | -53.16 | -18.94 | -37.71 | -19.12 | -33.69 | -18.64 | -35.90 | -23.49 | -31.45 | -21.81 | -25.53 | -24.74 | -27.98 | -31.90 | -29.10 | -25.42 | -22.94 | -29.73 | -2.40 | -1.43 | -0.04 | 0.92 | -0.31 | 0.10 | -0.09 | -0.12 | -0.24 | -0.07 | 0.22 | 0.10 | 0.02 | -0.01 | -0.01 | -0.15 | -0.13 | 0.15 | 0.49 | 0.16 | 54.85 | 22.19 | 15.86 | 13.82 | 12.82 | 9.33 | 8.71 | 8.33 | 8.36 | 7.88 | 7.71 | 6.50 | 6.85 | 6.93 | 7.02 | 6.98 | 6.81 | 7.52 | 7.10 | 7.03 | 1.24 | 16.18 | 4.60 | 4.37 | 0.00 | 0.80 | 2.18 | 1.69 | 3556.88 | 2489.02 | 2467.10 | 677.70 | -0.14 | 339.70 | 2.18 | 5540.21 | 1732.97 | 1640.78 | 123.61 | 0.96 | 481.93 | 2.26 | 0.32 | 0.63 | 0.10 | 0.37 | 0.70 | 11.45 | 46.74 | 42.15 | 39.38 | 33.53 | 36.35 | 28.78 | 48.10 | 16.04 | 16.16 | 17.70 | 18.38 | 18.42 | 16.48 | 19.00 | 15.57 | 15.87 | 17.36 | 18.23 | 18.13 | 16.39 | 17.97 | 4.46 | 2.98 | 4.15 | 5.92 | 8.20 | 10.09 | 11.15 | 0.96 | 0.43 | 0.55 | 0.28 | 0.49 | 0.38 | 2.97 | 4.24 | 4.32 | 3.92 | 3.17 | 3.11 | 1.76 | 4.10 | -0.74 | 9496.14 | 4201.35 | 4166.67 | 75.37 | 0.16 | 1495.30 | 1.11 | 4.17 | 0.25 | 0.16 | 0.52 | 0.46 | 0.17 | 0.19 | 0.35 | 0.29 | 0.10 | 0.07 | 0.01 | 0.01 | -0.02 | -0.08 | 0.01 | -0.01 | 0.01 | 0.01 | -0.03 | -0.07 | 0.01 | -0.01 | -0.15 | -0.21 | -0.34 | -0.39 | -0.08 | -0.09 | 0.19 | -0.22 | 0.08 | 0.04 | 0.23 | -0.21 | 0.03 | 0.04 | 0.11 | 0.10 | 0.02 | 0.02 | 16.67 | 0.47 | 0.05 | 0.04 | 0.00 | 3.19 | 0.03 |
sns.pairplot(features.loc[:, ('mfcc', 'mean', slice('01','03'))]);
sns.pairplot(features.loc[:, ('mfcc', 'std', slice('01','03'))]);
print('Echonest features available for {} tracks.'.format(len(echonest)))
Echonest features available for 13129 tracks.