Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save kozo2/cfc5b7606cbfa7e8b5f4 to your computer and use it in GitHub Desktop.

Select an option

Save kozo2/cfc5b7606cbfa7e8b5f4 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Finding and plotting the most heard artists on last.fm\n",
"\n",
"This notebook is a super basic use case of daru for finding a plotting the most heard artists from a dataset from last.fm.\n",
"\n",
"For detailed and in-depth examples see the other notebooks."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"false"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"require 'daru'"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<table><tr><th colspan=\"7\">Daru::DataFrame:22603460 rows: 2500 cols: 6<tr><th></th><th>artid</th><th>artname</th><th>timestamp</th><th>traid</th><th>traname</th><th>userid</th></tr><tr><td>0</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:55:00Z</td><td>0138547f-374d-49d4-8f1c-9b2c8b5c65c0</td><td>X-Ray Eyes</td><td>user_000705</td></tr><tr><td>1</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:51:28Z</td><td>22ce9a32-3510-4c8e-8151-c044a62eb4fd</td><td>Hard Times</td><td>user_000705</td></tr><tr><td>2</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:46:55Z</td><td>22ce9a32-3510-4c8e-8151-c044a62eb4fd</td><td>Hard Times</td><td>user_000705</td></tr><tr><td>3</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:42:17Z</td><td>c386b85f-1bfe-4038-b323-cb8229ab2f8b</td><td>Magic Touch</td><td>user_000705</td></tr><tr><td>4</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:37:53Z</td><td>8ec9b4f8-2d1b-4616-9ae4-4711ca328fc3</td><td>Charisma</td><td>user_000705</td></tr><tr><td>5</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:33:37Z</td><td>ff47d82e-313d-4bd0-8e61-fe61124a361b</td><td>Dirty Livin'</td><td>user_000705</td></tr><tr><td>6</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:29:39Z</td><td>3621800b-87b7-43c6-b6a3-47ea4b658407</td><td>Sure Know Something</td><td>user_000705</td></tr><tr><td>7</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:24:46Z</td><td>91cc5010-e65b-4f49-94b5-1deed61cfcc7</td><td>2,000 Man</td><td>user_000705</td></tr><tr><td>8</td><td>e1f1e33e-2e4c-4d43-b91b-7064068d3283</td><td>Kiss</td><td>2009-05-03T12:20:17Z</td><td>daa13e72-9056-476f-b431-335b2c26842d</td><td>I Was Made For Lovin' You</td><td>user_000705</td></tr><tr><td>9</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T12:16:20Z</td><td>1895c79d-ae5f-40bf-bc18-83fdcd8d2842</td><td>Burning Of The Midnight Lamp</td><td>user_000705</td></tr><tr><td>10</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T12:12:35Z</td><td>1ae3c250-7b16-49d4-9c71-0928724eecce</td><td>Gypsy Eyes</td><td>user_000705</td></tr><tr><td>11</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T12:08:26Z</td><td>fca63fe0-c9e6-4347-92b7-21f6cf79226c</td><td>Come On, Part 1</td><td>user_000705</td></tr><tr><td>12</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T12:04:59Z</td><td>36beb31d-ed74-4a49-832f-a4a38dc96bab</td><td>Long Hot Summer Night</td><td>user_000705</td></tr><tr><td>13</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T12:02:08Z</td><td>4ad6064e-7d54-49a2-a134-320a1612ee27</td><td>Little Miss Strange</td><td>user_000705</td></tr><tr><td>14</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T11:47:07Z</td><td>40ffef8e-b851-473a-a239-08685eab22b0</td><td>Voodoo Chile</td><td>user_000705</td></tr><tr><td>15</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T11:44:43Z</td><td>feb64d01-6e05-4974-bb44-0046deca1bdb</td><td>Crosstown Traffic</td><td>user_000705</td></tr><tr><td>16</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T11:42:35Z</td><td>7f9b462a-8ac5-472d-a5aa-716b3b3d169c</td><td>Have You Ever Been (To Electric Ladyland)</td><td>user_000705</td></tr><tr><td>17</td><td>33b3c323-77c2-417c-a5b4-af7e6a111cc9</td><td>The Jimi Hendrix Experience</td><td>2009-05-03T11:41:13Z</td><td>88b57468-8d58-4310-b135-c94620fcfbc1</td><td>...And The Gods Made Love</td><td>user_000705</td></tr><tr><td>18</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T09:24:28Z</td><td>788878e0-8965-489e-86e3-add4c1f3d134</td><td>Line Of Best Fit</td><td>user_000705</td></tr><tr><td>19</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T09:19:58Z</td><td>7cfc403d-18e7-4b8e-b0c4-1864ca393fbb</td><td>Fake Frowns</td><td>user_000705</td></tr><tr><td>20</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T09:15:03Z</td><td>34a2d7ad-6b3a-4cfc-b4ca-edfc55a6685b</td><td>Amputations</td><td>user_000705</td></tr><tr><td>21</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T09:11:21Z</td><td>99db2ed6-4493-481c-ac20-54ad323cb04b</td><td>The Face That Launched 1000 Shits</td><td>user_000705</td></tr><tr><td>22</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T09:07:44Z</td><td>269084ba-3065-4b43-a733-f491e618b26a</td><td>Sleep Spent</td><td>user_000705</td></tr><tr><td>23</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T09:03:54Z</td><td>96fac269-5308-4aee-827f-d01a66674694</td><td>Pictures In An Exhibition</td><td>user_000705</td></tr><tr><td>24</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T08:59:34Z</td><td>c29440d9-03e6-4e18-91d6-ef8bf1e1ca32</td><td>Your Bruise</td><td>user_000705</td></tr><tr><td>25</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T08:56:55Z</td><td>ed55b695-976e-4898-8fde-51a8e3b0e262</td><td>Champagne From A Paper Cup</td><td>user_000705</td></tr><tr><td>26</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T08:49:07Z</td><td>c5238d6d-9b04-496c-8674-4ea7a07aecd6</td><td>President Of What?</td><td>user_000705</td></tr><tr><td>27</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-02T08:44:34Z</td><td>bf59dfef-03a8-4270-9456-50df79da56c2</td><td>Bend To Squares</td><td>user_000705</td></tr><tr><td>28</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-01T19:08:37Z</td><td>788878e0-8965-489e-86e3-add4c1f3d134</td><td>Line Of Best Fit</td><td>user_000705</td></tr><tr><td>29</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-01T19:04:07Z</td><td>7cfc403d-18e7-4b8e-b0c4-1864ca393fbb</td><td>Fake Frowns</td><td>user_000705</td></tr><tr><td>30</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-01T18:59:12Z</td><td>34a2d7ad-6b3a-4cfc-b4ca-edfc55a6685b</td><td>Amputations</td><td>user_000705</td></tr><tr><td>31</td><td>0039c7ae-e1a7-4a7d-9b49-0cbc716821a6</td><td>Death Cab For Cutie</td><td>2009-05-01T18:55:30Z</td><td>99db2ed6-4493-481c-ac20-54ad323cb04b</td><td>The Face That Launched 1000 Shits</td><td>user_000705</td></tr><tr><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td></tr><tr><td>2499</td><td>e0bba708-bdd3-478d-84ea-c706413bedab</td><td>A. R. Rahman</td><td>2009-01-12T15:26:51Z</td><td></td><td>Paper Planes (Dfa Remix)</td><td>user_000705</td></tr></table>"
],
"text/plain": [
"\n",
"#<Daru::DataFrame:22603460 @name = 41ac043b-00d7-4765-a391-59b07c6dc7f0 @size = 2500>\n",
" artid artname timestamp traid traname userid \n",
" 0 e1f1e33e-2 Kiss 2009-05-03 0138547f-3 X-Ray Eyes user_00070 \n",
" 1 e1f1e33e-2 Kiss 2009-05-03 22ce9a32-3 Hard Times user_00070 \n",
" 2 e1f1e33e-2 Kiss 2009-05-03 22ce9a32-3 Hard Times user_00070 \n",
" 3 e1f1e33e-2 Kiss 2009-05-03 c386b85f-1 Magic Touc user_00070 \n",
" 4 e1f1e33e-2 Kiss 2009-05-03 8ec9b4f8-2 Charisma user_00070 \n",
" 5 e1f1e33e-2 Kiss 2009-05-03 ff47d82e-3 Dirty Livi user_00070 \n",
" 6 e1f1e33e-2 Kiss 2009-05-03 3621800b-8 Sure Know user_00070 \n",
" 7 e1f1e33e-2 Kiss 2009-05-03 91cc5010-e 2,000 Man user_00070 \n",
" 8 e1f1e33e-2 Kiss 2009-05-03 daa13e72-9 I Was Made user_00070 \n",
" 9 33b3c323-7 The Jimi H 2009-05-03 1895c79d-a Burning Of user_00070 \n",
" 10 33b3c323-7 The Jimi H 2009-05-03 1ae3c250-7 Gypsy Eyes user_00070 \n",
" 11 33b3c323-7 The Jimi H 2009-05-03 fca63fe0-c Come On, P user_00070 \n",
" 12 33b3c323-7 The Jimi H 2009-05-03 36beb31d-e Long Hot S user_00070 \n",
" 13 33b3c323-7 The Jimi H 2009-05-03 4ad6064e-7 Little Mis user_00070 \n",
" 14 33b3c323-7 The Jimi H 2009-05-03 40ffef8e-b Voodoo Chi user_00070 \n",
" ... ... ... ... ... ... ... \n"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"require 'open-uri'\n",
"content = open('https://raw.githubusercontent.com/v0dro/daru/master/spec/fixtures/music_data.tsv')\n",
"df = Daru::DataFrame.from_csv content, col_sep: \"\\t\"\n",
"df.vectors = Daru::Index.new(df.vectors.to_a.map(&:to_sym))\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "Encoding::UndefinedConversionError",
"evalue": "\"\\xE3\" from ASCII-8BIT to UTF-8",
"output_type": "error",
"traceback": [
"\u001b[31mEncoding::UndefinedConversionError\u001b[0m: \"\\xE3\" from ASCII-8BIT to UTF-8",
"\u001b[37m/var/lib/gems/2.2.0/gems/multi_json-1.11.2/lib/multi_json/adapters/json_common.rb:19:in `encode'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/multi_json-1.11.2/lib/multi_json/adapters/json_common.rb:19:in `to_json'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/multi_json-1.11.2/lib/multi_json/adapters/json_common.rb:19:in `dump'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/multi_json-1.11.2/lib/multi_json/adapter.rb:25:in `dump'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/multi_json-1.11.2/lib/multi_json.rb:136:in `dump'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/lib/iruby/session/mixin.rb:11:in `serialize'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/lib/iruby/session/rbczmq.rb:50:in `send'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/lib/iruby/kernel.rb:95:in `execute_request'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/lib/iruby/kernel.rb:37:in `run'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/lib/iruby/command.rb:34:in `run'\u001b[0m",
"\u001b[37m/var/lib/gems/2.2.0/gems/iruby-0.2.8/bin/iruby:5:in `<top (required)>'\u001b[0m",
"\u001b[37m/usr/local/bin/iruby:23:in `load'\u001b[0m",
"\u001b[37m/usr/local/bin/iruby:23:in `<main>'\u001b[0m"
]
}
],
"source": [
"# Group by artist name and call 'size' to see the number of rows each artist populates.\n",
"artists = df.group_by(:artname).size"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<table><tr><th colspan=\"2\">Daru::Vector:26016360 size: 1</th></tr><tr><th> </th><th>size</th></tr><tr><td>A. R. Rahman</td><td>231</td></tr></table>"
],
"text/plain": [
"\n",
"#<Daru::Vector:26016360 @name = size @size = 1 >\n",
" size\n",
"A. R. Rahman 231\n"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"artists.max_index"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div id='vis-f7473eac-7c32-4bcc-8eda-428f954ba35e'></div>\n",
"<script>\n",
"(function(){\n",
" var render = function(){\n",
" var model = {\"panes\":[{\"diagrams\":[{\"type\":\"bar\",\"options\":{\"x\":\"data0\",\"y\":\"data1\"},\"data\":\"2c1cc4c6-b785-4fef-a46a-43fae3b69d6b\"}],\"options\":{\"yrange\":[0,300],\"width\":1120,\"height\":800,\"legend\":true,\"rotate_x_label\":45,\"xrange\":[\"A. R. Rahman\",\"Death Cab For Cutie\",\"Pink Floyd\",\"The Rolling Stones\",\"Opeth\",\"The Beatles\",\"The Cranberries\",\"Cat Stevens\",\"Howard Shore\",\"Nick Drake\"]}}],\"data\":{\"2c1cc4c6-b785-4fef-a46a-43fae3b69d6b\":[{\"data0\":\"A. R. Rahman\",\"data1\":231},{\"data0\":\"Death Cab For Cutie\",\"data1\":206},{\"data0\":\"Pink Floyd\",\"data1\":158},{\"data0\":\"The Rolling Stones\",\"data1\":91},{\"data0\":\"Opeth\",\"data1\":89},{\"data0\":\"The Beatles\",\"data1\":67},{\"data0\":\"The Cranberries\",\"data1\":61},{\"data0\":\"Cat Stevens\",\"data1\":57},{\"data0\":\"Howard Shore\",\"data1\":56},{\"data0\":\"Nick Drake\",\"data1\":51}]},\"extension\":[]}\n",
" var id_name = '#vis-f7473eac-7c32-4bcc-8eda-428f954ba35e';\n",
" Nyaplot.core.parse(model, id_name);\n",
"\n",
" require(['downloadable'], function(downloadable){\n",
" var svg = d3.select(id_name).select(\"svg\");\n",
"\t if(!svg.empty())\n",
"\t svg.call(downloadable().filename('fig'));\n",
"\t});\n",
" };\n",
" if(window['Nyaplot']==undefined){\n",
" window.addEventListener('load_nyaplot', render, false);\n",
"\treturn;\n",
" } else {\n",
" render();\n",
" }\n",
"})();\n",
"</script>\n"
],
"text/plain": [
"#<Nyaplot::Frame:0x000000034bad40 @properties={:panes=>[#<Nyaplot::Plot:0x000000034ccba8 @properties={:diagrams=>[#<Nyaplot::Diagram:0x000000034bb448 @properties={:type=>:bar, :options=>{:x=>\"data0\", :y=>\"data1\"}, :data=>\"2c1cc4c6-b785-4fef-a46a-43fae3b69d6b\"}, @xrange=[\"A. R. Rahman\", \"Death Cab For Cutie\", \"Pink Floyd\", \"The Rolling Stones\", \"Opeth\", \"The Beatles\", \"The Cranberries\", \"Cat Stevens\", \"Howard Shore\", \"Nick Drake\"], @yrange=[0, 231]>], :options=>{:yrange=>[0, 300], :width=>1120, :height=>800, :legend=>true, :rotate_x_label=>45, :xrange=>[\"A. R. Rahman\", \"Death Cab For Cutie\", \"Pink Floyd\", \"The Rolling Stones\", \"Opeth\", \"The Beatles\", \"The Cranberries\", \"Cat Stevens\", \"Howard Shore\", \"Nick Drake\"]}}>], :data=>{\"2c1cc4c6-b785-4fef-a46a-43fae3b69d6b\"=>#<Nyaplot::DataFrame:0x000000034cc608 @name=\"2c1cc4c6-b785-4fef-a46a-43fae3b69d6b\", @rows=[{:data0=>\"A. R. Rahman\", :data1=>231}, {:data0=>\"Death Cab For Cutie\", :data1=>206}, {:data0=>\"Pink Floyd\", :data1=>158}, {:data0=>\"The Rolling Stones\", :data1=>91}, {:data0=>\"Opeth\", :data1=>89}, {:data0=>\"The Beatles\", :data1=>67}, {:data0=>\"The Cranberries\", :data1=>61}, {:data0=>\"Cat Stevens\", :data1=>57}, {:data0=>\"Howard Shore\", :data1=>56}, {:data0=>\"Nick Drake\", :data1=>51}]>}, :extension=>[]}>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"top_ten = artists.sort(ascending: false).head\n",
"\n",
"top_ten.plot type: :bar do |plt|\n",
" plt.yrange [0,300]\n",
" plt.width 1120 \n",
" plt.height 800\n",
" plt.legend true\n",
" plt.rotate_x_label 45\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Ruby 2.2.3",
"language": "ruby",
"name": "ruby"
},
"language_info": {
"file_extension": ".rb",
"mimetype": "application/x-ruby",
"name": "ruby",
"version": "2.2.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment