{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook describe indexing in Daru::DataFrame with the newly added Categorical Index and other index classes." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "if(window['d3'] === undefined ||\n", " window['Nyaplot'] === undefined){\n", " var path = {\"d3\":\"https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min\",\"downloadable\":\"http://cdn.rawgit.com/domitry/d3-downloadable/master/d3-downloadable\"};\n", "\n", "\n", "\n", " var shim = {\"d3\":{\"exports\":\"d3\"},\"downloadable\":{\"exports\":\"downloadable\"}};\n", "\n", " require.config({paths: path, shim:shim});\n", "\n", "\n", "require(['d3'], function(d3){window['d3']=d3;console.log('finished loading d3');require(['downloadable'], function(downloadable){window['downloadable']=downloadable;console.log('finished loading downloadable');\n", "\n", "\tvar script = d3.select(\"head\")\n", "\t .append(\"script\")\n", "\t .attr(\"src\", \"http://cdn.rawgit.com/domitry/Nyaplotjs/master/release/nyaplot.js\")\n", "\t .attr(\"async\", true);\n", "\n", "\tscript[0][0].onload = script[0][0].onreadystatechange = function(){\n", "\n", "\n", "\t var event = document.createEvent(\"HTMLEvents\");\n", "\t event.initEvent(\"load_nyaplot\",false,false);\n", "\t window.dispatchEvent(event);\n", "\t console.log('Finished loading Nyaplotjs');\n", "\n", "\t};\n", "\n", "\n", "});});\n", "}\n" ], "text/plain": [ "\"if(window['d3'] === undefined ||\\n window['Nyaplot'] === undefined){\\n var path = {\\\"d3\\\":\\\"https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min\\\",\\\"downloadable\\\":\\\"http://cdn.rawgit.com/domitry/d3-downloadable/master/d3-downloadable\\\"};\\n\\n\\n\\n var shim = {\\\"d3\\\":{\\\"exports\\\":\\\"d3\\\"},\\\"downloadable\\\":{\\\"exports\\\":\\\"downloadable\\\"}};\\n\\n require.config({paths: path, shim:shim});\\n\\n\\nrequire(['d3'], function(d3){window['d3']=d3;console.log('finished loading d3');require(['downloadable'], function(downloadable){window['downloadable']=downloadable;console.log('finished loading downloadable');\\n\\n\\tvar script = d3.select(\\\"head\\\")\\n\\t .append(\\\"script\\\")\\n\\t .attr(\\\"src\\\", \\\"http://cdn.rawgit.com/domitry/Nyaplotjs/master/release/nyaplot.js\\\")\\n\\t .attr(\\\"async\\\", true);\\n\\n\\tscript[0][0].onload = script[0][0].onreadystatechange = function(){\\n\\n\\n\\t var event = document.createEvent(\\\"HTMLEvents\\\");\\n\\t event.initEvent(\\\"load_nyaplot\\\",false,false);\\n\\t window.dispatchEvent(event);\\n\\t console.log('Finished loading Nyaplotjs');\\n\\n\\t};\\n\\n\\n});});\\n}\\n\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "true" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "require 'daru'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Helper function to get a sample dataframe." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":sample_df" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def sample_df idx\n", " Daru::DataFrame.new({\n", " a: 1..5,\n", " b: 'a'..'e',\n", " c: 11..15\n", " }, index: idx)\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Categorical Index" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "idx = Daru::CategoricalIndex.new [:a, :b, :a, :b, :c]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x3)
abc
a1a11
b2b12
a3c13
b4d14
c5e15
" ], "text/plain": [ "#\n", " a b c\n", " a 1 a 11\n", " b 2 b 12\n", " a 3 c 13\n", " b 4 d 14\n", " c 5 e 15" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = sample_df idx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### #row[]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Retrive rows by category or position\n", "\n", "**Note:** When index is both a valid category as well as position, then it will treated as category. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(3x3)
abc
a1a11
a3c13
c5e15
" ], "text/plain": [ "#\n", " a b c\n", " a 1 a 11\n", " a 3 c 13\n", " c 5 e 15" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.row[:a, :c]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(2x3)
abc
a1a11
b2b12
" ], "text/plain": [ "#\n", " a b c\n", " a 1 a 11\n", " b 2 b 12" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.row[0, 1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### #[]\n", "\n", "Its to fetch vectors and works similar to `#row[]`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x2)
ab
a1a
b2b
a3c
b4d
c5e
" ], "text/plain": [ "#\n", " a b\n", " a 1 a\n", " b 2 b\n", " a 3 c\n", " b 4 d\n", " c 5 e" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[:a, :b]" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### #row.at\n", "\n", "To retrive rows by position." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(3x3)
abc
a1a11
b2b12
a3c13
" ], "text/plain": [ "#\n", " a b c\n", " a 1 a 11\n", " b 2 b 12\n", " a 3 c 13" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.row.at 0, 1, 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### #at" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To retrive vectors by position." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x2)
ab
a1a
b2b
a3c
b4d
c5e
" ], "text/plain": [ "#\n", " a b\n", " a 1 a\n", " b 2 b\n", " a 3 c\n", " b 4 d\n", " c 5 e" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.at 0, 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### #row[]=" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set rows by categories or positions.\n", "\n", "**Note:** In case index is both a valid category and position, it will taken as category." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x3)
abc
axyz
b2b12
axyz
b4d14
c5e15
" ], "text/plain": [ "#\n", " a b c\n", " a x y z\n", " b 2 b 12\n", " a x y z\n", " b 4 d 14\n", " c 5 e 15" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.row[:a] = ['x', 'y', 'z']\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### #[]=" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Works similar to `#row[]=` and is for vectors." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x3)
abc
a1yz
b1b12
a1yz
b1d14
c1e15
" ], "text/plain": [ "#\n", " a b c\n", " a 1 y z\n", " b 1 b 12\n", " a 1 y z\n", " b 1 d 14\n", " c 1 e 15" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[:a] = [1]*5\n", "df" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### #row.set_at\n", "\n", "\n", "Set rows by positions to a given vector" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x3)
abc
a1a11
b2b12
a3c13
b4d14
c5e15
" ], "text/plain": [ "#\n", " a b c\n", " a 1 a 11\n", " b 2 b 12\n", " a 3 c 13\n", " b 4 d 14\n", " c 5 e 15" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#reset dataframe\n", "df = sample_df idx\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x3)
abc
axyz
b2b12
a3c13
b4d14
cxyz
" ], "text/plain": [ "#\n", " a b c\n", " a x y z\n", " b 2 b 12\n", " a 3 c 13\n", " b 4 d 14\n", " c x y z" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.row.set_at [0, 4], ['x', 'y', 'z']\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### #set_at\n", "\n", "Works similar to `#row.at_set`" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "
Daru::DataFrame(5x3)
abc
az
b12
a13
b14
cz
" ], "text/plain": [ "#\n", " a b c\n", " a nil nil z\n", " b nil nil 12\n", " a nil nil 13\n", " b nil nil 14\n", " c nil nil z" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.set_at [0, 1], [nil]*5\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Other index classes" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.2.1", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": ".rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.2.3" } }, "nbformat": 4, "nbformat_minor": 0 }