From b9361e7605ab7c7c00d67fc05536f035b772f22a Mon Sep 17 00:00:00 2001 From: luwei0917 Date: Mon, 12 Jun 2017 15:20:00 -0500 Subject: [PATCH] test --- .DS_Store | Bin 0 -> 8196 bytes notebooks/00.00-Preface.ipynb | 4 +- .../01.00-IPython-Beyond-Normal-Python.ipynb | 4 +- notebooks/01.01-Help-And-Documentation.ipynb | 72 +- .../01.02-Shell-Keyboard-Shortcuts.ipynb | 101 +- notebooks/01.03-Magic-Commands.ipynb | 252 +++- notebooks/01.04-Input-Output-History.ipynb | 53 +- .../01.05-IPython-And-Shell-Commands.ipynb | 203 ++- notebooks/01.06-Errors-and-Debugging.ipynb | 246 +++- notebooks/01.07-Timing-and-Profiling.ipynb | 197 ++- notebooks/01.08-More-IPython-Resources.ipynb | 4 +- notebooks/02.00-Introduction-to-NumPy.ipynb | 12 +- .../02.01-Understanding-Data-Types.ipynb | 244 ++-- .../02.02-The-Basics-Of-NumPy-Arrays.ipynb | 436 +++--- .../02.03-Computation-on-arrays-ufuncs.ipynb | 155 +-- ....04-Computation-on-arrays-aggregates.ipynb | 172 +-- ...5-Computation-on-arrays-broadcasting.ipynb | 225 ++- .../02.06-Boolean-Arrays-and-Masks.ipynb | 166 +-- notebooks/02.07-Fancy-Indexing.ipynb | 238 ++-- notebooks/02.08-Sorting.ipynb | 246 ++-- notebooks/02.09-Structured-Data-NumPy.ipynb | 68 +- notebooks/03.00-Introduction-to-Pandas.ipynb | 8 +- .../03.01-Introducing-Pandas-Objects.ipynb | 440 +++--- .../03.02-Data-Indexing-and-Selection.ipynb | 324 ++--- notebooks/03.03-Operations-in-Pandas.ipynb | 284 ++-- notebooks/03.04-Missing-Values.ipynb | 138 +- notebooks/03.05-Hierarchical-Indexing.ipynb | 405 +++--- notebooks/03.06-Concat-And-Append.ipynb | 88 +- notebooks/03.07-Merge-and-Join.ipynb | 341 ++--- .../03.08-Aggregation-and-Grouping.ipynb | 1233 ++++++++++++++--- notebooks/03.09-Pivot-Tables.ipynb | 170 ++- notebooks/03.10-Working-With-Strings.ipynb | 210 ++- .../03.11-Working-with-Time-Series.ipynb | 324 ++--- .../03.12-Performance-Eval-and-Query.ipynb | 124 +- .../04.00-Introduction-To-Matplotlib.ipynb | 32 +- notebooks/04.15-Further-Resources.ipynb | 4 +- notebooks/05.04-Feature-Engineering.ipynb | 72 +- notebooks/mprun_demo.py | 7 + notebooks/recipeitems-latest.json.gz | Bin 0 -> 20 bytes notebooks/recipeitems-latest.json.gz.1 | Bin 0 -> 20 bytes 40 files changed, 4548 insertions(+), 2754 deletions(-) create mode 100644 .DS_Store create mode 100644 notebooks/mprun_demo.py create mode 100644 notebooks/recipeitems-latest.json.gz create mode 100644 notebooks/recipeitems-latest.json.gz.1 diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cc9a3fdcf148a3c5f26a8a110831d66c0e51d06a GIT binary patch literal 8196 zcmeHMTWl0n82-O)OJ|q}(^_d!H@jtl60GSKu?8`)^rH3xZD?y-RLbto2ot6=%g*c; zMB|!hG)mMbZ$x?U#fbW3y*+t*(CCxY2Z%3*#LI)4;0uW{@jr8>4ZRtk43Rm_Ip3c1 z|Nl9AzWvUe{<}nk&XUni)I>xISAn|5%`!#UMO{*2;YbxDIG!j+F8>`R&-RvhM*|T9 z5d#qe5d#qe5d&8P1AJ$TqO5T5OKa3d3`7iElMIOGLz1h&Oo$bU!J~tlAO&Eo=Ha05 zYt93Lm}H2V5GxXcP@Yp}4+ujMrWlanY)=Yz#!QG6i87oZ!wKQa2s0D}t8-j3a3^FW zMs37E#K2MpMDDJV!&$pe=9T$-xhrS8IX>aDxq@wZemZ>tv8w8tRkez`TGOtJ_w^6# z-8VR?>m|?JZ`xVkDx2L|-}EN+wcZhTx;O7SLq)S}nbTu=*Dg&tY^lp^ z4z22llbteW>zmf!c+<`C_+sz5S;k8_>sZP1Pv|K{k!v)^Q>s3rJYet+_qv9d(FiQ@ z=6H*u+%LwviYB*mSlb$JRrRbg;_-gv6m43&s(b3lQOgNKw`(1WZm6SnHfP#$wjJ6| zMekR~%5uAMutD3csN;EeYKk}G$+6COx1xWk925%=WIcbdU^=|E*xKFA@%V%o-(wi2 zp(si!^GGI8NGh{MDkUX>C?F)2Nz1-2p4M?nQz!M&K`PJ*dX`?KGxQ$K(EIcmeNE@+ zJYA&U=y$qAf6!$BwWz~-Y`{ir!e+D~jcvFM8T6tL{TRa`WRZsf3q^P+p^TGw0#D*8 zJdNk@5?;ouIE^>(Hr~Oz_yC{aQ+$pua1P(&NBo4J@e3~D&scR#jn&Kd84E898k*Zj zINrdxyy^>~>Q67P`oul=_V)F6UA3w|zeY&?`i2|UH6}N0ZQH(MSLeJS7HQy0Ee7(F z`U-S6r>o#&UnpjICbYyT%hNo*($Uas#W7N5g?ICYL_!xLl-P-ek=+KzyrdRWEkk&hQvUL>;Us`v^*-D|UtA!_mqW*gs|D%Y%qHpO3 z`jzE-nf^izR-+L~7H%s#u#08eg>Lj$15GxXSgv)>aMSwZ~Z)|k`2cJOHT#F3+4g8VE AzyJUM literal 0 HcmV?d00001 diff --git a/notebooks/00.00-Preface.ipynb b/notebooks/00.00-Preface.ipynb index e9e8d99a8..adc42c76f 100644 --- a/notebooks/00.00-Preface.ipynb +++ b/notebooks/00.00-Preface.ipynb @@ -190,9 +190,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.00-IPython-Beyond-Normal-Python.ipynb b/notebooks/01.00-IPython-Beyond-Normal-Python.ipynb index 5110398b8..354e04e0d 100644 --- a/notebooks/01.00-IPython-Beyond-Normal-Python.ipynb +++ b/notebooks/01.00-IPython-Beyond-Normal-Python.ipynb @@ -139,9 +139,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.01-Help-And-Documentation.ipynb b/notebooks/01.01-Help-And-Documentation.ipynb index 47af64c88..d409cff7f 100644 --- a/notebooks/01.01-Help-And-Documentation.ipynb +++ b/notebooks/01.01-Help-And-Documentation.ipynb @@ -89,6 +89,19 @@ "```" ] }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "L = [1, 2, 3]\n", + "L.insert?\n", + "L?" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -116,6 +129,41 @@ "```" ] }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "In [6]: def square(a):\n", + " ....: \"\"\"Return the square of a.\"\"\"\n", + " ....: return a ** 2" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "square?" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "square??" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -281,6 +329,26 @@ "(Note that for brevity, I did not print here all 399 importable packages and modules on my system.)" ] }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "*Warning?" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "str.*find?" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -342,9 +410,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.02-Shell-Keyboard-Shortcuts.ipynb b/notebooks/01.02-Shell-Keyboard-Shortcuts.ipynb index 5018ca578..ee294df86 100644 --- a/notebooks/01.02-Shell-Keyboard-Shortcuts.ipynb +++ b/notebooks/01.02-Shell-Keyboard-Shortcuts.ipynb @@ -92,6 +92,103 @@ "| ``Ctrl-r`` | Reverse-search through command history |" ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "history\n" + ] + } + ], + "source": [ + "history" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "!history" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "history\n", + "!history\n", + "%history\n" + ] + } + ], + "source": [ + "%history" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "history\n", + "!history\n", + "%history\n", + "%history | grep \"h\"\n", + "a = %history\n" + ] + } + ], + "source": [ + "%history" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -189,9 +286,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.03-Magic-Commands.ipynb b/notebooks/01.03-Magic-Commands.ipynb index 489e0d6a7..e3c631a5a 100644 --- a/notebooks/01.03-Magic-Commands.ipynb +++ b/notebooks/01.03-Magic-Commands.ipynb @@ -91,6 +91,61 @@ "These magic commands, like others we'll see, make available functionality that would be difficult or impossible in a standard Python interpreter." ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'python' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpython\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mversion\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'python' is not defined" + ] + } + ], + "source": [ + "python --version" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:root:Line magic function `%python2` not found (But cell magic `%%python2` exists, did you mean that instead?).\n" + ] + } + ], + "source": [ + "%python2 --version" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:root:Line magic function `%python3` not found (But cell magic `%%python3` exists, did you mean that instead?).\n" + ] + } + ], + "source": [ + "%python3 --version" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -133,6 +188,44 @@ "There are several options to fine-tune how your code is run; you can see the documentation in the normal way, by typing **``%run?``** in the IPython interpreter." ] }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "246 µs ± 4.07 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" + ] + } + ], + "source": [ + "In [8]: %timeit L = [n ** 2 for n in range(1000)]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "299 µs ± 17.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" + ] + } + ], + "source": [ + "In [9]: %%timeit\n", + " ...: L = []\n", + " ...: for n in range(1000):\n", + " ...: L.append(n ** 2)\n", + " ...: " + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -163,6 +256,161 @@ "We'll explore ``%timeit`` and other approaches to timing and profiling code in [Profiling and Timing Code](01.07-Timing-and-Profiling.ipynb)." ] }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "application/json": { + "cell": { + "!": "OSMagics", + "HTML": "Other", + "SVG": "Other", + "bash": "Other", + "capture": "ExecutionMagics", + "debug": "ExecutionMagics", + "file": "Other", + "html": "DisplayMagics", + "javascript": "DisplayMagics", + "js": "DisplayMagics", + "latex": "DisplayMagics", + "markdown": "DisplayMagics", + "perl": "Other", + "prun": "ExecutionMagics", + "pypy": "Other", + "python": "Other", + "python2": "Other", + "python3": "Other", + "ruby": "Other", + "script": "ScriptMagics", + "sh": "Other", + "svg": "DisplayMagics", + "sx": "OSMagics", + "system": "OSMagics", + "time": "ExecutionMagics", + "timeit": "ExecutionMagics", + "writefile": "OSMagics" + }, + "line": { + "alias": "OSMagics", + "alias_magic": "BasicMagics", + "autocall": "AutoMagics", + "automagic": "AutoMagics", + "autosave": "KernelMagics", + "bookmark": "OSMagics", + "cat": "Other", + "cd": "OSMagics", + "clear": "KernelMagics", + "colors": "BasicMagics", + "config": "ConfigMagics", + "connect_info": "KernelMagics", + "cp": "Other", + "debug": "ExecutionMagics", + "dhist": "OSMagics", + "dirs": "OSMagics", + "doctest_mode": "BasicMagics", + "ed": "Other", + "edit": "KernelMagics", + "env": "OSMagics", + "gui": "BasicMagics", + "hist": "Other", + "history": "HistoryMagics", + "killbgscripts": "ScriptMagics", + "ldir": "Other", + "less": "KernelMagics", + "lf": "Other", + "lk": "Other", + "ll": "Other", + "load": "CodeMagics", + "load_ext": "ExtensionMagics", + "loadpy": "CodeMagics", + "logoff": "LoggingMagics", + "logon": "LoggingMagics", + "logstart": "LoggingMagics", + "logstate": "LoggingMagics", + "logstop": "LoggingMagics", + "ls": "Other", + "lsmagic": "BasicMagics", + "lx": "Other", + "macro": "ExecutionMagics", + "magic": "BasicMagics", + "man": "KernelMagics", + "matplotlib": "PylabMagics", + "mkdir": "Other", + "more": "KernelMagics", + "mv": "Other", + "notebook": "BasicMagics", + "page": "BasicMagics", + "pastebin": "CodeMagics", + "pdb": "ExecutionMagics", + "pdef": "NamespaceMagics", + "pdoc": "NamespaceMagics", + "pfile": "NamespaceMagics", + "pinfo": "NamespaceMagics", + "pinfo2": "NamespaceMagics", + "pip": "BasicMagics", + "popd": "OSMagics", + "pprint": "BasicMagics", + "precision": "BasicMagics", + "profile": "BasicMagics", + "prun": "ExecutionMagics", + "psearch": "NamespaceMagics", + "psource": "NamespaceMagics", + "pushd": "OSMagics", + "pwd": "OSMagics", + "pycat": "OSMagics", + "pylab": "PylabMagics", + "qtconsole": "KernelMagics", + "quickref": "BasicMagics", + "recall": "HistoryMagics", + "rehashx": "OSMagics", + "reload_ext": "ExtensionMagics", + "rep": "Other", + "rerun": "HistoryMagics", + "reset": "NamespaceMagics", + "reset_selective": "NamespaceMagics", + "rm": "Other", + "rmdir": "Other", + "run": "ExecutionMagics", + "save": "CodeMagics", + "sc": "OSMagics", + "set_env": "OSMagics", + "store": "StoreMagics", + "sx": "OSMagics", + "system": "OSMagics", + "tb": "ExecutionMagics", + "time": "ExecutionMagics", + "timeit": "ExecutionMagics", + "unalias": "OSMagics", + "unload_ext": "ExtensionMagics", + "who": "NamespaceMagics", + "who_ls": "NamespaceMagics", + "whos": "NamespaceMagics", + "xdel": "NamespaceMagics", + "xmode": "BasicMagics" + } + }, + "text/plain": [ + "Available line magics:\n", + "%alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode\n", + "\n", + "Available cell magics:\n", + "%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile\n", + "\n", + "Automagic is ON, % prefix IS NOT needed for line magics." + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%lsmagic" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -220,9 +468,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.04-Input-Output-History.ipynb b/notebooks/01.04-Input-Output-History.ipynb index 4b0dcfd04..e5680474f 100644 --- a/notebooks/01.04-Input-Output-History.ipynb +++ b/notebooks/01.04-Input-Output-History.ipynb @@ -51,6 +51,55 @@ "```" ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['', 'In']" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "In" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1: ['', 'In', 'Out']}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Out" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -204,9 +253,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.05-IPython-And-Shell-Commands.ipynb b/notebooks/01.05-IPython-And-Shell-Commands.ipynb index 7c4f8ebb1..54c0fad2b 100644 --- a/notebooks/01.05-IPython-And-Shell-Commands.ipynb +++ b/notebooks/01.05-IPython-And-Shell-Commands.ipynb @@ -107,6 +107,165 @@ "```" ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'ls' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mls\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'ls' is not defined" + ] + } + ], + "source": [ + "a = ls" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "00.00-Preface.ipynb\r\n", + "01.00-IPython-Beyond-Normal-Python.ipynb\r\n", + "01.01-Help-And-Documentation.ipynb\r\n", + "01.02-Shell-Keyboard-Shortcuts.ipynb\r\n", + "01.03-Magic-Commands.ipynb\r\n", + "01.04-Input-Output-History.ipynb\r\n", + "01.05-IPython-And-Shell-Commands.ipynb\r\n", + "01.06-Errors-and-Debugging.ipynb\r\n", + "01.07-Timing-and-Profiling.ipynb\r\n", + "01.08-More-IPython-Resources.ipynb\r\n", + "02.00-Introduction-to-NumPy.ipynb\r\n", + "02.01-Understanding-Data-Types.ipynb\r\n", + "02.02-The-Basics-Of-NumPy-Arrays.ipynb\r\n", + "02.03-Computation-on-arrays-ufuncs.ipynb\r\n", + "02.04-Computation-on-arrays-aggregates.ipynb\r\n", + "02.05-Computation-on-arrays-broadcasting.ipynb\r\n", + "02.06-Boolean-Arrays-and-Masks.ipynb\r\n", + "02.07-Fancy-Indexing.ipynb\r\n", + "02.08-Sorting.ipynb\r\n", + "02.09-Structured-Data-NumPy.ipynb\r\n", + "03.00-Introduction-to-Pandas.ipynb\r\n", + "03.01-Introducing-Pandas-Objects.ipynb\r\n", + "03.02-Data-Indexing-and-Selection.ipynb\r\n", + "03.03-Operations-in-Pandas.ipynb\r\n", + "03.04-Missing-Values.ipynb\r\n", + "03.05-Hierarchical-Indexing.ipynb\r\n", + "03.06-Concat-And-Append.ipynb\r\n", + "03.07-Merge-and-Join.ipynb\r\n", + "03.08-Aggregation-and-Grouping.ipynb\r\n", + "03.09-Pivot-Tables.ipynb\r\n", + "03.10-Working-With-Strings.ipynb\r\n", + "03.11-Working-with-Time-Series.ipynb\r\n", + "03.12-Performance-Eval-and-Query.ipynb\r\n", + "03.13-Further-Resources.ipynb\r\n", + "04.00-Introduction-To-Matplotlib.ipynb\r\n", + "04.01-Simple-Line-Plots.ipynb\r\n", + "04.02-Simple-Scatter-Plots.ipynb\r\n", + "04.03-Errorbars.ipynb\r\n", + "04.04-Density-and-Contour-Plots.ipynb\r\n", + "04.05-Histograms-and-Binnings.ipynb\r\n", + "04.06-Customizing-Legends.ipynb\r\n", + "04.07-Customizing-Colorbars.ipynb\r\n", + "04.08-Multiple-Subplots.ipynb\r\n", + "04.09-Text-and-Annotation.ipynb\r\n", + "04.10-Customizing-Ticks.ipynb\r\n", + "04.11-Settings-and-Stylesheets.ipynb\r\n", + "04.12-Three-Dimensional-Plotting.ipynb\r\n", + "04.13-Geographic-Data-With-Basemap.ipynb\r\n", + "04.14-Visualization-With-Seaborn.ipynb\r\n", + "04.15-Further-Resources.ipynb\r\n", + "05.00-Machine-Learning.ipynb\r\n", + "05.01-What-Is-Machine-Learning.ipynb\r\n", + "05.02-Introducing-Scikit-Learn.ipynb\r\n", + "05.03-Hyperparameters-and-Model-Validation.ipynb\r\n", + "05.04-Feature-Engineering.ipynb\r\n", + "05.05-Naive-Bayes.ipynb\r\n", + "05.06-Linear-Regression.ipynb\r\n", + "05.07-Support-Vector-Machines.ipynb\r\n", + "05.08-Random-Forests.ipynb\r\n", + "05.09-Principal-Component-Analysis.ipynb\r\n", + "05.10-Manifold-Learning.ipynb\r\n", + "05.11-K-Means.ipynb\r\n", + "05.12-Gaussian-Mixtures.ipynb\r\n", + "05.13-Kernel-Density-Estimation.ipynb\r\n", + "05.14-Image-Features.ipynb\r\n", + "05.15-Learning-More.ipynb\r\n", + "06.00-Figure-Code.ipynb\r\n", + "Index.ipynb\r\n", + "\u001b[34mdata\u001b[m\u001b[m/\r\n", + "\u001b[34mfigures\u001b[m\u001b[m/\r\n", + "helpers_05_08.py\r\n" + ] + } + ], + "source": [ + "ls" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'ls' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'ls' is not defined" + ] + } + ], + "source": [ + "type(ls)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'directory' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdirectory\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'directory' is not defined" + ] + } + ], + "source": [ + "type(directory)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -140,6 +299,46 @@ "For more information on these, you can use IPython's built-in help features." ] }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "directory = !pwd" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "IPython.utils.text.SList" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(directory)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "directory?" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -237,9 +436,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.06-Errors-and-Debugging.ipynb b/notebooks/01.06-Errors-and-Debugging.ipynb index 0125168e4..77ede7734 100644 --- a/notebooks/01.06-Errors-and-Debugging.ipynb +++ b/notebooks/01.06-Errors-and-Debugging.ipynb @@ -45,7 +45,7 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -61,16 +61,15 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ZeroDivisionError", "evalue": "division by zero", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m\u001b[0m in \u001b[0;36mfunc2\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m\u001b[0m in \u001b[0;36mfunc1\u001b[0;34m(a, b)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", @@ -98,9 +97,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -117,9 +114,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ZeroDivisionError", @@ -148,9 +143,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -167,18 +160,17 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ZeroDivisionError", "evalue": "division by zero", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mglobal\u001b[0m \u001b[0;36mfunc2\u001b[0m \u001b[0;34m= \u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mfunc2\u001b[0;34m(x=1)\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mglobal\u001b[0m \u001b[0;36mfunc1\u001b[0m \u001b[0;34m= \u001b[0m\u001b[0;34m\n \u001b[0m\u001b[0;36ma\u001b[0m \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0m\u001b[0;36mb\u001b[0m \u001b[0;34m= 0\u001b[0m\n", + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mglobal\u001b[0m \u001b[0;36mfunc2\u001b[0m \u001b[0;34m= \u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mfunc2\u001b[0;34m(x=1)\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36mglobal\u001b[0m \u001b[0;36mfunc1\u001b[0m \u001b[0;34m= \u001b[0m\u001b[0;34m\n \u001b[0m\u001b[0;36ma\u001b[0m \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0m\u001b[0;36mb\u001b[0m \u001b[0;34m= 0\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mfunc1\u001b[0;34m(a=1, b=0)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m \u001b[0;36ma\u001b[0m \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n \u001b[0m\u001b[0;36mb\u001b[0m \u001b[0;34m= 0\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero" ] @@ -221,9 +213,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -233,11 +223,22 @@ "\u001b[0;32m 1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\n", - "ipdb> print(a)\n", - "1\n", - "ipdb> print(b)\n", - "0\n", + "ipdb> a\n", + "a = 1\n", + "b = 0\n", + "ipdb> b\n", + "ipdb> b\n", + "ipdb> z\n", + "*** NameError: name 'z' is not defined\n", + "ipdb> a\n", + "a = 1\n", + "b = 0\n", + "ipdb> b\n", + "ipdb> x\n", + "*** NameError: name 'x' is not defined\n", "ipdb> quit\n" ] } @@ -256,9 +257,56 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> \u001b[0;32m\u001b[0m(2)\u001b[0;36mfunc1\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m 1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> up\n", + "> \u001b[0;32m\u001b[0m(7)\u001b[0;36mfunc2\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m 3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 6 \u001b[0;31m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m----> 7 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> print(x)\n", + "1\n", + "ipdb> x\n", + "1\n", + "ipdb> a\n", + "x = 1\n", + "ipdb> b\n", + "ipdb> a\n", + "x = 1\n", + "ipdb> down\n", + "> \u001b[0;32m\u001b[0m(2)\u001b[0;36mfunc1\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m 1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> quit\n" + ] + } + ], + "source": [ + "%debug" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -307,9 +355,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -339,7 +385,13 @@ "\u001b[0;32m 1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\u001b[0;32m 3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0m\n", + "ipdb> a\n", + "a = 1\n", + "b = 0\n", + "ipdb> b\n", "ipdb> print(b)\n", "0\n", "ipdb> quit\n" @@ -352,6 +404,130 @@ "func2(1)" ] }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def func1(z, b):\n", + " return z / b\n", + "\n", + "def func2(x):\n", + " z = x\n", + " b = x - 1\n", + " return func1(z, b)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "Traceback \u001b[0;36m(most recent call last)\u001b[0m:\n", + " File \u001b[1;32m\"\"\u001b[0m, line \u001b[1;32m1\u001b[0m, in \u001b[1;35m\u001b[0m\n func2(1)\n", + " File \u001b[1;32m\"\"\u001b[0m, line \u001b[1;32m7\u001b[0m, in \u001b[1;35mfunc2\u001b[0m\n return func1(z, b)\n", + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0;36m, in \u001b[0;35mfunc1\u001b[0;36m\u001b[0m\n\u001b[0;31m return z / b\u001b[0m\n", + "\u001b[0;31mZeroDivisionError\u001b[0m\u001b[0;31m:\u001b[0m division by zero\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> \u001b[0;32m\u001b[0m(2)\u001b[0;36mfunc1\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m 1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> a\n", + "z = 1\n", + "b = 0\n", + "ipdb> quit\n" + ] + } + ], + "source": [ + "func2(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "Traceback \u001b[0;36m(most recent call last)\u001b[0m:\n", + " File \u001b[1;32m\"\"\u001b[0m, line \u001b[1;32m1\u001b[0m, in \u001b[1;35m\u001b[0m\n func2(1)\n", + " File \u001b[1;32m\"\"\u001b[0m, line \u001b[1;32m7\u001b[0m, in \u001b[1;35mfunc2\u001b[0m\n return func1(z, b)\n", + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0;36m, in \u001b[0;35mfunc1\u001b[0;36m\u001b[0m\n\u001b[0;31m return z / b\u001b[0m\n", + "\u001b[0;31mZeroDivisionError\u001b[0m\u001b[0;31m:\u001b[0m division by zero\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> \u001b[0;32m\u001b[0m(2)\u001b[0;36mfunc1\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m 1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[0;32m 5 \u001b[0;31m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\n", + "ipdb> list\n", + "\u001b[1;32m 1 \u001b[0m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m----> 2 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0m\u001b[1;32m 3 \u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[1;32m 4 \u001b[0m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[1;32m 5 \u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[1;32m 6 \u001b[0m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[1;32m 7 \u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\n", + "ipdb> h\n", + "\n", + "Documented commands (type help ):\n", + "========================================\n", + "EOF cl disable interact next psource rv unt \n", + "a clear display j p q s until \n", + "alias commands down jump pdef quit source up \n", + "args condition enable l pdoc r step w \n", + "b cont exit list pfile restart tbreak whatis\n", + "break continue h ll pinfo return u where \n", + "bt d help longlist pinfo2 retval unalias \n", + "c debug ignore n pp run undisplay\n", + "\n", + "Miscellaneous help topics:\n", + "==========================\n", + "exec pdb\n", + "\n", + "ipdb> h a\n", + "a(rgs)\n", + " Print the argument list of the current function.\n", + "ipdb> \n", + "a(rgs)\n", + " Print the argument list of the current function.\n", + "ipdb> n\n" + ] + } + ], + "source": [ + "func2(1)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -408,9 +584,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.6.1" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.07-Timing-and-Profiling.ipynb b/notebooks/01.07-Timing-and-Profiling.ipynb index 2a65b75a6..48542d12a 100644 --- a/notebooks/01.07-Timing-and-Profiling.ipynb +++ b/notebooks/01.07-Timing-and-Profiling.ipynb @@ -55,15 +55,13 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "100000 loops, best of 3: 1.54 µs per loop\n" + "1.17 µs ± 31.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)\n" ] } ], @@ -82,15 +80,13 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1 loops, best of 3: 407 ms per loop\n" + "307 ms ± 10.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], @@ -114,9 +110,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -143,9 +137,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -167,9 +159,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -201,9 +191,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -229,6 +217,95 @@ "For more information on ``%time`` and ``%timeit``, as well as their available options, use the IPython help functionality (i.e., type ``%time?`` at the IPython prompt)." ] }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "4 << 1" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "4 >> 2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "4 >> 3" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "4 >> 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -243,9 +320,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -267,9 +344,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -327,9 +402,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -345,9 +420,26 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:root:Cell magic `%%lprun` not found (But line magic `%lprun` exists, did you mean that instead?).\n" + ] + } + ], + "source": [ + "%lprun -f sum_of_lists sum_of_lists(5000)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -402,9 +494,9 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 2, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -421,16 +513,14 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "peak memory: 100.08 MiB, increment: 61.36 MiB\n" + "peak memory: 113.03 MiB, increment: 67.89 MiB\n" ] } ], @@ -450,10 +540,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -474,6 +562,25 @@ " return total" ] }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR: Could not find file \n", + "NOTE: %mprun can only be used on functions defined in physical files, and not in the IPython environment.\n", + "\n" + ] + } + ], + "source": [ + "%mprun -f sum_of_lists sum_of_lists(1000000)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -483,10 +590,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -558,9 +663,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/01.08-More-IPython-Resources.ipynb b/notebooks/01.08-More-IPython-Resources.ipynb index f0182f8ba..caf407abf 100644 --- a/notebooks/01.08-More-IPython-Resources.ipynb +++ b/notebooks/01.08-More-IPython-Resources.ipynb @@ -81,9 +81,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.00-Introduction-to-NumPy.ipynb b/notebooks/02.00-Introduction-to-NumPy.ipynb index c9ad97f9c..61276b3d3 100644 --- a/notebooks/02.00-Introduction-to-NumPy.ipynb +++ b/notebooks/02.00-Introduction-to-NumPy.ipynb @@ -55,9 +55,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -86,9 +84,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np" @@ -150,9 +146,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.01-Understanding-Data-Types.ipynb b/notebooks/02.01-Understanding-Data-Types.ipynb index 2f053aae2..166317237 100644 --- a/notebooks/02.01-Understanding-Data-Types.ipynb +++ b/notebooks/02.01-Understanding-Data-Types.ipynb @@ -137,9 +137,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -160,9 +158,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -189,9 +185,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -212,9 +206,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -241,9 +233,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -300,9 +290,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -337,10 +325,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ "import numpy as np" @@ -357,10 +343,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 2, + "metadata": {}, "outputs": [ { "data": { @@ -368,7 +352,7 @@ "array([1, 4, 2, 5, 3])" ] }, - "execution_count": 8, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -389,9 +373,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -418,9 +400,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -446,10 +426,18 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# nested lists result in multi-dimensional arrays\n", + "a = np.array([range(i, i + 3) for i in [2, 4, 6]])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -459,14 +447,35 @@ " [6, 7, 8]])" ] }, - "execution_count": 11, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# nested lists result in multi-dimensional arrays\n", - "np.array([range(i, i + 3) for i in [2, 4, 6]])" + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2, 4, 6],\n", + " [3, 5, 7],\n", + " [4, 6, 8]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.T" ] }, { @@ -476,6 +485,78 @@ "The inner lists are treated as rows of the resulting two-dimensional array." ] }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{2: array([1, 4, 2, 5, 3]), 4: array([[2, 4, 6],\n", + " [3, 5, 7],\n", + " [4, 6, 8]]), 5: array([[2, 3, 4],\n", + " [4, 5, 6],\n", + " [6, 7, 8]])}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Out" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['',\n", + " 'import numpy as np',\n", + " '# integer array:\\nnp.array([1, 4, 2, 5, 3])',\n", + " '# nested lists result in multi-dimensional arrays\\na = np.array([range(i, i + 3) for i in [2, 4, 6]])',\n", + " 'a.T',\n", + " 'a',\n", + " 'Out',\n", + " 'In']" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "In" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'IN' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mIN\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'IN' is not defined" + ] + } + ], + "source": [ + "IN" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -488,10 +569,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -499,7 +578,7 @@ "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -511,10 +590,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -524,7 +601,7 @@ " [ 1., 1., 1., 1., 1.]])" ] }, - "execution_count": 13, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -537,9 +614,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -562,9 +637,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -584,12 +657,31 @@ "np.arange(0, 20, 2)" ] }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.float64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.linspace(0, 1, 5)\n", + "type(a[0])" + ] + }, { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -610,9 +702,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -636,9 +726,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -662,9 +750,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -686,10 +772,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "data": { @@ -699,7 +783,7 @@ " [ 0., 0., 1.]])" ] }, - "execution_count": 20, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -711,18 +795,16 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([ 1., 1., 1.])" + "array([ 0., 0., 0.])" ] }, - "execution_count": 21, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -817,9 +899,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.02-The-Basics-Of-NumPy-Arrays.ipynb b/notebooks/02.02-The-Basics-Of-NumPy-Arrays.ipynb index c8bde4cb7..5148be07f 100644 --- a/notebooks/02.02-The-Basics-Of-NumPy-Arrays.ipynb +++ b/notebooks/02.02-The-Basics-Of-NumPy-Arrays.ipynb @@ -63,9 +63,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -86,9 +84,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -116,9 +112,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -142,9 +136,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -184,10 +176,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "data": { @@ -195,7 +185,7 @@ "array([5, 0, 3, 3, 7, 9])" ] }, - "execution_count": 5, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -206,10 +196,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { @@ -217,7 +205,7 @@ "5" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -228,10 +216,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -239,7 +225,7 @@ "7" ] }, - "execution_count": 7, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -257,10 +243,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -268,7 +252,7 @@ "9" ] }, - "execution_count": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -279,10 +263,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -290,7 +272,7 @@ "7" ] }, - "execution_count": 9, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -308,10 +290,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -321,7 +301,7 @@ " [1, 6, 7, 7]])" ] }, - "execution_count": 10, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -332,10 +312,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -343,7 +321,7 @@ "3" ] }, - "execution_count": 11, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -354,10 +332,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -365,7 +341,7 @@ "1" ] }, - "execution_count": 12, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -376,10 +352,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -387,7 +361,7 @@ "7" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -405,10 +379,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { @@ -418,7 +390,7 @@ " [ 1, 6, 7, 7]])" ] }, - "execution_count": 14, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -438,10 +410,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { @@ -449,7 +419,7 @@ "array([3, 0, 3, 3, 7, 9])" ] }, - "execution_count": 15, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -488,10 +458,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "data": { @@ -499,7 +467,7 @@ "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, - "execution_count": 16, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -511,10 +479,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { @@ -522,7 +488,7 @@ "array([0, 1, 2, 3, 4])" ] }, - "execution_count": 17, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -533,10 +499,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "data": { @@ -544,7 +508,7 @@ "array([5, 6, 7, 8, 9])" ] }, - "execution_count": 18, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -555,10 +519,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { @@ -566,7 +528,7 @@ "array([4, 5, 6])" ] }, - "execution_count": 19, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -577,10 +539,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { @@ -588,7 +548,7 @@ "array([0, 2, 4, 6, 8])" ] }, - "execution_count": 20, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -599,10 +559,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "data": { @@ -610,7 +568,7 @@ "array([1, 3, 5, 7, 9])" ] }, - "execution_count": 21, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -630,10 +588,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -641,7 +597,7 @@ "array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])" ] }, - "execution_count": 22, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -652,10 +608,8 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, + "execution_count": 22, + "metadata": {}, "outputs": [ { "data": { @@ -663,7 +617,7 @@ "array([5, 3, 1])" ] }, - "execution_count": 23, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -684,10 +638,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, + "execution_count": 26, + "metadata": {}, "outputs": [ { "data": { @@ -697,7 +649,7 @@ " [ 1, 6, 7, 7]])" ] }, - "execution_count": 24, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -708,10 +660,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, + "execution_count": 27, + "metadata": {}, "outputs": [ { "data": { @@ -720,7 +670,7 @@ " [ 7, 6, 8]])" ] }, - "execution_count": 25, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -731,10 +681,8 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, + "execution_count": 28, + "metadata": {}, "outputs": [ { "data": { @@ -744,7 +692,7 @@ " [ 1, 7]])" ] }, - "execution_count": 26, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -762,10 +710,8 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -775,7 +721,7 @@ " [ 4, 2, 5, 12]])" ] }, - "execution_count": 27, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -797,9 +743,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -816,9 +760,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -842,9 +784,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -871,10 +811,8 @@ }, { "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false - }, + "execution_count": 30, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -899,10 +837,8 @@ }, { "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, + "execution_count": 31, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -927,10 +863,8 @@ }, { "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, + "execution_count": 32, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -948,10 +882,8 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": { - "collapsed": false - }, + "execution_count": 33, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -985,10 +917,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, + "execution_count": 34, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1013,10 +943,8 @@ }, { "cell_type": "code", - "execution_count": 36, - "metadata": { - "collapsed": false - }, + "execution_count": 35, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1034,10 +962,8 @@ }, { "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": false - }, + "execution_count": 36, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1067,9 +993,7 @@ { "cell_type": "code", "execution_count": 38, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1099,10 +1023,8 @@ }, { "cell_type": "code", - "execution_count": 39, - "metadata": { - "collapsed": false - }, + "execution_count": 37, + "metadata": {}, "outputs": [ { "data": { @@ -1110,7 +1032,7 @@ "array([[1, 2, 3]])" ] }, - "execution_count": 39, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1124,10 +1046,8 @@ }, { "cell_type": "code", - "execution_count": 40, - "metadata": { - "collapsed": false - }, + "execution_count": 38, + "metadata": {}, "outputs": [ { "data": { @@ -1135,7 +1055,7 @@ "array([[1, 2, 3]])" ] }, - "execution_count": 40, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1147,10 +1067,8 @@ }, { "cell_type": "code", - "execution_count": 41, - "metadata": { - "collapsed": false - }, + "execution_count": 39, + "metadata": {}, "outputs": [ { "data": { @@ -1160,7 +1078,7 @@ " [3]])" ] }, - "execution_count": 41, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1172,10 +1090,19 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 40, "metadata": { - "collapsed": false + "collapsed": true }, + "outputs": [], + "source": [ + "x.reshape?" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, "outputs": [ { "data": { @@ -1185,7 +1112,7 @@ " [3]])" ] }, - "execution_count": 42, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1223,10 +1150,8 @@ }, { "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": false - }, + "execution_count": 42, + "metadata": {}, "outputs": [ { "data": { @@ -1234,7 +1159,7 @@ "array([1, 2, 3, 3, 2, 1])" ] }, - "execution_count": 43, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1254,10 +1179,8 @@ }, { "cell_type": "code", - "execution_count": 44, - "metadata": { - "collapsed": false - }, + "execution_count": 43, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1281,10 +1204,8 @@ }, { "cell_type": "code", - "execution_count": 45, - "metadata": { - "collapsed": false - }, + "execution_count": 44, + "metadata": {}, "outputs": [], "source": [ "grid = np.array([[1, 2, 3],\n", @@ -1294,35 +1215,70 @@ { "cell_type": "code", "execution_count": 46, - "metadata": { - "collapsed": false - }, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "all the input arrays must have same number of dimensions", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcatenate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mgrid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mz\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mValueError\u001b[0m: all the input arrays must have same number of dimensions" + ] + } + ], + "source": [ + "np.concatenate([grid, z])" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "# concatenate along the first axis\n", + "test =np.concatenate([grid, grid])" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "test[0][0] = 10" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([[1, 2, 3],\n", - " [4, 5, 6],\n", - " [1, 2, 3],\n", - " [4, 5, 6]])" + "array([[10, 8, 7],\n", + " [ 6, 5, 4],\n", + " [ 9, 8, 7],\n", + " [ 6, 5, 4]])" ] }, - "execution_count": 46, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# concatenate along the first axis\n", - "np.concatenate([grid, grid])" + "test" ] }, { "cell_type": "code", "execution_count": 47, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1350,10 +1306,8 @@ }, { "cell_type": "code", - "execution_count": 48, - "metadata": { - "collapsed": false - }, + "execution_count": 47, + "metadata": {}, "outputs": [ { "data": { @@ -1363,7 +1317,7 @@ " [6, 5, 4]])" ] }, - "execution_count": 48, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1379,10 +1333,8 @@ }, { "cell_type": "code", - "execution_count": 49, - "metadata": { - "collapsed": false - }, + "execution_count": 48, + "metadata": {}, "outputs": [ { "data": { @@ -1391,7 +1343,7 @@ " [ 6, 5, 4, 99]])" ] }, - "execution_count": 49, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1403,6 +1355,28 @@ "np.hstack([grid, y])" ] }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "all the input arrays must have same number of dimensions", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhstack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mgrid\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mz\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/anaconda/envs/PDSH/lib/python3.5/site-packages/numpy/core/shape_base.py\u001b[0m in \u001b[0;36mhstack\u001b[0;34m(tup)\u001b[0m\n\u001b[1;32m 278\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_nx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcatenate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 279\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 280\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_nx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcatenate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 281\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: all the input arrays must have same number of dimensions" + ] + } + ], + "source": [ + "np.hstack([grid,z])" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1422,9 +1396,7 @@ { "cell_type": "code", "execution_count": 50, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1451,9 +1423,7 @@ { "cell_type": "code", "execution_count": 51, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1477,9 +1447,7 @@ { "cell_type": "code", "execution_count": 52, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1501,9 +1469,7 @@ { "cell_type": "code", "execution_count": 53, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1559,9 +1525,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.03-Computation-on-arrays-ufuncs.ipynb b/notebooks/02.03-Computation-on-arrays-ufuncs.ipynb index e4be4920c..cbe2d587f 100644 --- a/notebooks/02.03-Computation-on-arrays-ufuncs.ipynb +++ b/notebooks/02.03-Computation-on-arrays-ufuncs.ipynb @@ -58,9 +58,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -99,15 +97,13 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1 loop, best of 3: 2.91 s per loop\n" + "1.62 s ± 55.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], @@ -143,9 +139,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -171,15 +165,13 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "100 loops, best of 3: 4.6 ms per loop\n" + "1.8 ms ± 61.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" ] } ], @@ -198,9 +190,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -227,9 +217,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -280,9 +268,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -317,9 +303,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -347,9 +331,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -376,9 +358,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -427,9 +407,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -457,9 +435,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -479,9 +455,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -508,9 +482,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -540,10 +512,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [], "source": [ "theta = np.linspace(0, np.pi, 3)" @@ -558,10 +528,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -592,9 +560,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -627,9 +593,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -661,9 +625,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -693,22 +655,24 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "exp(x) - 1 = [ 0. 0.0010005 0.01005017 0.10517092]\n", - "log(1 + x) = [ 0. 0.0009995 0.00995033 0.09531018]\n" + "[ 1.00000008e-10 1.00050017e-03 1.00501671e-02 1.05170918e-01]\n", + "[ 1.00000008e-10 9.99500333e-04 9.95033085e-03 9.53101798e-02]\n", + "exp(x) - 1 = [ 1.00000000e-10 1.00050017e-03 1.00501671e-02 1.05170918e-01]\n", + "log(1 + x) = [ 1.00000000e-10 9.99500333e-04 9.95033085e-03 9.53101798e-02]\n" ] } ], "source": [ - "x = [0, 0.001, 0.01, 0.1]\n", + "x = [1e-10, 0.001, 0.01, 0.1]\n", + "print(np.exp(x)-1)\n", + "print(np.log(1+np.array(x)))\n", "print(\"exp(x) - 1 =\", np.expm1(x))\n", "print(\"log(1 + x) =\", np.log1p(x))" ] @@ -736,10 +700,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [], "source": [ "from scipy import special" @@ -747,10 +709,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -772,10 +732,8 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -827,10 +785,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -856,10 +812,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -898,10 +852,8 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "data": { @@ -909,7 +861,7 @@ "15" ] }, - "execution_count": 26, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -929,9 +881,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -958,9 +908,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -980,9 +928,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1020,7 +966,6 @@ "cell_type": "code", "execution_count": 30, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -1096,9 +1041,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.04-Computation-on-arrays-aggregates.ipynb b/notebooks/02.04-Computation-on-arrays-aggregates.ipynb index 0ed03afff..2c6856169 100644 --- a/notebooks/02.04-Computation-on-arrays-aggregates.ipynb +++ b/notebooks/02.04-Computation-on-arrays-aggregates.ipynb @@ -49,9 +49,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np" @@ -60,14 +58,12 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "55.61209116604941" + "51.570093596060936" ] }, "execution_count": 2, @@ -90,14 +86,12 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "55.612091166049424" + "51.57009359606095" ] }, "execution_count": 3, @@ -119,16 +113,14 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 104 ms per loop\n", - "1000 loops, best of 3: 442 µs per loop\n" + "69.3 ms ± 1.55 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "333 µs ± 11.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" ] } ], @@ -158,14 +150,12 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(1.1717128136634614e-06, 0.9999976784968716)" + "(7.652755853460036e-07, 0.99999808935994061)" ] }, "execution_count": 5, @@ -187,14 +177,12 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(1.1717128136634614e-06, 0.9999976784968716)" + "(7.652755853460036e-07, 0.99999808935994061)" ] }, "execution_count": 6, @@ -209,16 +197,14 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 82.3 ms per loop\n", - "1000 loops, best of 3: 497 µs per loop\n" + "48.9 ms ± 164 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", + "347 µs ± 1.28 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" ] } ], @@ -237,15 +223,13 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1.17171281366e-06 0.999997678497 499911.628197\n" + "7.65275585346e-07 0.99999808936 499843.443278\n" ] } ], @@ -272,18 +256,16 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[[ 0.8967576 0.03783739 0.75952519 0.06682827]\n", - " [ 0.8354065 0.99196818 0.19544769 0.43447084]\n", - " [ 0.66859307 0.15038721 0.37911423 0.6687194 ]]\n" + "[[ 0.21052586 0.80420332 0.81370603 0.9908134 ]\n", + " [ 0.29137945 0.7070823 0.12104344 0.24573518]\n", + " [ 0.31503498 0.58239686 0.74093381 0.9076624 ]]\n" ] } ], @@ -301,18 +283,16 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "6.0850555667307118" + "6.7305170476650078" ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -330,18 +310,16 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([ 0.66859307, 0.03783739, 0.19544769, 0.06682827])" + "array([ 0.21052586, 0.58239686, 0.12104344, 0.24573518])" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -362,9 +340,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -390,6 +366,56 @@ "So specifying ``axis=0`` means that the first axis will be collapsed: for two-dimensional arrays, this means that values within each column will be aggregated." ] }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.version" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'module' object is not callable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mversion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: 'module' object is not callable" + ] + } + ], + "source": [ + "print(np.version())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -439,10 +465,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -468,10 +492,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -499,10 +521,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -532,10 +552,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -565,9 +583,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", @@ -578,9 +594,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -633,9 +647,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.05-Computation-on-arrays-broadcasting.ipynb b/notebooks/02.05-Computation-on-arrays-broadcasting.ipynb index b5b864e09..3aeb5741f 100644 --- a/notebooks/02.05-Computation-on-arrays-broadcasting.ipynb +++ b/notebooks/02.05-Computation-on-arrays-broadcasting.ipynb @@ -47,9 +47,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np" @@ -58,9 +56,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -89,9 +85,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -121,9 +115,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -146,9 +138,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -179,9 +169,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -205,9 +193,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -275,9 +261,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "M = np.ones((2, 3))\n", @@ -309,9 +293,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -341,9 +323,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "a = np.arange(3).reshape((3, 1))\n", @@ -375,9 +355,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -408,9 +386,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "M = np.ones((3, 2))\n", @@ -443,9 +419,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ValueError", @@ -476,9 +450,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -498,9 +470,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -530,9 +500,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -593,9 +561,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "X = np.random.random((10, 3))" @@ -611,9 +577,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -641,9 +605,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "X_centered = X - Xmean" @@ -659,9 +621,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -702,11 +662,140 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 2 3]\n", + " [4 5 6]\n", + " [7 8 9]] [1 2 3]\n" + ] + } + ], + "source": [ + "a = np.arange(1,10).reshape((3,3))\n", + "\n", + "b = np.arange(1,4)\n", + "\n", + "print(a,b)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 4, 9],\n", + " [ 4, 10, 18],\n", + " [ 7, 16, 27]])" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a*b" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = np.arange" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], + "source": [ + "a = np.arrange" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(9)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9\n" + ] + } + ], + "source": [ + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], "source": [ "# x and y have 50 steps from 0 to 5\n", "x = np.linspace(0, 5, 50)\n", @@ -725,9 +814,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", @@ -737,9 +824,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -791,9 +876,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.06-Boolean-Arrays-and-Masks.ipynb b/notebooks/02.06-Boolean-Arrays-and-Masks.ipynb index 813c891f6..4a5bfc636 100644 --- a/notebooks/02.06-Boolean-Arrays-and-Masks.ipynb +++ b/notebooks/02.06-Boolean-Arrays-and-Masks.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -85,9 +83,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", @@ -98,15 +94,13 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nAIUTawAo3ITHulqtZtOmTVm9enXWrl2bF1544S33P/zww7nsssuyevXq/PKXv5zo6TBGI63fz3/+\n81xyySVZu3Zt1q5dm+eee25qJsq72rNnT7q7u992u22vPrzb+tn2yvbGG2/kuuuuy5e+9KVcfvnl\nefjhh99y/5i3v+oE+93vfle9/vrrq9VqtfrEE09Ur7766qH7BgcHq8uWLav29fVVBwYGqpdeemn1\n1VdfnegpMQbDrV+1Wq1++9vfru7du3cqpsYo/OxnP6tecskl1S9+8Ytvud22Vx/ebf2qVdte6R54\n4IHq7bffXq1Wq9W//vWv1SVLlgzdN57tb8L3rIe7Xvizzz6befPmpbW1NU1NTens7Mzu3bsnekqM\nwUjXe9+7d2+2bt2arq6u/PSnP52KKTKMefPmZfPmzW+73bZXH95t/RLbXulWrFiRDRs2JElOnjyZ\nxsa/Xd17PNvfhMf63a4X/k73tbS0pK+vb6KnxBgMt35JcvHFF+eWW27Jfffdl8cff3zoCnaUYdmy\nZe/4JQa2vfrwbuuX2PZKN3v27DQ3N6dSqWTDhg255pprhu4bz/Y34bFubW1Nf3//0M9//8Uera2t\nqVT+djH6/v7+zJkzZ6KnxBgMt35JcuWVV2bu3LlpbGzMZz7zmezbt28qpskY2fbqn22vfC+99FKu\nvPLKrFy5Mp/97GeHbh/P9jfhsR7ueuHz58/P888/n6NHj2ZgYCC7d+/OBRdcMNFTYgyGW79KpZJL\nLrkkr7/+eqrVav74xz/m3HPPnaqpMozqP1yo0LZXX/5x/Wx75Tt8+HB6enpy7bXXZuXKlW+5bzzb\nX02/IvOdLFu2LI8++mhWr16d5D+vF/6b3/wmr7/+elatWpWNGzfmqquuSrVazapVq/K+9w3/xfFM\nrpHWr7e3N93d3TnttNPyqU99KosXL57iGfNOGhr+86s6bXv16Z3Wz7ZXtq1bt+bo0aPZsmVLNm/e\nnIaGhlx++eXj3v5cGxwACueiKABQOLEGgMKJNQAUTqwBoHBiDQCFE2sAKJxYA0Dh/h/uLOJdBEs5\nngAAAABJRU5ErkJggg==\n", + "image/png": "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\nJ9z/i1/8IldccUWWLVvmM9kF6mv+7r333lxxxRVZtWpVVq1alfb20XuhhlLt2bMnK1eufNftTzzx\nRK688sosW7Ys27dvH4aR0R/vNX8PPfRQFi1a1PPae/nll4d+cLyn48eP57bbbsvVV1+dq666Kk88\n8cQJ95/0668aZL/+9a+r22+/vaqqqnruueeqb3zjGz33HThwoFq0aFHV1dVVtbW1VYsWLao6OzsH\ne0ichN7mr6qqavny5dWhQ4eGY2j0w09+8pNq0aJF1dKlS0+4vaurq5o/f37V1tZWdXZ2VldccUV1\n8ODBYRol7+W95q+qquqWW26p9u7dOwyjoj8effTR6vvf/35VVVV16NChau7cuT33DeT1N+h71r1d\nL/z555/PzJkzU19fn8bGxkybNq3nM9qUobf5q6oqr7zyStavX5/ly5fn0UcfHa5h8h6mTp2aLVu2\nvOv2P/7xj5k6dWoaGxszbty4zJw5M7t27RqGEdKb95q/JNm7d2+2bduWFStW5Mc//vEQj4y+LFy4\nMGvWrEnyt/8r6+v/cXXvgbz+Bv37rHu7Xvg775swYULa2toGe0ichN7m7+jRo1m5cmW++tWv5vjx\n41m1alUuuOACV64ryPz58/Paa6+96/Z3zmtDQ4PXXoHea/6S5LLLLsvVV1+dxsbG3HDDDdm5c2cu\nvfTSIR4h72X8+PFJ/vZaW7NmTW6++eae+wby+hv0PevGxsZ0dHT0/PzPX+zR2Nh4wjnOjo6OnH76\n6YM9JE5Cb/M3fvz4rFy5Mh/4wAfS0NCQSy65JC+++OJwDZWT4LU38l177bWZNGlS6uvrc+mll2bf\nvn3DPSTeobW1Nddee20WL16cL33pSz23D+T1N+ix7u164TNmzMju3bvT2dmZtra2vPTSSznnnJH/\n7Sinkt7m709/+lNWrFiRqqrS1dWV3bt355Of/ORwDZVeVO+4UOH06dPzyiuv5MiRI+ns7Myzzz6b\niy66aJhGR1/eOX/t7e1ZtGhRjh07lqqq8rvf/c5rrzAHDx5MS0tLbr311ixevPiE+wby+hv0w+Dz\n58/P008/nWXLliX52/XCH3rooUydOjVf+MIXsnLlyp7/8NeuXZvTTjttsIfESehr/r7yla9kyZIl\nGTduXBYvXpzp06cP84j5V+rq/vZ1nb/85S9z7NixLFmyJOvWrcvq1atTVVWWLFmSM844Y5hHyXv5\nV/O3du3aniNbn/nMZzJnzpxhHiX/bNu2bTly5Ei2bt2aLVu2pK6uLlddddWAX3+uDQ4AhXNRFAAo\nnFgDQOHEGgAKJ9YAUDixBoDCiTUAFE6sAaBw/w/w7e/ejlyf5gAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -163,9 +157,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -185,9 +177,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -207,9 +197,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -229,9 +217,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -251,9 +237,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -273,9 +257,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -302,9 +284,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -346,9 +326,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -372,9 +350,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -413,9 +389,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -443,9 +417,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -474,9 +446,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -503,9 +473,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -535,9 +503,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -558,9 +524,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -581,9 +545,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -604,9 +566,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -634,9 +594,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -680,9 +638,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -717,9 +673,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -765,10 +719,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, + "execution_count": 23, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -803,9 +755,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -834,9 +784,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -865,9 +813,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -897,9 +843,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -955,9 +899,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -977,9 +919,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -999,9 +939,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1028,9 +966,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1050,9 +986,7 @@ { "cell_type": "code", "execution_count": 34, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1072,9 +1006,7 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1094,9 +1026,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1125,9 +1055,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1156,9 +1084,7 @@ { "cell_type": "code", "execution_count": 38, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ValueError", @@ -1186,9 +1112,7 @@ { "cell_type": "code", "execution_count": 39, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1216,9 +1140,7 @@ { "cell_type": "code", "execution_count": 40, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "ValueError", @@ -1270,9 +1192,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.07-Fancy-Indexing.ipynb b/notebooks/02.07-Fancy-Indexing.ipynb index b3680ffc2..947b2a927 100644 --- a/notebooks/02.07-Fancy-Indexing.ipynb +++ b/notebooks/02.07-Fancy-Indexing.ipynb @@ -49,9 +49,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -79,9 +77,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -108,9 +104,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -138,9 +132,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -170,9 +162,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -202,9 +192,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -235,9 +223,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -267,9 +253,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -307,9 +291,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -335,9 +317,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -364,9 +344,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -394,9 +372,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -435,10 +411,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 2, + "metadata": {}, "outputs": [ { "data": { @@ -446,7 +420,7 @@ "(100, 2)" ] }, - "execution_count": 13, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -468,16 +442,14 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nVH5+flSfq68/Y6oKKSE/v0GR1dI+SY7y8xsT/jM4dGiIOt8QHDo0xIqfe15ethX1cIuX2+/ltku0\nn/b3f2NiLJx//OMf68knn9TMmTMlSU899ZSpotNK59XShYVntWxZ4ldLBwKn2g8cidwQsH0KAOzm\ncxzH6f9tieP1u6dktL+xMazy8pou26dsmHPm7tm77fdy2yXaT/uT2HOGvdg+BQCphRPCAACwDOEM\nAIBlCGcAACxDOAMAYBnCGQAAyxDOAABYhnAGAMAyhDMAAJYhnAEAsAzhDACAZQhnAAAsQzgDAGAZ\nwhkAAMsQzgAAWIZwBgDAMoQzAACWIZwBALAM4QwAgGUIZwAALEM4AwBgGcIZAADLZLhdAcSmoSGs\niooaHT06QoHAKQWDRfL7c9yuFgDAIMI5xVRU1Ki6ep4kn+rqHElVWrfudrerBQAwiGHtFHP06AhJ\nvvZXvvbXAIB0QjinmEDglCSn/ZWjQOC0m9UBACSAsWHtpqYmLViwQF999ZWysrL0m9/8RqNGjTJV\nPNoFg0WSqtrnnE8rGJzkdpUAAIYZC+dt27ZpzJgxWrRokV555RWtX79eFRUVpopHO78/hzlmAEhz\nxoa1CwsL1dTUJCnSi7788stNFQ0AgKfE1XPeunWrNm7c2OVrS5Ys0VtvvaVbb71Vp06d0qZNm4xU\nEAAAr/E5juP0/7b+Pfjgg5owYYJKS0v14Ycf6le/+pV27NhhomgAADzF2JzzyJEjNXz4cElSbm6u\nmpubo/pcff0ZU1VIOXl52bSf9rtdDVd4ue0S7af92f2+x1g4//KXv9QTTzyhTZs2qbW1Vb/+9a9N\nFQ0AgKcYC+crrrhCzz//vKniAADwLA4hAQDAMoQzAACWIZwBALAM4QwAgGUIZwAALEM4AwBgGcIZ\nAADLEM4AAFiGcAYAwDKEMwAAliGcAQCwDOEMAIBlCGcAACxDOAMAYBnCGQAAyxDOAABYhnAGAMAy\nhDMAAJYhnAEAsAzhDACAZQhnAAAsQzgDAGAZwhkAAMsQzgAAWIZwBgDAMoQzAACWGVA4v/HGG3rk\nkUcuvt6/f79KS0t111136bnnnhtw5QAA8KK4w3n58uV69tlnu3xt6dKlWrFihTZt2qS//vWvOnjw\n4IArCACA18QdzmPHjtWTTz558XVTU5POnz+vb37zm5KkH/zgB3r77bcHXEEAALwmo783bN26VRs3\nbuzytcrKSk2dOlXvvffexa81Nzdr+PDhF18PGzZMx44dM1hVAAC8od9wLikpUUlJSb8FDRs2TE1N\nTRdfNzc3a8SIEf1+Li8vu9/3pDPaT/u9ysttl2i/19vfH2OrtYcPH67MzEx99tlnchxH+/bt07hx\n40wVDwCAZ/Tbc47FU089pUWLFqmtrU033nijvve975ksHgAAT/A5juO4XQkAAHAJh5AAAGAZwhkA\nAMsQzgAAWIZwBgDAMlaE8+HDh3XdddeppaXF7aok1dmzZzV//nzNnTtXP/3pT/Xll1+6XaWkampq\n0i9+8QvNmzdPs2bNUl1dndtVSrru59OnO8dxtHTpUs2aNUt33323PvvsM7erlHT79+/XvHnz3K5G\n0rW2tqq8vFxz5sxRaWmp9uzZ43aVkqqtrU2PPfaYZs+erTlz5ujjjz/u8/2uh3NTU5OCwaCysrLc\nrkrS/eEPf9DVV1+tl156SbfddpvWrVvndpWS6oUXXtANN9ygqqoqVVZW6umnn3a7SknV0/n06e7N\nN99US0uLNm/erEceeUSVlZVuVymp1q9fryeeeELnz593uypJt2PHDvn9fv3+97/XunXrtGzZMrer\nlFR79uyRz+fTyy+/rIceekgrVqzo8/1G9znHY8mSJVq4cKHmz5/vdlWS7p577lHHTrZQKKSRI0e6\nXKPkuvfee5WZmSkpclfttRu0sWPHavLkydqyZYvbVUma999/XxMmTJAkXXPNNTpw4IDLNUquQCCg\nVatWqby83O2qJN3UqVM1ZcoUSZFeZEaG6/GTVDfffLOKiookSZ9//nm//79P2k+npzO68/Pzdeut\nt2rMmDFK9+3WvZ1RfvXVV+uee+7RRx99pA0bNrhUu8Trq/319fUqLy/X448/7lLtEiva8+m9oKmp\nSdnZl45tzMjIUFtbmwYNcn0QLykmT56szz//3O1quGLIkCGSIn8DDz30kBYsWOByjZJv0KBBevTR\nR/Xmm2/qt7/9bd9vdlxUXFzszJs3z5k7d67z3e9+15k7d66b1XHV4cOHnZtvvtntaiTdwYMHnWnT\npjl/+tOf3K6KK959911n4cKFblcjaSorK52dO3defD1x4kT3KuOSY8eOOTNnznS7Gq4IhULOHXfc\n4Wzbts3tqrjqxIkTzqRJk5yzZ8/2+h5XxxV27dp18b+LiorSuufYk+eff15XXnmlpk+frqFDh+qy\nyy5zu0pJ9fHHH+vhhx/WypUrNWbMGLergyQYO3asampqNGXKFNXV1amwsNDtKrnCSfORwp6cOHFC\n9913n5YjwwUsAAAAzklEQVQsWaLrr7/e7eokXXV1tY4fP66f/exnysrK0qBBg/ocMbJm0N/n83nu\nD/bOO+9URUWFtm7dKsdxPLc4ZsWKFWppadHy5cvlOI5GjBihVatWuV0tJNDkyZP11ltvadasWZLk\nub/5Dj6fz+0qJN3atWt1+vRprV69WqtWrZLP59P69esvrjtJd8XFxVq8eLHmzp2r1tZWPf744322\nnbO1AQCwjDdWYQAAkEIIZwAALEM4AwBgGcIZAADLEM4AAFiGcAYAwDKEMwAAlvn/5iKbJb8BcnkA\nAAAASUVORK5CYII=\n", + "image/png": "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\nI34zdgctDQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -501,19 +473,17 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([93, 45, 73, 81, 50, 10, 98, 94, 4, 64, 65, 89, 47, 84, 82, 80, 25,\n", - " 90, 63, 20])" + "array([52, 66, 80, 91, 84, 11, 51, 56, 92, 96, 86, 94, 83, 57, 99, 26, 61,\n", + " 43, 68, 12])" ] }, - "execution_count": 15, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -525,10 +495,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -536,7 +504,7 @@ "(20, 2)" ] }, - "execution_count": 16, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -555,16 +523,14 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAFVCAYAAADVDycqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl0U+edN/CvVsuWbXnFYPbVQAATGYLBFjtmD4QQCA1M\n2+k5mZnMdEmaJm2aN+mWciZzTpqZt0lP0rztZNKkpFCSAGELBowNMZvACRBMWIONMbbBsiUv0pXu\n+4fHAiHJWnwtXVvfzz+tru599Hts4p+eXSGKoggiIiKSDWW0AyAiIiJPTM5EREQyw+RMREQkM0zO\nREREMsPkTEREJDNMzkRERDKjlrIwQRDw/PPPo7q6Gmq1Gr/+9a8xfPhwKT+CiIioz5O05VxSUgKX\ny4VNmzbhqaeewu9+9zspiyciIooJkibnYcOGwel0QhRFNDc3Q6PRSFk8ERFRTJC0W1uv16OqqgqL\nFi1CY2Mj3nrrLSmLJyIiigmStpz/+7//GyaTCXv27MG2bdvw/PPPw263+72fO4cSERF5k7TlbDAY\noFZ3FJmUlARBEOByufzer1AoUFfXLGUIvUpmZhLrz/pHO4yoiOW6A6w/658U8B5Jk/O3v/1tvPDC\nC3jiiScgCAJ+/OMfQ6fTSfkRREREfZ6kyTkhIQGvv/66lEUSERHFHG5CQkREJDNMzkRERDLD5ExE\nRCQzTM5EREQyw+RMREQkM0zOREREMsPkTEREJDNMzkRERDLD5ExERCQzTM5EREQyw+RMREQkM0zO\nREREMsPkTEREJDNMzkRERDLD5ExERCQzTM5EREQyw+RMREQkM0zOREREMsPkTEREJDNMzkRERDLD\n5ExERCQzTM5EREQyw+RMREQkM+poB0BERBSqq1ev4Msvv4BWq4UoigAAQRAwfXoB0tPToxxd9zE5\nExFRr9HUZMGePbuQkzMWy5ev8HjP5XLh888P49atWixbtgIajSZKUXYfkzMREfUKFksj9uzZhcce\nexwKhcLrfaVSiYICE9ra2rB58yasWbMOanXvTHOSjzm//fbbePzxx/Hoo4/i73//u9TFExFRjNq7\nd7ffxHwvnU6HlSsfxe7dOyMUmfQk/Upx7NgxnDp1Cps2bUJLSwv+9Kc/SVk8ERHFqG++uYZRo0YH\nTMydEhISoFar0d7ejri4uB6OTnqSJueysjKMGTMGTz31FGw2G5577jkpiycioj7CbnfAbK6HzaaG\n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\nZyIiIplhciYiIpIZJmciIiKZYXImIiKSGSZnIiIimWFyJiIikhkmZyIiIplhciYiIpIZJmciIiKZ\nYXImIiKSGSZnIiIimVFHOwCKLLvdAbO5HjabGnq9AKMxA1qtJtphERHRPdhyjjFmcz0slkEQhP6w\nWAbBbK6PdkhERHQfJucYY7Opu3xNRETRx+QcY/R6ocvXREQUfZI1m1wuFzZu3IizZ8/Cbrfj+9//\nPmbNmiVV8SQRozEDZnOVx5gzERHJi2TJ+ZNPPoHT6cQHH3yA2tpa7NmzR6qiSUJarQb5+QOiHQYR\nEXVBsuRcVlaG0aNH45/+6Z8AAC+++KJURfcp986WHjiwCSNGxHO2NBEReQgrOW/ZsgXvvvuux7W0\ntDTExcXhrbfewvHjx/Gzn/0Mf/nLXyQJsi/pnC0NAI2NCTCbL/R4S5bLp4iIeheFKIqiFAU988wz\nWLx4MRYsWAAAKCwsRFlZmRRF9ym7dtVCELLcr9XqWixenNXFE91XWlqNxsaB7tcpKdUwmQZ28QQR\nEUWTZN3aeXl5KCkpwYIFC3D+/HlkZ2cH9VxdXbNUIfQKgmCBxZIEADAYEiAIFtTVJfToZ1ZXt0MQ\nWtyvbbZ2WfzcMzOTZBFHtMRy/WO57gDrz/onBbxHsqVUjz32GFwuF9auXYuXX34Zv/zlL6Uquk8x\nGjNgMFRBrb6JlJTqiMyW5vIpIqLeRbKWs1arxW9/+1upiuuz7p0tHalvj1w+RUTUu3B7qBjA5VNE\nRL0LdwgjIiKSGSZnIiIimWFyJiIikhkmZyIiIplhciYiIpIZJmciIiKZYXImIiKSGSZnIiIimWFy\nJiIikhkmZyIiIplhciYiIpIZJmciIiKZYXImIiKSGSZnIiIimWFyJiIikhkmZyIiIplhciYiIpIZ\nJmciIiKZYXImIiKSGSZnIiIimWFyJiIikhl1tAOg0NjtDpjN9bDZ1NDrBRiNGdBqNdEOi4iIJMSW\ncy9jNtfDYhkEQegPi2UQzOb6aIdEREQSY3LuZWw2dZeviYio92Ny7mX0eqHL10RE1PtJ1uyyWq14\n+umn0dLSgri4OPzHf/wH0tPTpSqe/pfRmAGzucpjzJmIiPoWyVrOW7duRU5ODt5//30sXrwY77zz\njlRF0z20Wg3y8wdg3rxM5OcP4GQwIqI+SLLkPGbMGFitVgAdrWiNhkmDiIgoHGF1a2/ZsgXvvvuu\nx7WXXnoJhw8fxtKlS2GxWPDBBx9IEiAREVGsUYiiKEpR0Pe//32YTCasWbMGlZWV+MlPfoJt27ZJ\nUTQREVFMkWxCmMFgQGJiIgAgLS0NNpstqOfq6pqlCqHXycxMYv1Z/2iHERWxXHeA9Wf9kwLeI1ly\n/sEPfoAXX3wRH3zwAQRBwG9+8xupiiYiIoopkiXnfv364e2335aqOCIiopjFTUiIiIhkhsmZiIhI\nZpiciYiIZIbJmYiISGaYnImIiGSGyZmIiEhmmJyJiIhkhsmZiIhIZpiciYiIZIbJmYiISGaYnImI\niGSGyZmIiEhmmJyJiIhkhsmZiIhIZpiciYiIZIbJmYiISGaYnImIiGSGyZmIiEhmmJyJiIhkhsmZ\niIhIZpiciYiIZIbJmYiISGaYnImIiGSGyZmIiEhmmJyJiIhkhsmZiIhIZrqVnD/77DP8+Mc/dr+u\nqKjAmjVr8K1vfQu///3vux0cERFRLAo7Ob/yyiv43e9+53Ht5ZdfxmuvvYYPPvgAX3zxBc6fP9/t\nAImIiGJN2MnZaDTiF7/4hfu11WqFw+HAoEGDAACFhYU4cuRItwMkIiKKNepAN2zZsgXvvvuux7WN\nGzdi8eLFOHbsmPuazWZDYmKi+7Ver0dVVZWEoRIREcWGgMl59erVWL16dcCC9Ho9rFar+7XNZkNy\ncnLA5zIzkwLe05ex/qx/rIrlugOsf6zXPxDJZmsnJiZCq9Xi+vXrEEURZWVlyMvLk6p4IiKimBGw\n5RyKX/7yl3j22WfhcrlQUFCASZMmSVk8ERFRTFCIoihGOwgiIiK6i5uQEBERyQyTMxERkcwwORMR\nEckMkzMREZHMyCI5X7p0CVOmTIHdbo92KBHV2tqKp556CuvXr8c//uM/4tatW9EOKaKsViv++Z//\nGRs2bMDjjz+O06dPRzukiLt/f/q+ThRFvPzyy3j88cfxD//wD7h+/Xq0Q4q4iooKbNiwIdphRJwg\nCHjuuefwxBNPYM2aNdi/f3+0Q4ool8uFF154AevWrcMTTzyBixcvdnl/1JOz1WrFq6++iri4uGiH\nEnF/+9vfMGHCBPzlL3/B8uXL8cc//jHaIUXUn//8Z8yYMQPvvfceNm7ciF/96lfRDimifO1P39ft\n27cPdrsdmzZtwo9//GNs3Lgx2iFF1DvvvIMXX3wRDocj2qFE3LZt25Camor3338ff/zjH/HrX/86\n2iFF1P79+6FQKPDXv/4VP/zhD/Haa691eb+k65zD8dJLL+GZZ57BU089Fe1QIu7b3/42Oley3bhx\nAwaDIcoRRdZ3v/tdaLVaAB3fqmPtC5rRaMSCBQvw4YcfRjuUiDl58iRMJhMAIDc3F2fOnIlyRJE1\ndOhQvPHGG3juueeiHUrELV68GIsWLQLQ0YpUq6OefiJq/vz5mDt3LgCguro64N/7iP10fO3RnZ2d\njaVLlyInJwd9fbm1vz3KJ0yYgG9/+9v4+uuv8ac//SlK0fW8rupfV1eH5557Dj//+c+jFF3PCnZ/\n+lhgtVqRlHR320a1Wg2XywWlMuqdeBGxYMECVFdXRzuMqIiPjwfQ8W/ghz/8IZ5++ukoRxR5SqUS\nP/3pT7Fv3z7813/9V9c3i1FUVFQkbtiwQVy/fr04ceJEcf369dEMJ6ouXbokzp8/P9phRNz58+fF\nZcuWiaWlpdEOJSqOHj0qPvPMM9EOI2I2btwo7tq1y/161qxZ0QsmSqqqqsS1a9dGO4youHHjhrhq\n1Spx69at0Q4lqurr68U5c+aIra2tfu+Jar/Cnj173P9/7ty5fbrl6Mvbb7+NrKwsrFixAgkJCVCp\nVNEOKaIuXryIH/3oR3j99deRk5MT7XAoAoxGIw4cOIBFixbh9OnTGDNmTLRDigqxj/cU+lJfX4/v\nfe97eOmll5Cfnx/tcCLuk08+QW1tLZ588knExcVBqVR22WMkm05/hUIRc/9gH330UTz//PPYsmUL\nRFGMuckxr732Gux2O1555RWIoojk5GS88cYb0Q6LetCCBQtw+PBhPP744wAQc//mOykUimiHEHFv\nvfUWmpqa8Oabb+KNN96AQqHAO++845530tcVFRXhZz/7GdavXw9BEPDzn/+8y7pzb20iIiKZiY1Z\nGERERL0IkzMREZHMMDkTERHJDJMzERGRzDA5ExERyQyTMxERkcwwORMREcnM/wcUk78ohTcyEwAA\nAABJRU5ErkJggg==\n", + "image/png": "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\nQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -596,10 +562,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -616,6 +580,27 @@ "print(x)" ] }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 100, 99, 3, 99, 5, 6, 7, 99, 9])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x[1] = 100\n", + "x" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -625,16 +610,14 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[ 0 89 89 3 89 5 6 7 89 9]\n" + "[ 0 90 89 3 89 5 6 7 89 9]\n" ] } ], @@ -652,10 +635,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -683,28 +664,50 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([ 6., 0., 1., 1., 1., 0., 0., 0., 0., 0.])" + "array([ 0., 0., 1., 1., 1., 0., 0., 0., 0., 0.])" ] }, - "execution_count": 21, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "x = np.zeros(10)\n", "i = [2, 3, 3, 4, 4, 4]\n", "x[i] += 1\n", "x" ] }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 0., 1., 1., 1., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x = np.zeros(10)\n", + "i = [2, 3, 3, 4, 4, 4]\n", + "x[i] = x[i] + 1\n", + "x" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -719,9 +722,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -758,9 +759,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 18, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -778,6 +779,31 @@ "np.add.at(counts, i, 1)" ] }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([11, 10, 11, 13, 10, 10, 13, 11, 9, 11, 9, 9, 10, 6, 7, 9, 8,\n", + " 11, 8, 7, 13, 10, 10, 7, 9, 10, 8, 11, 9, 9, 9, 14, 10, 8,\n", + " 12, 8, 10, 6, 7, 10, 11, 10, 10, 9, 7, 9, 9, 12, 11, 7, 11,\n", + " 9, 9, 11, 12, 12, 8, 9, 11, 12, 9, 10, 8, 8, 12, 13, 10, 12,\n", + " 11, 9, 11, 13, 10, 13, 5, 12, 10, 9, 10, 6, 10, 11, 13, 9, 8,\n", + " 9, 12, 11, 9, 11, 10, 12, 9, 9, 9, 7, 11, 10, 10, 10])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -787,16 +813,14 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n9a9/PdavXx8zZszIHqdfeeKJJ+ITn/jExRPerFmz4uWXX84dqh87evRoPPjgg7F06dJYsGBB9jj9\n0tKlS6OsrCwiIpqamuKmm26K73//+zF69OjkyfqXb3/72zF69OhYsWJFRETcdddd8cwzz8S11177\nvrfvk/ddpkyZEq+88kpUV1dHU1NTXH/99X3xsAPSv/97+ezZs7v994Sh6q233oqvfe1r8d3vfjcm\nTJiQPU6/c8cdd8Qvf/nLmDt3ruu7d+PEiRNRU1MTmzZtiunTp2eP02/9+7uXy5Yti61btwrw+5gy\nZUrs3r07VqxYEceOHYt//OMfUVVVdcnb90mE77nnntiyZUvce++9ERHx2GOP9cXDDnhlZWXekr6E\n73znO3H27NnYtm1bdHZ2xqhRo6Kuri57rH6juro6fvWrX8XixYsj4t2373l/DQ0NcerUqaivr4+6\nurooKyuLXbt2XfyeA97rnydi3mvWrFnxm9/8JhYuXHjxpxS62i/XjgaAJL5LAwCSiDAAJBFhAEgi\nwgCQRIQBIIkIA0ASEQaAJP8P7quNPHF17C4AAAAASUVORK5CYII=\n", + "image/png": "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\n/h/cgo1Lg3u4jAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -825,19 +849,17 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NumPy routine:\n", - "10000 loops, best of 3: 97.6 µs per loop\n", + "55.3 µs ± 2.78 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n", "Custom routine:\n", - "10000 loops, best of 3: 19.5 µs per loop\n" + "13.8 µs ± 334 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n" ] } ], @@ -859,19 +881,17 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NumPy routine:\n", - "10 loops, best of 3: 68.7 ms per loop\n", + "67.4 ms ± 1.96 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "Custom routine:\n", - "10 loops, best of 3: 135 ms per loop\n" + "113 ms ± 3.34 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -919,9 +939,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.08-Sorting.ipynb b/notebooks/02.08-Sorting.ipynb index 1a82f745a..c4c89becf 100644 --- a/notebooks/02.08-Sorting.ipynb +++ b/notebooks/02.08-Sorting.ipynb @@ -40,10 +40,8 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -57,10 +55,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { @@ -68,7 +64,7 @@ "array([1, 2, 3, 4, 5])" ] }, - "execution_count": 2, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -91,10 +87,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [], "source": [ "def bogosort(x):\n", @@ -105,10 +99,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -116,7 +108,7 @@ "array([1, 2, 3, 4, 5])" ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -151,9 +143,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -181,9 +171,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -208,9 +196,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -237,9 +223,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -272,10 +256,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -296,10 +278,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -310,7 +290,7 @@ " [7, 6, 7, 4, 9, 9]])" ] }, - "execution_count": 10, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -322,10 +302,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -336,7 +314,7 @@ " [0, 1, 4, 5, 5, 9]])" ] }, - "execution_count": 11, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -364,10 +342,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -375,7 +351,7 @@ "array([2, 1, 3, 4, 6, 5, 7])" ] }, - "execution_count": 12, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -398,9 +374,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -443,10 +417,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [], "source": [ "X = rand.rand(10, 2)" @@ -461,16 +433,14 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n7bU0VJlYlmVp165dKi8vV2Vlpc6ePTtp/Pjx4woGgyovL9eRI0fSVGXyTNd/KBRSWVmZtm7dqurq\n6vQUmUTT9X/RSy+9pN/85jcpri75puv/448/1rZt27Rt2zb97Gc/0+joaJoqTbzpen/nnXe0adMm\nlZaW6tChQ2mqMvlOnz6tioqKq7Zn+nffRdfr/4a/+6w0eeONN6zf/va3lmVZ1p///GfrV7/61aTx\nL7/80tq8eXPsdXl5udXT05PSGhPtr3/9q/WLX/zCsizL6uzstJ599tnY2NjYmFVcXGwNDAxYo6Oj\n1ubNm62vvvoqXaUmxVT9R6NRq7i42BoZGbEsy7K2b99uHT9+PC11JstU/V906NAh67HHHrP27duX\n6vKSbrr+H3nkEevLL7+0LMuyjhw5Yn3xxRepLjFpput9w4YNVjgctkZHR63i4mIrHA6no8yk+v3v\nf2+VlJRYjz322KTtTvjus6zr92/nuy9tR9xOvN95R0eHioqKJEkFBQXq6uqKjX3++efKy8uTz+fT\nvHnztG7dOrW1taWr1KSYqn+3263Gxka53W5JmfF5X2mq/iXpo48+0ieffKLy8vJ0lJd0U/X/xRdf\naPHixXrjjTdUUVGh/v5+LVu2LE2VJt50n/2qVavU39+vkZERScrIm1bl5eVd88ypE777pOv3b+e7\nz9ZjPW8U9zs/b3BwUH6/P/Y6KytLExMTmjNnzlVjCxcu1MDAQDrKTJqp+ne5XFqyZIkk6cCBA4pE\nIlq/fn26Sk2Kqfrv6+tTbW2t6urqdOzYsTRWmTxT9f/111+rs7NTu3btUm5urp555hmtWbNGd999\ndxorTpypepeklStXavPmzfJ6vSouLo59N2aS4uJi/etf/7pquxO++6Tr92/nuy8lwR0MBhUMBidt\ne+655zQ0NCRJGhoamvTBXXT5/c4zYc3T5/PFepY06T9cn883aedlaGhI2dnZKa8xmabqXzq/Drh3\n71719vaqtrY2HSUm1VT9v/fee/rmm2/01FNPqa+vTyMjI7rlllv06KOPpqvchJuq/8WLF2vp0qVa\nvny5JKmoqEhdXV0ZE9xT9d7T06MPPvhAx48fl9fr1fPPP6/3339fDzzwQLrKTSknfPdN50a/+9J2\nqtyJ9zu/vOfOzk7l5+fHxm699Vb19vYqHA5rdHRUbW1t+sEPfpCuUpNiqv4l6cUXX9TY2Jjq6upi\np40yyVT9V1RU6OjRo9q/f7+efvpplZSUZFRoS1P3n5ubq+Hh4dgfbXV0dGjFihVpqTMZpurd7/dr\nwYIFcrvdsaOvcDicrlKTzrriZp1O+O673JX9Szf+3ZeSI+5r2bJli1544QVt3bo1dr9zSZPud97e\n3q6xsTGdPHkyI+53XlxcrNbW1tgaZk1NjUKhkCKRiEpLS7Vz50498cQTsixLpaWluvnmm9NccWJN\n1f/q1avV3NysdevWqaKiQi6XS5WVlQoEAmmuOnGm+/wz3XT97969W9u3b5ck3XHHHbr//vvTWW5C\nTdf7xb8odrvdWrp0qTZu3JjmipPn4kGYk777Lndl/3a++7hXOQAABuEGLAAAGITgBgDAIAQ3AAAG\nIbgBADAIwQ0AgEEIbgAADEJwAwBgkP8PJjFcqzTtbqoAAAAASUVORK5CYII=\n", + "image/png": "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\nH//4h5YtW6aCggIVFxfrqquu0uDgYLZKzap0fbryyiv11FNPSTp9P/7ExITmzJmTlTpNYLd+/ksv\nvaS8vLzUnNkqXZ8OHTqk8vJyPfbYY9q0aZOuuOIKLViwIFulZl26Xs2dO1eLFi1SLBbT2NjYOVea\nnE18Pt85j+K99dZb8vl8Ki4uVmFhoZYtW6bu7u6073VJk7C9vV3PPPPMpG2f+9znVFxcLEm67LLL\nNDo6Omnc7XbL7XZrYmJC27dvV0NDg+bOnXspyzJaurXOPztWVFSkkZGRbJSZden6lJ+fr/nz50uS\nHn/8cV1//fXy+XzZKjXr0vXqyJEjikQi+vnPfz7rTwWk69OJEyf0+uuv6w9/+IM8Ho82bdqkG2+8\ncdZ+r+yeybBw4UKtW7dOlmXpvvvuy1aZRqitrdW777571vbP9vCyyy6z/f/5JQ3oQCCgQCAwadu3\nv/3t1FresVhsUoGfGB4e1gMPPKCVK1fq3nvvvZQlGS/dWufFxcWTftDEYjGVlJRMe40msFsTPpFI\naPv27fJ6vWpqaspCheZI16vnn39e7733nrZs2aJ3331XbrdbixYt0urVq7NVbtak69P8+fO1dOlS\nXX755ZKkqqoqvfHGG7M2oNP16pVXXtH777+vjo4OWZalrVu3qrKyUkuXLs1WuUaayv/PM34s4tNr\neXd2dqqqqmrS+EcffaQ777xTgUBA3/zmNzNdjnHSrXX+pS99ST09PUokEhoZGdG//vUvXXvttdkq\nNavs1oS///779cUvflFNTU2zftnZdL166KGHtGfPHj377LOqr6/XXXfdNSvDWUrfpyVLlujIkSP6\n8MMPNTExob6+Pl1zzTXZKjXr0vWqpKREHo9HhYWFcrvd8nq9s/ZI36dZn1mk8+qrr9bRo0c1PDys\nRCKhgwcP6stf/nLa98j4yd477rhD3/3ud7Vx40a53W799Kc/lST9+Mc/1tq1a9XT06N///vf2rt3\nr/bs2SOXy6VQKKRFixZlujQj2K11vnnzZm3cuFGWZenBBx+U2+3OcsXZka5Pp06dUnd3t8bHx9XZ\n2SmXy6Vt27apoqIiy1Vnh9P182c7uz49+OCDuvvuu+VyubRu3bpZHdB2vXrttde0YcMG5eXladmy\nZbrpppuyXHH2fbKjEIlEdPLkSa1fv17bt2/X3XffLcuytH79en3+859P/x7WZ2MeAABk3ey+3A4A\nAEMR0AAAGIiABgDAQAQ0AAAGIqABADAQAQ0AgIEIaAAADPT/AXORof3vyV/cAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -493,12 +463,97 @@ "using the efficient broadcasting ([Computation on Arrays: Broadcasting](02.05-Computation-on-arrays-broadcasting.ipynb)) and aggregation ([Aggregations: Min, Max, and Everything In Between](02.04-Computation-on-arrays-aggregates.ipynb)) routines provided by NumPy we can compute the matrix of square distances in a single line of code:" ] }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(10, 1, 2)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X[:, np.newaxis, :].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[ 0.23089383, 0.24102547]],\n", + "\n", + " [[ 0.68326352, 0.60999666]],\n", + "\n", + " [[ 0.83319491, 0.17336465]],\n", + "\n", + " [[ 0.39106061, 0.18223609]],\n", + "\n", + " [[ 0.75536141, 0.42515587]],\n", + "\n", + " [[ 0.20794166, 0.56770033]],\n", + "\n", + " [[ 0.03131329, 0.84228477]],\n", + "\n", + " [[ 0.44975413, 0.39515024]],\n", + "\n", + " [[ 0.92665887, 0.727272 ]],\n", + "\n", + " [[ 0.32654077, 0.57044397]]])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X[:, np.newaxis, :]" + ] + }, { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[ 0.23089383, 0.24102547],\n", + " [ 0.68326352, 0.60999666],\n", + " [ 0.83319491, 0.17336465],\n", + " [ 0.39106061, 0.18223609],\n", + " [ 0.75536141, 0.42515587],\n", + " [ 0.20794166, 0.56770033],\n", + " [ 0.03131329, 0.84228477],\n", + " [ 0.44975413, 0.39515024],\n", + " [ 0.92665887, 0.727272 ],\n", + " [ 0.32654077, 0.57044397]]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X[np.newaxis, :, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, "outputs": [], "source": [ "dist_sq = np.sum((X[:, np.newaxis, :] - X[np.newaxis, :, :]) ** 2, axis=-1)" @@ -513,10 +568,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -524,7 +577,7 @@ "(10, 10, 2)" ] }, - "execution_count": 17, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -537,10 +590,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 22, + "metadata": {}, "outputs": [ { "data": { @@ -548,7 +599,7 @@ "(10, 10, 2)" ] }, - "execution_count": 18, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -561,10 +612,25 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Object `numpy.sum` not found.\n" + ] + } + ], + "source": [ + "numpy.sum?" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, "outputs": [ { "data": { @@ -572,7 +638,7 @@ "(10, 10)" ] }, - "execution_count": 19, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -593,9 +659,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -623,9 +687,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -661,9 +723,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "K = 2\n", @@ -680,9 +740,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -773,9 +831,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/02.09-Structured-Data-NumPy.ipynb b/notebooks/02.09-Structured-Data-NumPy.ipynb index 7b1f5222a..6a290ca60 100644 --- a/notebooks/02.09-Structured-Data-NumPy.ipynb +++ b/notebooks/02.09-Structured-Data-NumPy.ipynb @@ -55,9 +55,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "name = ['Alice', 'Bob', 'Cathy', 'Doug']\n", @@ -78,9 +76,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "x = np.zeros(4, dtype=int)" @@ -96,9 +92,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -128,9 +122,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -160,9 +152,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -184,9 +174,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -207,9 +195,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -237,9 +223,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -279,9 +263,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -309,9 +291,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -339,9 +319,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -368,9 +346,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -422,9 +398,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -467,9 +441,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -496,9 +468,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -526,9 +496,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -590,9 +558,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.00-Introduction-to-Pandas.ipynb b/notebooks/03.00-Introduction-to-Pandas.ipynb index 644a1bad0..675d124a5 100644 --- a/notebooks/03.00-Introduction-to-Pandas.ipynb +++ b/notebooks/03.00-Introduction-to-Pandas.ipynb @@ -60,9 +60,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -154,9 +152,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.01-Introducing-Pandas-Objects.ipynb b/notebooks/03.01-Introducing-Pandas-Objects.ipynb index bdee556f5..d7ee4f217 100644 --- a/notebooks/03.01-Introducing-Pandas-Objects.ipynb +++ b/notebooks/03.01-Introducing-Pandas-Objects.ipynb @@ -62,9 +62,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -96,10 +94,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { @@ -107,7 +103,7 @@ "array([ 0.25, 0.5 , 0.75, 1. ])" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -125,10 +121,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -136,7 +130,7 @@ "RangeIndex(start=0, stop=4, step=1)" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -154,10 +148,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -165,7 +157,7 @@ "0.5" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -176,10 +168,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -189,7 +179,7 @@ "dtype: float64" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -225,10 +215,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -240,7 +228,7 @@ "dtype: float64" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -260,10 +248,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -271,7 +257,7 @@ "0.5" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -289,10 +275,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -304,7 +288,7 @@ "dtype: float64" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -317,10 +301,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -328,7 +310,7 @@ "0.5" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -352,10 +334,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { @@ -368,7 +348,7 @@ "dtype: int64" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -393,10 +373,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { @@ -404,7 +382,7 @@ "38332521" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -422,10 +400,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "data": { @@ -436,7 +412,7 @@ "dtype: int64" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -471,10 +447,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { @@ -485,7 +459,7 @@ "dtype: int64" ] }, - "execution_count": 14, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -503,10 +477,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { @@ -517,7 +489,7 @@ "dtype: int64" ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -535,10 +507,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "data": { @@ -549,7 +519,7 @@ "dtype: object" ] }, - "execution_count": 16, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -567,10 +537,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "data": { @@ -580,7 +548,7 @@ "dtype: object" ] }, - "execution_count": 17, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -621,10 +589,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 32, + "metadata": {}, "outputs": [ { "data": { @@ -637,7 +603,7 @@ "dtype: int64" ] }, - "execution_count": 18, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -658,10 +624,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 33, + "metadata": {}, "outputs": [ { "data": { @@ -714,7 +678,7 @@ "Texas 695662 26448193" ] }, - "execution_count": 19, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -725,6 +689,56 @@ "states" ] }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "California 38332521\n", + "Florida 19552860\n", + "Illinois 12882135\n", + "New York 19651127\n", + "Texas 26448193\n", + "dtype: int64" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "population" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "California 423967\n", + "Florida 170312\n", + "Illinois 149995\n", + "New York 141297\n", + "Texas 695662\n", + "dtype: int64" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "area" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -734,10 +748,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 36, + "metadata": {}, "outputs": [ { "data": { @@ -745,7 +757,7 @@ "Index(['California', 'Florida', 'Illinois', 'New York', 'Texas'], dtype='object')" ] }, - "execution_count": 20, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -763,10 +775,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 37, + "metadata": {}, "outputs": [ { "data": { @@ -774,7 +784,7 @@ "Index(['area', 'population'], dtype='object')" ] }, - "execution_count": 21, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -803,10 +813,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 38, + "metadata": {}, "outputs": [ { "data": { @@ -819,7 +827,7 @@ "Name: area, dtype: int64" ] }, - "execution_count": 22, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -858,10 +866,8 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, + "execution_count": 28, + "metadata": {}, "outputs": [ { "data": { @@ -908,7 +914,7 @@ "Texas 26448193" ] }, - "execution_count": 23, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -929,10 +935,17 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, "outputs": [ { "data": { @@ -973,7 +986,7 @@ "2 2 4" ] }, - "execution_count": 24, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -984,6 +997,29 @@ "pd.DataFrame(data)" ] }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 {'a': 0, 'b': 0}\n", + "1 {'a': 1, 'b': 2}\n", + "2 {'a': 2, 'b': 4}\n", + "dtype: object" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.Series(data)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -994,9 +1030,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1055,9 +1089,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1130,12 +1162,63 @@ "If omitted, an integer index will be used for each:" ] }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "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", + "
01
00.1616210.274943
10.0249740.719203
20.8426760.565804
\n", + "
" + ], + "text/plain": [ + " 0 1\n", + "0 0.161621 0.274943\n", + "1 0.024974 0.719203\n", + "2 0.842676 0.565804" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(np.random.rand(3, 2))" + ] + }, { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1199,10 +1282,8 @@ }, { "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, + "execution_count": 46, + "metadata": {}, "outputs": [ { "data": { @@ -1211,7 +1292,7 @@ " dtype=[('A', '\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mind\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m/Users/jakevdp/anaconda/lib/python3.5/site-packages/pandas/indexes/base.py\u001b[0m in \u001b[0;36m__setitem__\u001b[0;34m(self, key, value)\u001b[0m\n\u001b[1;32m 1243\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1244\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__setitem__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1245\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Index does not support mutable operations\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1246\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1247\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__getitem__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mind\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/anaconda/envs/PDSH/lib/python3.5/site-packages/pandas/indexes/base.py\u001b[0m in \u001b[0;36m__setitem__\u001b[0;34m(self, key, value)\u001b[0m\n\u001b[1;32m 1243\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1244\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__setitem__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1245\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Index does not support mutable operations\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1246\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1247\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__getitem__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: Index does not support mutable operations" ] } @@ -1441,10 +1510,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, + "execution_count": 52, + "metadata": {}, "outputs": [], "source": [ "indA = pd.Index([1, 3, 5, 7, 9])\n", @@ -1453,10 +1520,8 @@ }, { "cell_type": "code", - "execution_count": 36, - "metadata": { - "collapsed": false - }, + "execution_count": 54, + "metadata": {}, "outputs": [ { "data": { @@ -1464,7 +1529,7 @@ "Int64Index([3, 5, 7], dtype='int64')" ] }, - "execution_count": 36, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -1475,10 +1540,8 @@ }, { "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": false - }, + "execution_count": 55, + "metadata": {}, "outputs": [ { "data": { @@ -1486,7 +1549,7 @@ "Int64Index([1, 2, 3, 5, 7, 9, 11], dtype='int64')" ] }, - "execution_count": 37, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1497,10 +1560,8 @@ }, { "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": false - }, + "execution_count": 56, + "metadata": {}, "outputs": [ { "data": { @@ -1508,7 +1569,7 @@ "Int64Index([1, 2, 9, 11], dtype='int64')" ] }, - "execution_count": 38, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1517,6 +1578,37 @@ "indA ^ indB # symmetric difference" ] }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Int64Index([3, 5, 7], dtype='int64')" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "indA.intersection(indB)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "indA.symmetric_difference?" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1550,9 +1642,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.02-Data-Indexing-and-Selection.ipynb b/notebooks/03.02-Data-Indexing-and-Selection.ipynb index 7707be226..fbf118f56 100644 --- a/notebooks/03.02-Data-Indexing-and-Selection.ipynb +++ b/notebooks/03.02-Data-Indexing-and-Selection.ipynb @@ -59,10 +59,8 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { @@ -74,7 +72,7 @@ "dtype: float64" ] }, - "execution_count": 1, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -88,10 +86,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { @@ -99,7 +95,7 @@ "0.5" ] }, - "execution_count": 2, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -117,10 +113,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "data": { @@ -128,7 +122,7 @@ "True" ] }, - "execution_count": 3, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -139,10 +133,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "data": { @@ -150,7 +142,7 @@ "Index(['a', 'b', 'c', 'd'], dtype='object')" ] }, - "execution_count": 4, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -161,10 +153,28 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.items()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, "outputs": [ { "data": { @@ -172,7 +182,7 @@ "[('a', 0.25), ('b', 0.5), ('c', 0.75), ('d', 1.0)]" ] }, - "execution_count": 5, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -191,10 +201,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 23, + "metadata": {}, "outputs": [ { "data": { @@ -207,7 +215,7 @@ "dtype: float64" ] }, - "execution_count": 6, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -241,10 +249,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 24, + "metadata": {}, "outputs": [ { "data": { @@ -255,7 +261,7 @@ "dtype: float64" ] }, - "execution_count": 7, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -267,10 +273,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 25, + "metadata": {}, "outputs": [ { "data": { @@ -280,7 +284,7 @@ "dtype: float64" ] }, - "execution_count": 8, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -292,10 +296,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 26, + "metadata": {}, "outputs": [ { "data": { @@ -305,7 +307,7 @@ "dtype: float64" ] }, - "execution_count": 9, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -317,10 +319,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 27, + "metadata": {}, "outputs": [ { "data": { @@ -330,7 +330,7 @@ "dtype: float64" ] }, - "execution_count": 10, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -360,10 +360,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 28, + "metadata": {}, "outputs": [ { "data": { @@ -374,7 +372,7 @@ "dtype: object" ] }, - "execution_count": 11, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -386,10 +384,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -397,7 +393,7 @@ "'a'" ] }, - "execution_count": 12, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -409,10 +405,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 30, + "metadata": {}, "outputs": [ { "data": { @@ -422,7 +416,7 @@ "dtype: object" ] }, - "execution_count": 13, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -444,10 +438,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 31, + "metadata": {}, "outputs": [ { "data": { @@ -455,7 +447,7 @@ "'a'" ] }, - "execution_count": 14, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -466,10 +458,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 32, + "metadata": {}, "outputs": [ { "data": { @@ -479,7 +469,7 @@ "dtype: object" ] }, - "execution_count": 15, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -497,10 +487,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 33, + "metadata": {}, "outputs": [ { "data": { @@ -508,7 +496,7 @@ "'b'" ] }, - "execution_count": 16, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -519,10 +507,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 34, + "metadata": {}, "outputs": [ { "data": { @@ -532,7 +518,7 @@ "dtype: object" ] }, - "execution_count": 17, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -574,10 +560,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 36, + "metadata": {}, "outputs": [ { "data": { @@ -630,7 +614,7 @@ "Texas 695662 26448193" ] }, - "execution_count": 18, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -655,10 +639,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 37, + "metadata": {}, "outputs": [ { "data": { @@ -671,7 +653,7 @@ "Name: area, dtype: int64" ] }, - "execution_count": 19, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -689,10 +671,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 38, + "metadata": {}, "outputs": [ { "data": { @@ -705,7 +685,7 @@ "Name: area, dtype: int64" ] }, - "execution_count": 20, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -723,10 +703,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 39, + "metadata": {}, "outputs": [ { "data": { @@ -734,7 +712,7 @@ "True" ] }, - "execution_count": 21, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -754,10 +732,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 40, + "metadata": {}, "outputs": [ { "data": { @@ -765,7 +741,7 @@ "False" ] }, - "execution_count": 22, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -785,10 +761,8 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, + "execution_count": 41, + "metadata": {}, "outputs": [ { "data": { @@ -847,7 +821,7 @@ "Texas 695662 26448193 38.018740" ] }, - "execution_count": 23, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -876,10 +850,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": { - "collapsed": false - }, + "execution_count": 42, + "metadata": {}, "outputs": [ { "data": { @@ -891,7 +863,7 @@ " [ 6.95662000e+05, 2.64481930e+07, 3.80187404e+01]])" ] }, - "execution_count": 24, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -911,9 +883,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -986,9 +956,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1012,12 +980,74 @@ "and passing a single \"index\" to a ``DataFrame`` accesses a column:" ] }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "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", + "
areapopdensity
Florida17031219552860114.806121
Illinois1499951288213585.883763
New York14129719651127139.076746
Texas6956622644819338.018740
\n", + "
" + ], + "text/plain": [ + " area pop density\n", + "Florida 170312 19552860 114.806121\n", + "Illinois 149995 12882135 85.883763\n", + "New York 141297 19651127 139.076746\n", + "Texas 695662 26448193 38.018740" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[\"Florida\":]" + ] + }, { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1053,9 +1083,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1115,9 +1143,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1179,9 +1205,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1244,9 +1268,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1300,9 +1322,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1391,9 +1411,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1450,9 +1468,7 @@ { "cell_type": "code", "execution_count": 34, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1509,9 +1525,7 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1591,9 +1605,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.03-Operations-in-Pandas.ipynb b/notebooks/03.03-Operations-in-Pandas.ipynb index ac4b1eb37..9333b1bff 100644 --- a/notebooks/03.03-Operations-in-Pandas.ipynb +++ b/notebooks/03.03-Operations-in-Pandas.ipynb @@ -63,9 +63,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -91,9 +89,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -163,9 +159,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -196,9 +190,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -284,10 +276,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [], "source": [ "area = pd.Series({'Alaska': 1723337, 'Texas': 695662,\n", @@ -305,10 +295,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -320,7 +308,7 @@ "dtype: float64" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -338,10 +326,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -349,7 +335,7 @@ "Index(['Alaska', 'California', 'New York', 'Texas'], dtype='object')" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -368,10 +354,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -383,7 +367,7 @@ "dtype: float64" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -404,10 +388,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -419,7 +401,7 @@ "dtype: float64" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -439,10 +421,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { @@ -459,25 +439,25 @@ " \n", " \n", " 0\n", - " 1\n", + " 0\n", " 11\n", " \n", " \n", " 1\n", - " 5\n", - " 1\n", + " 11\n", + " 16\n", " \n", " \n", "\n", "" ], "text/plain": [ - " A B\n", - "0 1 11\n", - "1 5 1" + " A B\n", + "0 0 11\n", + "1 11 16" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -490,10 +470,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "data": { @@ -511,19 +489,19 @@ " \n", " \n", " 0\n", - " 4\n", - " 0\n", " 9\n", + " 2\n", + " 6\n", " \n", " \n", " 1\n", - " 5\n", + " 3\n", " 8\n", - " 0\n", + " 2\n", " \n", " \n", " 2\n", - " 9\n", + " 4\n", " 2\n", " 6\n", " \n", @@ -533,12 +511,12 @@ ], "text/plain": [ " B A C\n", - "0 4 0 9\n", - "1 5 8 0\n", - "2 9 2 6" + "0 9 2 6\n", + "1 3 8 2\n", + "2 4 2 6" ] }, - "execution_count": 12, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -552,9 +530,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -620,9 +596,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -677,6 +651,48 @@ "A.add(B, fill_value=fill)" ] }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A 5.5\n", + "B 13.5\n", + "dtype: float64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9.5" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.stack().mean()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -707,20 +723,18 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([[3, 8, 2, 4],\n", - " [2, 6, 4, 8],\n", - " [6, 1, 3, 8]])" + "array([[4, 8, 6, 1],\n", + " [3, 8, 1, 9],\n", + " [8, 9, 4, 1]])" ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -732,20 +746,18 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0, 0, 0, 0],\n", - " [-1, -2, 2, 4],\n", - " [ 3, -7, 1, 4]])" + " [-1, 0, -5, 8],\n", + " [ 4, 1, -2, 0]])" ] }, - "execution_count": 16, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -754,6 +766,26 @@ "A - A[0]" ] }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([4, 8, 6, 1])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A[0]" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -765,10 +797,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -795,16 +825,16 @@ " \n", " 1\n", " -1\n", - " -2\n", - " 2\n", - " 4\n", + " 0\n", + " -5\n", + " 8\n", " \n", " \n", " 2\n", - " 3\n", - " -7\n", - " 1\n", " 4\n", + " 1\n", + " -2\n", + " 0\n", " \n", " \n", "\n", @@ -813,11 +843,11 @@ "text/plain": [ " Q R S T\n", "0 0 0 0 0\n", - "1 -1 -2 2 4\n", - "2 3 -7 1 4" + "1 -1 0 -5 8\n", + "2 4 1 -2 0" ] }, - "execution_count": 17, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -836,10 +866,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 22, + "metadata": {}, "outputs": [ { "data": { @@ -858,24 +886,24 @@ " \n", " \n", " 0\n", - " -5\n", - " 0\n", - " -6\n", " -4\n", + " 0\n", + " -2\n", + " -7\n", " \n", " \n", " 1\n", - " -4\n", + " -5\n", " 0\n", - " -2\n", - " 2\n", + " -7\n", + " 1\n", " \n", " \n", " 2\n", - " 5\n", + " -1\n", " 0\n", - " 2\n", - " 7\n", + " -5\n", + " -8\n", " \n", " \n", "\n", @@ -883,12 +911,12 @@ ], "text/plain": [ " Q R S T\n", - "0 -5 0 -6 -4\n", - "1 -4 0 -2 2\n", - "2 5 0 2 7" + "0 -4 0 -2 -7\n", + "1 -5 0 -7 1\n", + "2 -1 0 -5 -8" ] }, - "execution_count": 18, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -906,20 +934,18 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 23, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Q 3\n", - "S 2\n", + "Q 4\n", + "S 6\n", "Name: 0, dtype: int64" ] }, - "execution_count": 19, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -931,10 +957,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 24, + "metadata": {}, "outputs": [ { "data": { @@ -962,14 +986,14 @@ " 1\n", " -1.0\n", " NaN\n", - " 2.0\n", + " -5.0\n", " NaN\n", " \n", " \n", " 2\n", - " 3.0\n", + " 4.0\n", " NaN\n", - " 1.0\n", + " -2.0\n", " NaN\n", " \n", " \n", @@ -979,11 +1003,11 @@ "text/plain": [ " Q R S T\n", "0 0.0 NaN 0.0 NaN\n", - "1 -1.0 NaN 2.0 NaN\n", - "2 3.0 NaN 1.0 NaN" + "1 -1.0 NaN -5.0 NaN\n", + "2 4.0 NaN -2.0 NaN" ] }, - "execution_count": 20, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1025,9 +1049,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.04-Missing-Values.ipynb b/notebooks/03.04-Missing-Values.ipynb index 6cbef56f9..725219421 100644 --- a/notebooks/03.04-Missing-Values.ipynb +++ b/notebooks/03.04-Missing-Values.ipynb @@ -101,9 +101,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -132,19 +130,17 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dtype = object\n", - "10 loops, best of 3: 78.2 ms per loop\n", + "61.9 ms ± 899 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "\n", "dtype = int\n", - "100 loops, best of 3: 3.06 ms per loop\n", + "897 µs ± 6.61 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n", "\n" ] } @@ -166,9 +162,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "TypeError", @@ -178,7 +172,7 @@ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mvals1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m/Users/jakevdp/anaconda/lib/python3.5/site-packages/numpy/core/_methods.py\u001b[0m in \u001b[0;36m_sum\u001b[0;34m(a, axis, dtype, out, keepdims)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_sum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 32\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mumr_sum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 33\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda/envs/PDSH/lib/python3.5/site-packages/numpy/core/_methods.py\u001b[0m in \u001b[0;36m_sum\u001b[0;34m(a, axis, dtype, out, keepdims)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_sum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 32\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mumr_sum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 33\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'NoneType'" ] } @@ -206,9 +200,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -238,9 +230,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -260,9 +250,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -289,9 +277,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -318,9 +304,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -356,9 +340,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -390,9 +372,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -415,9 +395,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -499,9 +477,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -532,9 +508,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -574,9 +548,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -605,10 +577,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 30, + "metadata": {}, "outputs": [ { "data": { @@ -653,7 +623,7 @@ "2 NaN 4.0 6" ] }, - "execution_count": 17, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -677,10 +647,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 25, + "metadata": {}, "outputs": [ { "data": { @@ -711,7 +679,7 @@ "1 2.0 3.0 5" ] }, - "execution_count": 18, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -729,10 +697,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 26, + "metadata": {}, "outputs": [ { "data": { @@ -769,7 +735,7 @@ "2 6" ] }, - "execution_count": 19, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -791,10 +757,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 31, + "metadata": {}, "outputs": [ { "data": { @@ -843,7 +807,7 @@ "2 NaN 4.0 6 NaN" ] }, - "execution_count": 20, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -855,10 +819,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 33, + "metadata": {}, "outputs": [ { "data": { @@ -903,7 +865,7 @@ "2 NaN 4.0 6" ] }, - "execution_count": 21, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -921,10 +883,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 32, + "metadata": {}, "outputs": [ { "data": { @@ -957,7 +917,7 @@ "1 2.0 3.0 5 NaN" ] }, - "execution_count": 22, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -989,9 +949,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1024,9 +982,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1058,9 +1014,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1093,9 +1047,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1130,9 +1082,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1193,9 +1143,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1286,9 +1234,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.05-Hierarchical-Indexing.ipynb b/notebooks/03.05-Hierarchical-Indexing.ipynb index 95de26d26..262b80e5a 100644 --- a/notebooks/03.05-Hierarchical-Indexing.ipynb +++ b/notebooks/03.05-Hierarchical-Indexing.ipynb @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -69,10 +69,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "data": { @@ -86,7 +84,7 @@ "dtype: int64" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -111,10 +109,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { @@ -126,7 +122,7 @@ "dtype: int64" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -145,9 +141,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -187,9 +181,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -220,9 +212,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -264,9 +254,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -308,9 +296,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -371,9 +357,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -408,9 +392,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -497,9 +479,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -568,10 +548,31 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.2897437 , 0.58211914],\n", + " [ 0.0207764 , 0.5592639 ],\n", + " [ 0.80033058, 0.50051203],\n", + " [ 0.98489574, 0.22062483]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.rand(4, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -590,24 +591,24 @@ " \n", " a\n", " 1\n", - " 0.554233\n", - " 0.356072\n", + " 0.930712\n", + " 0.611090\n", " \n", " \n", " 2\n", - " 0.925244\n", - " 0.219474\n", + " 0.580910\n", + " 0.124496\n", " \n", " \n", " b\n", " 1\n", - " 0.441759\n", - " 0.610054\n", + " 0.888637\n", + " 0.711522\n", " \n", " \n", " 2\n", - " 0.171495\n", - " 0.886688\n", + " 0.259296\n", + " 0.471356\n", " \n", " \n", "\n", @@ -615,13 +616,13 @@ ], "text/plain": [ " data1 data2\n", - "a 1 0.554233 0.356072\n", - " 2 0.925244 0.219474\n", - "b 1 0.441759 0.610054\n", - " 2 0.171495 0.886688" + "a 1 0.930712 0.611090\n", + " 2 0.580910 0.124496\n", + "b 1 0.888637 0.711522\n", + " 2 0.259296 0.471356" ] }, - "execution_count": 12, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -645,9 +646,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -696,9 +695,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -726,9 +723,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -756,9 +751,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -786,9 +779,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -826,10 +817,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -844,7 +833,7 @@ "dtype: int64" ] }, - "execution_count": 18, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -873,10 +862,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { @@ -916,40 +903,40 @@ " \n", " 2013\n", " 1\n", - " 31.0\n", - " 38.7\n", - " 32.0\n", - " 36.7\n", - " 35.0\n", - " 37.2\n", + " 44.0\n", + " 35.4\n", + " 34.0\n", + " 37.7\n", + " 41.0\n", + " 37.5\n", " \n", " \n", " 2\n", - " 44.0\n", - " 37.7\n", - " 50.0\n", - " 35.0\n", - " 29.0\n", - " 36.7\n", + " 36.0\n", + " 36.0\n", + " 37.0\n", + " 38.2\n", + " 15.0\n", + " 39.0\n", " \n", " \n", " 2014\n", " 1\n", - " 30.0\n", - " 37.4\n", - " 39.0\n", - " 37.8\n", - " 61.0\n", + " 38.0\n", + " 37.2\n", + " 40.0\n", " 36.9\n", + " 53.0\n", + " 36.5\n", " \n", " \n", " 2\n", " 47.0\n", - " 37.8\n", - " 48.0\n", - " 37.3\n", - " 51.0\n", - " 36.5\n", + " 37.6\n", + " 20.0\n", + " 37.4\n", + " 42.0\n", + " 36.9\n", " \n", " \n", "\n", @@ -959,13 +946,13 @@ "subject Bob Guido Sue \n", "type HR Temp HR Temp HR Temp\n", "year visit \n", - "2013 1 31.0 38.7 32.0 36.7 35.0 37.2\n", - " 2 44.0 37.7 50.0 35.0 29.0 36.7\n", - "2014 1 30.0 37.4 39.0 37.8 61.0 36.9\n", - " 2 47.0 37.8 48.0 37.3 51.0 36.5" + "2013 1 44.0 35.4 34.0 37.7 41.0 37.5\n", + " 2 36.0 36.0 37.0 38.2 15.0 39.0\n", + "2014 1 38.0 37.2 40.0 36.9 53.0 36.5\n", + " 2 47.0 37.6 20.0 37.4 42.0 36.9" ] }, - "execution_count": 19, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -999,9 +986,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1096,9 +1081,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1132,9 +1115,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1162,9 +1143,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1194,9 +1173,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1228,9 +1205,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1261,9 +1236,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1294,9 +1267,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1331,9 +1302,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1442,9 +1411,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1476,9 +1443,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1547,9 +1512,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1581,9 +1544,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "SyntaxError", @@ -1609,9 +1570,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1711,25 +1670,23 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ "char int\n", - "a 1 0.003001\n", - " 2 0.164974\n", - "c 1 0.741650\n", - " 2 0.569264\n", - "b 1 0.001693\n", - " 2 0.526226\n", + "a 1 0.313801\n", + " 2 0.899271\n", + "c 1 0.399921\n", + " 2 0.063313\n", + "b 1 0.225125\n", + " 2 0.666829\n", "dtype: float64" ] }, - "execution_count": 34, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1750,10 +1707,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1785,9 +1740,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1822,9 +1775,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1855,12 +1806,37 @@ "As we saw briefly before, it is possible to convert a dataset from a stacked multi-index to a simple two-dimensional representation, optionally specifying the level to use:" ] }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "state year\n", + "California 2000 33871648\n", + " 2010 37253956\n", + "New York 2000 18976457\n", + " 2010 19378102\n", + "Texas 2000 20851820\n", + " 2010 25145561\n", + "dtype: int64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pop" + ] + }, { "cell_type": "code", "execution_count": 38, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1917,9 +1893,7 @@ { "cell_type": "code", "execution_count": 39, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1975,6 +1949,65 @@ "pop.unstack(level=1)" ] }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "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", + "
year20002010
state
California3387164837253956
New York1897645719378102
Texas2085182025145561
\n", + "
" + ], + "text/plain": [ + "year 2000 2010\n", + "state \n", + "California 33871648 37253956\n", + "New York 18976457 19378102\n", + "Texas 20851820 25145561" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pop.unstack()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1985,9 +2018,7 @@ { "cell_type": "code", "execution_count": 40, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2025,9 +2056,7 @@ { "cell_type": "code", "execution_count": 41, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2114,9 +2143,7 @@ { "cell_type": "code", "execution_count": 42, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2209,9 +2236,7 @@ { "cell_type": "code", "execution_count": 43, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2319,9 +2344,7 @@ { "cell_type": "code", "execution_count": 44, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2405,9 +2428,7 @@ { "cell_type": "code", "execution_count": 45, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2510,9 +2531,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.06-Concat-And-Append.ipynb b/notebooks/03.06-Concat-And-Append.ipynb index 93e0aa729..c25ce8861 100644 --- a/notebooks/03.06-Concat-And-Append.ipynb +++ b/notebooks/03.06-Concat-And-Append.ipynb @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -60,10 +60,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "data": { @@ -108,7 +106,7 @@ "2 A2 B2 C2" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -133,7 +131,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "collapsed": true }, @@ -176,10 +174,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -187,7 +183,7 @@ "array([1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -209,10 +205,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -221,7 +215,7 @@ " [3, 4, 3, 4]])" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -257,10 +251,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -274,7 +266,7 @@ "dtype: object" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -294,10 +286,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -407,7 +397,7 @@ "4 A4 B4" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -429,10 +419,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -536,7 +524,7 @@ "1 A1 B1 C1 D1" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -567,9 +555,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -714,9 +700,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -747,9 +731,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -880,9 +862,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1025,9 +1005,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1176,9 +1154,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1315,9 +1291,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1468,9 +1442,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1627,9 +1599,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.07-Merge-and-Join.ipynb b/notebooks/03.07-Merge-and-Join.ipynb index aa91fa060..1765c0aa6 100644 --- a/notebooks/03.07-Merge-and-Join.ipynb +++ b/notebooks/03.07-Merge-and-Join.ipynb @@ -102,10 +102,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "data": { @@ -197,7 +195,7 @@ "3 Sue 2014" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -217,12 +215,75 @@ "To combine this information into a single ``DataFrame``, we can use the ``pd.merge()`` function:" ] }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "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", + "
employeehire_dategroup
0Lisa2004Engineering
1Bob2008Accounting
2Jake2012Engineering
3Sue2014HR
\n", + "
" + ], + "text/plain": [ + " employee hire_date group\n", + "0 Lisa 2004 Engineering\n", + "1 Bob 2008 Accounting\n", + "2 Jake 2012 Engineering\n", + "3 Sue 2014 HR" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3 = pd.merge(df2, df1)\n", + "df3" + ] + }, { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -312,10 +373,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -327,34 +386,34 @@ " \n", " \n", " employee\n", - " group\n", " hire_date\n", + " group\n", " \n", " \n", " \n", " \n", " 0\n", - " Bob\n", - " Accounting\n", - " 2008\n", + " Lisa\n", + " 2004\n", + " Engineering\n", " \n", " \n", " 1\n", - " Jake\n", - " Engineering\n", - " 2012\n", + " Bob\n", + " 2008\n", + " Accounting\n", " \n", " \n", " 2\n", - " Lisa\n", + " Jake\n", + " 2012\n", " Engineering\n", - " 2004\n", " \n", " \n", " 3\n", " Sue\n", - " HR\n", " 2014\n", + " HR\n", " \n", " \n", "\n", @@ -397,38 +456,38 @@ " \n", " \n", " employee\n", - " group\n", " hire_date\n", + " group\n", " supervisor\n", " \n", " \n", " \n", " \n", " 0\n", - " Bob\n", - " Accounting\n", - " 2008\n", - " Carly\n", + " Lisa\n", + " 2004\n", + " Engineering\n", + " Guido\n", " \n", " \n", " 1\n", " Jake\n", - " Engineering\n", " 2012\n", + " Engineering\n", " Guido\n", " \n", " \n", " 2\n", - " Lisa\n", - " Engineering\n", - " 2004\n", - " Guido\n", + " Bob\n", + " 2008\n", + " Accounting\n", + " Carly\n", " \n", " \n", " 3\n", " Sue\n", - " HR\n", " 2014\n", + " HR\n", " Steve\n", " \n", " \n", @@ -438,11 +497,11 @@ ], "text/plain": [ "df3\n", - " employee group hire_date\n", - "0 Bob Accounting 2008\n", - "1 Jake Engineering 2012\n", - "2 Lisa Engineering 2004\n", - "3 Sue HR 2014\n", + " employee hire_date group\n", + "0 Lisa 2004 Engineering\n", + "1 Bob 2008 Accounting\n", + "2 Jake 2012 Engineering\n", + "3 Sue 2014 HR\n", "\n", "df4\n", " group supervisor\n", @@ -451,14 +510,14 @@ "2 HR Steve\n", "\n", "pd.merge(df3, df4)\n", - " employee group hire_date supervisor\n", - "0 Bob Accounting 2008 Carly\n", - "1 Jake Engineering 2012 Guido\n", - "2 Lisa Engineering 2004 Guido\n", - "3 Sue HR 2014 Steve" + " employee hire_date group supervisor\n", + "0 Lisa 2004 Engineering Guido\n", + "1 Jake 2012 Engineering Guido\n", + "2 Bob 2008 Accounting Carly\n", + "3 Sue 2014 HR Steve" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -497,9 +556,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -726,10 +783,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -868,7 +923,7 @@ "3 Sue HR 2014" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -896,10 +951,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -1043,7 +1096,7 @@ "3 Sue HR Sue 90000" ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -1063,10 +1116,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -1118,7 +1169,7 @@ "3 Sue HR 90000" ] }, - "execution_count": 8, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -1139,10 +1190,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -1234,7 +1283,7 @@ "Sue 2014" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -1255,9 +1304,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1417,9 +1464,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1578,9 +1623,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1753,10 +1796,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { @@ -1856,7 +1897,7 @@ "0 Mary bread wine" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1882,10 +1923,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { @@ -1916,7 +1955,7 @@ "0 Mary bread wine" ] }, - "execution_count": 14, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1936,9 +1975,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2079,9 +2116,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2231,10 +2266,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "data": { @@ -2303,7 +2336,7 @@ " \n", " 3\n", " Sue\n", - " 2\n", + " 4\n", " \n", " \n", "\n", @@ -2343,7 +2376,7 @@ " 3\n", " Sue\n", " 4\n", - " 2\n", + " 4\n", " \n", " \n", "\n", @@ -2363,17 +2396,17 @@ "0 Bob 3\n", "1 Jake 1\n", "2 Lisa 4\n", - "3 Sue 2\n", + "3 Sue 4\n", "\n", "pd.merge(df8, df9, on=\"name\")\n", " name rank_x rank_y\n", "0 Bob 1 3\n", "1 Jake 2 1\n", "2 Lisa 3 4\n", - "3 Sue 4 2" + "3 Sue 4 4" ] }, - "execution_count": 17, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -2382,7 +2415,7 @@ "df8 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],\n", " 'rank': [1, 2, 3, 4]})\n", "df9 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],\n", - " 'rank': [3, 1, 4, 2]})\n", + " 'rank': [3, 1, 4, 4]})\n", "display('df8', 'df9', 'pd.merge(df8, df9, on=\"name\")')" ] }, @@ -2397,9 +2430,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2576,9 +2607,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# Following are shell commands to download the data\n", @@ -2596,10 +2625,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { @@ -2763,7 +2790,7 @@ "4 California CA" ] }, - "execution_count": 20, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -2790,10 +2817,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { @@ -2864,7 +2889,7 @@ "4 AL under18 2011 1125763.0 Alabama" ] }, - "execution_count": 21, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -2885,10 +2910,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "data": { @@ -2901,7 +2924,7 @@ "dtype: bool" ] }, - "execution_count": 22, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -2919,10 +2942,8 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "data": { @@ -2993,7 +3014,7 @@ "2452 PR total 1993 NaN NaN" ] }, - "execution_count": 23, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -3012,12 +3033,30 @@ "Let's figure out which regions lack this match:" ] }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(merged.loc[merged['state'].isnull(), 'state/region'])" + ] + }, { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3045,9 +3084,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3084,9 +3121,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3183,9 +3218,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3218,9 +3251,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3248,9 +3279,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3348,9 +3377,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3448,9 +3475,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "data2010.set_index('state', inplace=True)\n", @@ -3460,9 +3485,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3499,9 +3522,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3560,9 +3581,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.08-Aggregation-and-Grouping.ipynb b/notebooks/03.08-Aggregation-and-Grouping.ipynb index b30bcab93..c5cd0aa55 100644 --- a/notebooks/03.08-Aggregation-and-Grouping.ipynb +++ b/notebooks/03.08-Aggregation-and-Grouping.ipynb @@ -84,10 +84,18 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/weilu/anaconda/envs/PDSH/lib/python3.5/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n", + " warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n", + "/Users/weilu/anaconda/envs/PDSH/lib/python3.5/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n", + " warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n" + ] + }, { "data": { "text/plain": [ @@ -107,10 +115,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { @@ -187,7 +193,7 @@ "4 Radial Velocity 1 516.220 10.50 119.47 2009" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -220,10 +226,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -236,7 +240,7 @@ "dtype: float64" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -249,10 +253,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -260,7 +262,7 @@ "2.8119254917081569" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -271,10 +273,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -282,7 +282,7 @@ "0.56238509834163142" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -300,10 +300,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -356,7 +354,7 @@ "4 0.708073 0.181825" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -369,10 +367,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -382,7 +378,7 @@ "dtype: float64" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -400,10 +396,52 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A 0.477888\n", + "B 0.443420\n", + "dtype: float64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.mean(axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A 0.477888\n", + "B 0.443420\n", + "dtype: float64" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.mean(axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { @@ -416,7 +454,32 @@ "dtype: float64" ] }, - "execution_count": 9, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.mean(axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0.088290\n", + "1 0.513997\n", + "2 0.849309\n", + "3 0.406727\n", + "4 0.444949\n", + "dtype: float64" + ] + }, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -435,10 +498,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 20, + "metadata": {}, "outputs": [ { "data": { @@ -536,7 +597,7 @@ "max 6.00000 17337.500000 25.000000 354.000000 2014.000000" ] }, - "execution_count": 10, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -628,10 +689,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -690,7 +749,7 @@ "5 C 5" ] }, - "execution_count": 11, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -710,18 +769,16 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 22, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 12, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -744,9 +801,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -759,80 +814,730 @@ " data\n", " \n", " \n", - " key\n", - " \n", + " key\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " A\n", + " 3\n", + " \n", + " \n", + " B\n", + " 5\n", + " \n", + " \n", + " C\n", + " 7\n", + " \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " data\n", + "key \n", + "A 3\n", + "B 5\n", + "C 7" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('key').sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``sum()`` method is just one possibility here; you can apply virtually any common Pandas or NumPy aggregation function, as well as virtually any valid ``DataFrame`` operation, as we will see in the following discussion." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The GroupBy object\n", + "\n", + "The ``GroupBy`` object is a very flexible abstraction.\n", + "In many ways, you can simply treat it as if it's a collection of ``DataFrame``s, and it does the difficult things under the hood. Let's see some examples using the Planets data.\n", + "\n", + "Perhaps the most important operations made available by a ``GroupBy`` are *aggregate*, *filter*, *transform*, and *apply*.\n", + "We'll discuss each of these more fully in [\"Aggregate, Filter, Transform, Apply\"](#Aggregate,-Filter,-Transform,-Apply), but before that let's introduce some of the other functionality that can be used with the basic ``GroupBy`` operation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Column indexing\n", + "\n", + "The ``GroupBy`` object supports column indexing in the same way as the ``DataFrame``, and returns a modified ``GroupBy`` object.\n", + "For example:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
methodnumberorbital_periodmassdistanceyear
0Radial Velocity1269.3000007.10077.402006
1Radial Velocity1874.7740002.21056.952008
2Radial Velocity1763.0000002.60019.842011
3Radial Velocity1326.03000019.400110.622007
4Radial Velocity1516.22000010.500119.472009
5Radial Velocity1185.8400004.80076.392008
6Radial Velocity11773.4000004.64018.152002
7Radial Velocity1798.500000NaN21.411996
8Radial Velocity1993.30000010.30073.102008
9Radial Velocity2452.8000001.99074.792010
10Radial Velocity2883.0000000.86074.792010
11Radial Velocity1335.1000009.88039.432009
12Radial Velocity1479.1000003.88097.282008
13Radial Velocity31078.0000002.53014.081996
14Radial Velocity32391.0000000.54014.082001
15Radial Velocity314002.0000001.64014.082009
16Radial Velocity14.2307850.47215.361995
17Radial Velocity514.6510000.80012.531996
18Radial Velocity544.3800000.16512.532004
19Radial Velocity54909.0000003.53012.532002
20Radial Velocity50.736540NaN12.532011
21Radial Velocity5261.2000000.17212.532007
22Radial Velocity34.2150000.0168.522009
23Radial Velocity338.0210000.0578.522009
24Radial Velocity3123.0100000.0728.522009
25Radial Velocity1116.688400NaN18.111996
26Radial Velocity1691.900000NaN81.502012
27Radial Velocity1952.7000005.30097.182008
28Radial Velocity1181.4000003.20045.522013
29Imaging1NaNNaN45.522005
.....................
1005Transit13.693641NaN200.002012
1006Transit14.465633NaN330.002012
1007Transit14.617101NaN255.002012
1008Transit12.838971NaN455.002012
1009Transit15.017180NaN300.002012
1010Transit17.919585NaN125.002012
1011Transit14.305001NaN400.002012
1012Transit13.855900NaN480.002012
1013Transit14.411953NaN160.002012
1014Transit14.378090NaN330.002012
1015Transit11.573292NaN350.002012
1016Transit12.311424NaN310.002013
1017Transit14.086052NaN380.002012
1018Transit14.614420NaN225.002012
1019Transit12.903675NaN345.002012
1020Transit12.216742NaN340.002012
1021Transit12.484193NaN260.002013
1022Transit11.360031NaN93.002012
1023Transit12.175176NaN550.002012
1024Transit13.662387NaN240.002012
1025Transit13.067850NaN60.002012
1026Transit10.925542NaN470.002014
1027Imaging1NaNNaN19.202011
1028Transit13.352057NaN3200.002012
1029Imaging1NaNNaN10.102012
1030Transit13.941507NaN172.002006
A31031Transit12.615864NaN148.002007
B51032Transit13.191524NaN174.002007
C71033Transit14.125083NaN293.002008
1034Transit14.187757NaN260.002008
\n", + "

1035 rows × 6 columns

\n", "
" ], "text/plain": [ - " data\n", - "key \n", - "A 3\n", - "B 5\n", - "C 7" + " method number orbital_period mass distance year\n", + "0 Radial Velocity 1 269.300000 7.100 77.40 2006\n", + "1 Radial Velocity 1 874.774000 2.210 56.95 2008\n", + "2 Radial Velocity 1 763.000000 2.600 19.84 2011\n", + "3 Radial Velocity 1 326.030000 19.400 110.62 2007\n", + "4 Radial Velocity 1 516.220000 10.500 119.47 2009\n", + "5 Radial Velocity 1 185.840000 4.800 76.39 2008\n", + "6 Radial Velocity 1 1773.400000 4.640 18.15 2002\n", + "7 Radial Velocity 1 798.500000 NaN 21.41 1996\n", + "8 Radial Velocity 1 993.300000 10.300 73.10 2008\n", + "9 Radial Velocity 2 452.800000 1.990 74.79 2010\n", + "10 Radial Velocity 2 883.000000 0.860 74.79 2010\n", + "11 Radial Velocity 1 335.100000 9.880 39.43 2009\n", + "12 Radial Velocity 1 479.100000 3.880 97.28 2008\n", + "13 Radial Velocity 3 1078.000000 2.530 14.08 1996\n", + "14 Radial Velocity 3 2391.000000 0.540 14.08 2001\n", + "15 Radial Velocity 3 14002.000000 1.640 14.08 2009\n", + "16 Radial Velocity 1 4.230785 0.472 15.36 1995\n", + "17 Radial Velocity 5 14.651000 0.800 12.53 1996\n", + "18 Radial Velocity 5 44.380000 0.165 12.53 2004\n", + "19 Radial Velocity 5 4909.000000 3.530 12.53 2002\n", + "20 Radial Velocity 5 0.736540 NaN 12.53 2011\n", + "21 Radial Velocity 5 261.200000 0.172 12.53 2007\n", + "22 Radial Velocity 3 4.215000 0.016 8.52 2009\n", + "23 Radial Velocity 3 38.021000 0.057 8.52 2009\n", + "24 Radial Velocity 3 123.010000 0.072 8.52 2009\n", + "25 Radial Velocity 1 116.688400 NaN 18.11 1996\n", + "26 Radial Velocity 1 691.900000 NaN 81.50 2012\n", + "27 Radial Velocity 1 952.700000 5.300 97.18 2008\n", + "28 Radial Velocity 1 181.400000 3.200 45.52 2013\n", + "29 Imaging 1 NaN NaN 45.52 2005\n", + "... ... ... ... ... ... ...\n", + "1005 Transit 1 3.693641 NaN 200.00 2012\n", + "1006 Transit 1 4.465633 NaN 330.00 2012\n", + "1007 Transit 1 4.617101 NaN 255.00 2012\n", + "1008 Transit 1 2.838971 NaN 455.00 2012\n", + "1009 Transit 1 5.017180 NaN 300.00 2012\n", + "1010 Transit 1 7.919585 NaN 125.00 2012\n", + "1011 Transit 1 4.305001 NaN 400.00 2012\n", + "1012 Transit 1 3.855900 NaN 480.00 2012\n", + "1013 Transit 1 4.411953 NaN 160.00 2012\n", + "1014 Transit 1 4.378090 NaN 330.00 2012\n", + "1015 Transit 1 1.573292 NaN 350.00 2012\n", + "1016 Transit 1 2.311424 NaN 310.00 2013\n", + "1017 Transit 1 4.086052 NaN 380.00 2012\n", + "1018 Transit 1 4.614420 NaN 225.00 2012\n", + "1019 Transit 1 2.903675 NaN 345.00 2012\n", + "1020 Transit 1 2.216742 NaN 340.00 2012\n", + "1021 Transit 1 2.484193 NaN 260.00 2013\n", + "1022 Transit 1 1.360031 NaN 93.00 2012\n", + "1023 Transit 1 2.175176 NaN 550.00 2012\n", + "1024 Transit 1 3.662387 NaN 240.00 2012\n", + "1025 Transit 1 3.067850 NaN 60.00 2012\n", + "1026 Transit 1 0.925542 NaN 470.00 2014\n", + "1027 Imaging 1 NaN NaN 19.20 2011\n", + "1028 Transit 1 3.352057 NaN 3200.00 2012\n", + "1029 Imaging 1 NaN NaN 10.10 2012\n", + "1030 Transit 1 3.941507 NaN 172.00 2006\n", + "1031 Transit 1 2.615864 NaN 148.00 2007\n", + "1032 Transit 1 3.191524 NaN 174.00 2007\n", + "1033 Transit 1 4.125083 NaN 293.00 2008\n", + "1034 Transit 1 4.187757 NaN 260.00 2008\n", + "\n", + "[1035 rows x 6 columns]" ] }, - "execution_count": 13, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df.groupby('key').sum()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The ``sum()`` method is just one possibility here; you can apply virtually any common Pandas or NumPy aggregation function, as well as virtually any valid ``DataFrame`` operation, as we will see in the following discussion." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The GroupBy object\n", - "\n", - "The ``GroupBy`` object is a very flexible abstraction.\n", - "In many ways, you can simply treat it as if it's a collection of ``DataFrame``s, and it does the difficult things under the hood. Let's see some examples using the Planets data.\n", - "\n", - "Perhaps the most important operations made available by a ``GroupBy`` are *aggregate*, *filter*, *transform*, and *apply*.\n", - "We'll discuss each of these more fully in [\"Aggregate, Filter, Transform, Apply\"](#Aggregate,-Filter,-Transform,-Apply), but before that let's introduce some of the other functionality that can be used with the basic ``GroupBy`` operation." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Column indexing\n", - "\n", - "The ``GroupBy`` object supports column indexing in the same way as the ``DataFrame``, and returns a modified ``GroupBy`` object.\n", - "For example:" + "planets" ] }, { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -852,9 +1557,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -882,9 +1585,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -931,9 +1632,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -974,12 +1673,92 @@ "For example, you can use the ``describe()`` method of ``DataFrame``s to perform a set of aggregations that describe each group in the data:" ] }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "method \n", + "Astrometry count 2.000000\n", + " mean 2011.500000\n", + " std 2.121320\n", + " min 2010.000000\n", + " 25% 2010.750000\n", + " 50% 2011.500000\n", + " 75% 2012.250000\n", + " max 2013.000000\n", + "Eclipse Timing Variations count 9.000000\n", + " mean 2010.000000\n", + " std 1.414214\n", + " min 2008.000000\n", + " 25% 2009.000000\n", + " 50% 2010.000000\n", + " 75% 2011.000000\n", + " max 2012.000000\n", + "Imaging count 38.000000\n", + " mean 2009.131579\n", + " std 2.781901\n", + " min 2004.000000\n", + " 25% 2008.000000\n", + " 50% 2009.000000\n", + " 75% 2011.000000\n", + " max 2013.000000\n", + "Microlensing count 23.000000\n", + " mean 2009.782609\n", + " std 2.859697\n", + " min 2004.000000\n", + " 25% 2008.000000\n", + " 50% 2010.000000\n", + " ... \n", + "Pulsation Timing Variations std NaN\n", + " min 2007.000000\n", + " 25% 2007.000000\n", + " 50% 2007.000000\n", + " 75% 2007.000000\n", + " max 2007.000000\n", + "Radial Velocity count 553.000000\n", + " mean 2007.518987\n", + " std 4.249052\n", + " min 1989.000000\n", + " 25% 2005.000000\n", + " 50% 2009.000000\n", + " 75% 2011.000000\n", + " max 2014.000000\n", + "Transit count 397.000000\n", + " mean 2011.236776\n", + " std 2.077867\n", + " min 2002.000000\n", + " 25% 2010.000000\n", + " 50% 2012.000000\n", + " 75% 2013.000000\n", + " max 2014.000000\n", + "Transit Timing Variations count 4.000000\n", + " mean 2012.500000\n", + " std 1.290994\n", + " min 2011.000000\n", + " 25% 2011.750000\n", + " 50% 2012.500000\n", + " 75% 2013.250000\n", + " max 2014.000000\n", + "Name: year, dtype: float64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "planets.groupby('method')['year'].describe()" + ] + }, { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1174,6 +1953,37 @@ "Again, any valid ``DataFrame``/``Series`` method can be used on the corresponding ``GroupBy`` object, which allows for some very flexible and powerful operations!" ] }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = \"sdfsfsdf\"" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Sdfsfsdf'" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.capitalize()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1188,10 +1998,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, + "execution_count": 27, + "metadata": {}, "outputs": [ { "data": { @@ -1257,7 +2065,7 @@ "5 C 5 9" ] }, - "execution_count": 19, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1284,10 +2092,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": { - "collapsed": false - }, + "execution_count": 28, + "metadata": {}, "outputs": [ { "data": { @@ -1360,7 +2166,7 @@ "C 2 3.5 5 3 6.0 9" ] }, - "execution_count": 20, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -1378,10 +2184,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -1391,8 +2195,8 @@ " \n", " \n", " \n", - " data1\n", " data2\n", + " data1\n", " \n", " \n", " key\n", @@ -1403,32 +2207,32 @@ " \n", " \n", " A\n", - " 0\n", " 5\n", + " 0\n", " \n", " \n", " B\n", - " 1\n", " 7\n", + " 1\n", " \n", " \n", " C\n", - " 2\n", " 9\n", + " 2\n", " \n", " \n", "\n", "" ], "text/plain": [ - " data1 data2\n", + " data2 data1\n", "key \n", - "A 0 5\n", - "B 1 7\n", - "C 2 9" + "A 5 0\n", + "B 7 1\n", + "C 9 2" ] }, - "execution_count": 21, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1438,6 +2242,67 @@ " 'data2': 'max'})" ] }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "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", + "
data2data1
key
A50
B71
C92
\n", + "
" + ], + "text/plain": [ + " data2 data1\n", + "key \n", + "A 5 0\n", + "B 7 1\n", + "C 9 2" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('key').aggregate({\n", + " 'data2': 'max',\n", + " 'data1': 'min'})" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1451,9 +2316,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1644,9 +2507,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1729,9 +2590,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1904,9 +2763,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2031,9 +2888,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2165,9 +3020,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2288,9 +3141,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2415,9 +3266,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2482,10 +3331,8 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": false - }, + "execution_count": 34, + "metadata": {}, "outputs": [ { "data": { @@ -2598,7 +3445,7 @@ "Transit Timing Variations 0.0 0.0 0.0 9.0" ] }, - "execution_count": 30, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2610,6 +3457,46 @@ "planets.groupby(['method', decade])['number'].sum().unstack().fillna(0)" ] }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "method decade\n", + "Astrometry 2010s 2\n", + "Eclipse Timing Variations 2000s 5\n", + " 2010s 10\n", + "Imaging 2000s 29\n", + " 2010s 21\n", + "Microlensing 2000s 12\n", + " 2010s 15\n", + "Orbital Brightness Modulation 2010s 5\n", + "Pulsar Timing 1990s 9\n", + " 2000s 1\n", + " 2010s 1\n", + "Pulsation Timing Variations 2000s 1\n", + "Radial Velocity 1980s 1\n", + " 1990s 52\n", + " 2000s 475\n", + " 2010s 424\n", + "Transit 2000s 64\n", + " 2010s 712\n", + "Transit Timing Variations 2010s 9\n", + "Name: number, dtype: int64" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "planets.groupby(['method', decade])['number'].sum()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -2647,9 +3534,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.09-Pivot-Tables.ipynb b/notebooks/03.09-Pivot-Tables.ipynb index 2710ff8f2..bd5a3f606 100644 --- a/notebooks/03.09-Pivot-Tables.ipynb +++ b/notebooks/03.09-Pivot-Tables.ipynb @@ -49,9 +49,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -63,9 +61,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -231,10 +227,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { @@ -271,7 +265,7 @@ "male 0.188908" ] }, - "execution_count": 3, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -293,10 +287,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -341,7 +333,7 @@ "male 0.368852 0.157407 0.135447" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -350,6 +342,68 @@ "titanic.groupby(['sex', 'class'])['survived'].aggregate('mean').unstack()" ] }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "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", + "
survived
classFirstSecondThird
sex
female0.9680850.9210530.500000
male0.3688520.1574070.135447
\n", + "
" + ], + "text/plain": [ + " survived \n", + "class First Second Third\n", + "sex \n", + "female 0.968085 0.921053 0.500000\n", + "male 0.368852 0.157407 0.135447" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "titanic.groupby(['sex', 'class'])[['survived']].aggregate('mean').unstack()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -371,9 +425,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -450,9 +502,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -535,9 +585,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -676,9 +724,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -771,9 +817,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -861,9 +905,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# shell command to download the data:\n", @@ -872,7 +914,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": { "collapsed": true }, @@ -890,10 +932,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -964,7 +1004,7 @@ "4 1969 1 3 F 4548" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -983,10 +1023,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -1045,7 +1083,7 @@ "2000 18229309 19106428" ] }, - "execution_count": 13, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -1065,16 +1103,14 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nJfd0uLtWowm/plapGR86BgeNPd9e2M4/D7/JncFDubvdsCZ5fiyar0JDEQeyDrP/0iHyKq4A4OXo\nST/fXvTxjcLd3q3JYzIrCpt2neW7n9Jw09oxb2IPAr21ANzVO5D8ogq2J2aw7LOjzJvUA43N709g\nGvWnwtHREQC9Xs+cOXOYO3cu/v7++Pv7X5co6PV6XFz++wzFyckJvV5PaWkpWu3VDjs7O1NSUnLd\nsWvH09PTcXBwwN3d/brj19q41va1NoQQzZe+spRdGXtxtXMhxq9PndpQqVSM7nAXHdzasTZ1M99d\n2E5SzlGmdplAe7fgBo5YNGdV5iqO5p1kX9ZBTuafQkHBVm1LH58o+vn2IsS9vcXqIFSZzHywNZX9\nxy/j4+HEvEndaePmWP15lUrF5OGhXCmp4MjpPD7YepJHRt/2u+Nt9PQ5KyuL2NhYpk6dysiRI294\njlarRa/XV39cWlqKq6srWq2W0tLS6mMuLi7VCcCvz3Vzc8PW1rb6XLiafLi6ulaf7+HhcV3ScCs6\nnRMaTe2fK3l51W+iSHPQGvoIraOfzb2PP6Rsp9JUyZSIsfj73Hi3vdr2cbBXNL07dmNtyhdsOxPH\nkoQVjAgbygPh9+Cgse65TM39+1gblu5jbmk+L+54jdyyq6MHoR7tGNqhP/2DonGydazh6tqrSz/L\nDVW88vEhElNz6BSk428z+uCmvfHf2Wce7sP/rdzH/uPZBPq6MW1El991r0ZNFPLy8pgxYwaLFi2i\nb9++Nz0vIiKCpUuXUllZicFg4Ny5c4SGhhIZGUlcXBzh4eHExcURHR2NVqvFzs6O9PR0AgIC2LNn\nD7GxsdjY2PDqq6/y8MMPk5WVhaIouLu707NnT+Lj4xk3bhzx8fFER0fXGHdBQVmt++jl5WL1xTLq\nqzX0EVpHP5t7H/XGUr49tRNXOxe6u/a4YV/q0sd7gkZxm+ttrDm5ka2ndnAwLYkpne+nk0dIQ4Xe\noJr797E2LN3HiioDryWuILfsCjF+fRgSEIOf1geA0sIqSmmY2OrSz+KySt7YmMz5rBLCO3jy+Lhu\nVJZXklteedNrZo3tysurE9jw4ykcNCqG9PD/TRw306iJwqpVqyguLmbFihUsX74clUrFe++9h53d\n9cVO2rRpw7Rp05gyZQqKojBv3jzs7OyYPHkyCxYsYMqUKdjZ2bFkyRIAnn/+eebPn4/ZbCYmJoaI\n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\n", + "image/png": "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\nEEKITv3/niddl7VSOGMAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1132,9 +1168,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "births = births.query('(births > @mu - 5 * @sig) & (births < @mu + 5 * @sig)')" @@ -1150,9 +1184,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# set 'day' column to integer; it originally was a string due to nulls\n", @@ -1170,9 +1202,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# create a datetime index from the year, month, day\n", @@ -1193,9 +1223,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1231,9 +1259,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1268,9 +1294,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1305,9 +1329,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1366,9 +1388,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.10-Working-With-Strings.ipynb b/notebooks/03.10-Working-With-Strings.ipynb index 1c64eff95..cc55ce5d6 100644 --- a/notebooks/03.10-Working-With-Strings.ipynb +++ b/notebooks/03.10-Working-With-Strings.ipynb @@ -47,9 +47,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -79,9 +77,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -110,9 +106,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "ename": "AttributeError", @@ -143,9 +137,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -179,9 +171,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -256,9 +246,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -291,9 +279,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -326,9 +312,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -361,9 +345,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -424,9 +406,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -459,9 +439,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -525,30 +503,28 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0 Gra\n", - "1 Joh\n", - "2 Ter\n", - "3 Eri\n", - "4 Ter\n", - "5 Mic\n", + "0 Graham Chapman\n", + "1 John Cleese\n", + "2 Terry Gilliam\n", + "3 Eric Idle\n", + "4 Terry Jones\n", + "5 Michael Palin\n", "dtype: object" ] }, - "execution_count": 13, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "monte.str[0:3]" + "monte.str[0:21]" ] }, { @@ -564,9 +540,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -603,9 +577,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -686,9 +658,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -796,15 +766,33 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 20 100 20 0 0 126 0 --:--:-- --:--:-- --:--:-- 186\n", + "recipeitems-latest.json already exists -- do you wish to overwrite (y or n)? ^C\n" + ] + } + ], + "source": [ + "!curl -O http://openrecipes.s3.amazonaws.com/recipeitems-latest.json.gz\n", + "!gunzip recipeitems-latest.json.gz" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], - "source": [ - "# !curl -O http://openrecipes.s3.amazonaws.com/recipeitems-latest.json.gz\n", - "# !gunzip recipeitems-latest.json.gz" - ] + "source": [] }, { "cell_type": "markdown", @@ -815,10 +803,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 27, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -846,26 +832,13 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(2, 12)" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": 28, + "metadata": {}, + "outputs": [], "source": [ "with open('recipeitems-latest.json') as f:\n", " line = f.readline()\n", - "pd.read_json(line).shape" + " pd.read_json(line).shape" ] }, { @@ -878,7 +851,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -896,10 +869,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 30, + "metadata": {}, "outputs": [ { "data": { @@ -907,7 +878,7 @@ "(173278, 17)" ] }, - "execution_count": 21, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -916,6 +887,27 @@ "recipes.shape" ] }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IOPub data rate exceeded.\n", + "The notebook server will temporarily stop sending output\n", + "to the client in order to avoid crashing it.\n", + "To change this limit, set the config variable\n", + "`--NotebookApp.iopub_data_rate_limit`.\n" + ] + } + ], + "source": [ + "data_json" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -926,10 +918,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 32, + "metadata": {}, "outputs": [ { "data": { @@ -954,7 +944,7 @@ "Name: 0, dtype: object" ] }, - "execution_count": 22, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -975,9 +965,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1014,9 +1002,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1045,9 +1031,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1074,9 +1058,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1103,9 +1085,7 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1164,9 +1144,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1290,9 +1268,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1320,9 +1296,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1394,9 +1368,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.11-Working-with-Time-Series.ipynb b/notebooks/03.11-Working-with-Time-Series.ipynb index 7fb30aa85..63ead0e4b 100644 --- a/notebooks/03.11-Working-with-Time-Series.ipynb +++ b/notebooks/03.11-Working-with-Time-Series.ipynb @@ -66,10 +66,8 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, + "execution_count": 2, + "metadata": {}, "outputs": [ { "data": { @@ -77,7 +75,7 @@ "datetime.datetime(2015, 7, 4, 0, 0)" ] }, - "execution_count": 1, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -96,10 +94,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "metadata": {}, "outputs": [ { "data": { @@ -107,7 +103,7 @@ "datetime.datetime(2015, 7, 4, 0, 0)" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -120,19 +116,15 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "Once you have a ``datetime`` object, you can do things like printing the day of the week:" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "metadata": {}, "outputs": [ { "data": { @@ -140,7 +132,7 @@ "'Saturday'" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -175,10 +167,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "data": { @@ -186,7 +176,7 @@ "array(datetime.date(2015, 7, 4), dtype='datetime64[D]')" ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -206,10 +196,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { @@ -219,7 +207,7 @@ " '2015-07-12', '2015-07-13', '2015-07-14', '2015-07-15'], dtype='datetime64[D]')" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -245,10 +233,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 8, + "metadata": {}, "outputs": [ { "data": { @@ -256,7 +242,7 @@ "numpy.datetime64('2015-07-04')" ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -274,10 +260,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, + "execution_count": 9, + "metadata": {}, "outputs": [ { "data": { @@ -285,7 +269,7 @@ "numpy.datetime64('2015-07-04T12:00')" ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -304,10 +288,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -315,7 +297,7 @@ "numpy.datetime64('2015-07-04T12:59:59.500000000')" ] }, - "execution_count": 8, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -377,10 +359,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -388,7 +368,7 @@ "Timestamp('2015-07-04 00:00:00')" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -401,10 +381,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { @@ -412,7 +390,7 @@ "'Saturday'" ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -430,10 +408,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { @@ -444,7 +420,7 @@ " dtype='datetime64[ns]', freq=None)" ] }, - "execution_count": 11, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -473,9 +449,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -509,9 +483,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -541,9 +513,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -595,9 +565,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -628,9 +596,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -659,9 +625,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -693,9 +657,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -724,9 +686,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -756,9 +716,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -790,9 +748,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -821,9 +777,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -918,9 +872,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -950,9 +902,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -996,10 +946,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, + "execution_count": 26, + "metadata": {}, "outputs": [ { "data": { @@ -1026,60 +974,60 @@ " \n", " \n", " \n", - " 2004-08-19\n", - " 49.96\n", - " 51.98\n", - " 47.93\n", - " 50.12\n", - " NaN\n", + " 2017-06-01\n", + " 968.95\n", + " 971.50\n", + " 960.01\n", + " 966.95\n", + " 1410458.0\n", " \n", " \n", - " 2004-08-20\n", - " 50.69\n", - " 54.49\n", - " 50.20\n", - " 54.10\n", - " NaN\n", + " 2017-06-02\n", + " 969.46\n", + " 975.88\n", + " 966.00\n", + " 975.60\n", + " 1750955.0\n", " \n", " \n", - " 2004-08-23\n", - " 55.32\n", - " 56.68\n", - " 54.47\n", - " 54.65\n", - " NaN\n", + " 2017-06-05\n", + " 976.55\n", + " 986.91\n", + " 975.10\n", + " 983.68\n", + " 1252106.0\n", " \n", " \n", - " 2004-08-24\n", - " 55.56\n", - " 55.74\n", - " 51.73\n", - " 52.38\n", - " NaN\n", + " 2017-06-06\n", + " 983.16\n", + " 988.25\n", + " 975.14\n", + " 976.57\n", + " 1814624.0\n", " \n", " \n", - " 2004-08-25\n", - " 52.43\n", - " 53.95\n", - " 51.89\n", - " 52.95\n", - " NaN\n", + " 2017-06-07\n", + " 979.65\n", + " 984.15\n", + " 975.77\n", + " 981.08\n", + " 1453874.0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Open High Low Close Volume\n", - "Date \n", - "2004-08-19 49.96 51.98 47.93 50.12 NaN\n", - "2004-08-20 50.69 54.49 50.20 54.10 NaN\n", - "2004-08-23 55.32 56.68 54.47 54.65 NaN\n", - "2004-08-24 55.56 55.74 51.73 52.38 NaN\n", - "2004-08-25 52.43 53.95 51.89 52.95 NaN" + " Open High Low Close Volume\n", + "Date \n", + "2017-06-01 968.95 971.50 960.01 966.95 1410458.0\n", + "2017-06-02 969.46 975.88 966.00 975.60 1750955.0\n", + "2017-06-05 976.55 986.91 975.10 983.68 1252106.0\n", + "2017-06-06 983.16 988.25 975.14 976.57 1814624.0\n", + "2017-06-07 979.65 984.15 975.77 981.08 1453874.0" ] }, - "execution_count": 25, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -1087,9 +1035,9 @@ "source": [ "from pandas_datareader import data\n", "\n", - "goog = data.DataReader('GOOG', start='2004', end='2016',\n", + "goog = data.DataReader('GOOG', start='2004', end='2018',\n", " data_source='google')\n", - "goog.head()" + "goog.tail()" ] }, { @@ -1101,7 +1049,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": { "collapsed": true }, @@ -1119,10 +1067,8 @@ }, { "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, + "execution_count": 28, + "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", @@ -1132,16 +1078,14 @@ }, { "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1169,9 +1113,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1212,9 +1154,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1263,9 +1203,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1317,9 +1255,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1361,9 +1297,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1424,9 +1358,7 @@ { "cell_type": "code", "execution_count": 34, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# !curl -o FremontBridge.csv https://data.seattle.gov/api/views/65db-xm6k/rows.csv?accessType=DOWNLOAD" @@ -1443,9 +1375,7 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1532,9 +1462,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "data.columns = ['West', 'East']\n", @@ -1551,9 +1479,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1655,9 +1581,7 @@ { "cell_type": "code", "execution_count": 38, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", @@ -1667,9 +1591,7 @@ { "cell_type": "code", "execution_count": 39, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1699,9 +1621,7 @@ { "cell_type": "code", "execution_count": 40, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1733,9 +1653,7 @@ { "cell_type": "code", "execution_count": 41, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1766,9 +1684,7 @@ { "cell_type": "code", "execution_count": 42, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1800,9 +1716,7 @@ { "cell_type": "code", "execution_count": 43, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1835,9 +1749,7 @@ { "cell_type": "code", "execution_count": 44, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1869,9 +1781,7 @@ { "cell_type": "code", "execution_count": 45, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "weekend = np.where(data.index.weekday < 5, 'Weekday', 'Weekend')\n", @@ -1888,9 +1798,7 @@ { "cell_type": "code", "execution_count": 46, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1947,9 +1855,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/03.12-Performance-Eval-and-Query.ipynb b/notebooks/03.12-Performance-Eval-and-Query.ipynb index 6aecf3ab2..ef205a705 100644 --- a/notebooks/03.12-Performance-Eval-and-Query.ipynb +++ b/notebooks/03.12-Performance-Eval-and-Query.ipynb @@ -50,15 +50,13 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "100 loops, best of 3: 3.39 ms per loop\n" + "1.19 ms ± 25.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" ] } ], @@ -80,15 +78,13 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1 loop, best of 3: 266 ms per loop\n" + "170 ms ± 3.09 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -147,9 +143,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -190,7 +184,7 @@ "cell_type": "code", "execution_count": 6, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -211,15 +205,13 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 87.1 ms per loop\n" + "75.5 ms ± 2.45 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -237,15 +229,13 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 42.2 ms per loop\n" + "36.4 ms ± 1.46 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -263,9 +253,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -316,9 +304,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -348,9 +334,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -380,9 +364,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -411,9 +393,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -442,10 +422,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "data": { @@ -453,7 +431,7 @@ "True" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -486,10 +464,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { @@ -548,7 +524,7 @@ "4 0.589161 0.252418 0.557789" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -567,10 +543,8 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, + "execution_count": 18, + "metadata": {}, "outputs": [ { "data": { @@ -578,7 +552,7 @@ "True" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -599,9 +573,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -639,9 +611,7 @@ { "cell_type": "code", "execution_count": 19, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -719,9 +689,7 @@ { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -806,9 +774,7 @@ { "cell_type": "code", "execution_count": 21, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -895,10 +861,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, + "execution_count": 19, + "metadata": {}, "outputs": [ { "data": { @@ -906,7 +870,7 @@ "True" ] }, - "execution_count": 22, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -938,10 +902,8 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "metadata": {}, "outputs": [ { "data": { @@ -949,7 +911,7 @@ "True" ] }, - "execution_count": 23, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -972,9 +934,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1003,9 +963,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1058,7 +1016,7 @@ "cell_type": "code", "execution_count": 27, "metadata": { - "collapsed": false + "collapsed": true }, "outputs": [], "source": [ @@ -1079,9 +1037,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1137,9 +1093,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/04.00-Introduction-To-Matplotlib.ipynb b/notebooks/04.00-Introduction-To-Matplotlib.ipynb index 7c19c7da5..1fbc7b3bd 100644 --- a/notebooks/04.00-Introduction-To-Matplotlib.ipynb +++ b/notebooks/04.00-Introduction-To-Matplotlib.ipynb @@ -229,9 +229,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -267,9 +265,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "fig.savefig('my_figure.png')" @@ -285,9 +281,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -311,9 +305,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -344,9 +336,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -405,9 +395,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -459,9 +447,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -519,9 +505,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/04.15-Further-Resources.ipynb b/notebooks/04.15-Further-Resources.ipynb index 1b0101f73..49a3cf485 100644 --- a/notebooks/04.15-Further-Resources.ipynb +++ b/notebooks/04.15-Further-Resources.ipynb @@ -84,9 +84,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/05.04-Feature-Engineering.ipynb b/notebooks/05.04-Feature-Engineering.ipynb index c407d4525..3eeebde90 100644 --- a/notebooks/05.04-Feature-Engineering.ipynb +++ b/notebooks/05.04-Feature-Engineering.ipynb @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "data = [\n", @@ -71,9 +69,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "{'Queen Anne': 1, 'Fremont': 2, 'Wallingford': 3};" @@ -93,9 +89,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -130,9 +124,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -164,9 +156,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -229,9 +219,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -263,9 +251,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -340,9 +326,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -445,9 +429,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -480,9 +462,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -517,9 +497,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -551,9 +529,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -596,9 +572,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "from numpy import nan\n", @@ -624,9 +598,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -660,9 +632,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -699,9 +669,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "from sklearn.pipeline import make_pipeline\n", @@ -721,9 +689,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -776,9 +742,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.5.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/notebooks/mprun_demo.py b/notebooks/mprun_demo.py new file mode 100644 index 000000000..a14e8d976 --- /dev/null +++ b/notebooks/mprun_demo.py @@ -0,0 +1,7 @@ +def sum_of_lists(N): + total = 0 + for i in range(5): + L = [j ^ (j >> i) for j in range(N)] + total += sum(L) + del L # remove reference to L + return total \ No newline at end of file diff --git a/notebooks/recipeitems-latest.json.gz b/notebooks/recipeitems-latest.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..874f406e0306bf1da9b4b65e29401243ae896a15 GIT binary patch literal 20 Ucmb2|=3toFZ63+M%*+4-04Cf5Z2$lO literal 0 HcmV?d00001 diff --git a/notebooks/recipeitems-latest.json.gz.1 b/notebooks/recipeitems-latest.json.gz.1 new file mode 100644 index 0000000000000000000000000000000000000000..874f406e0306bf1da9b4b65e29401243ae896a15 GIT binary patch literal 20 Ucmb2|=3toFZ63+M%*+4-04Cf5Z2$lO literal 0 HcmV?d00001