{ "metadata": { "name": "IPython Intro" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# IPython => Interactive Python\n", "Allows you to code & execute python code in your browser. \n", "\n", "- [Installation notes](http://ipython.org/install.html)\n", " \n", "- [EPD](https://www.enthought.com/products/epd_free.php)\n", "\n", "- [Anaconda](http://continuum.io/downloads.html)\n", " \n", " \n", "###Mac or Windows\n", "\n", "1. Download and install Anaconda or the free edition of the Enthought Python Distribution (EPD).\n", "\n", "2. Update IPython to the current version:\n", "On a Mac, using the Terminal application:\n", "\n", "###Anaconda:\n", "\n", "conda update conda\n", "conda update ipython\n", "\n", "\n", "###EPD:\n", "\n", "sudo enpkg enstaller\n", "sudo enpkg ipython\n", "On Windows, at the Command Prompt (cmd.exe application):\n", "\n", "###Anaconda:\n", "\n", "conda update conda\n", "conda update ipython\n", "\n", "\n", "###EPD:\n", "\n", "enpkg enstaller\n", "enpkg ipython\n", "\n", "\n", "###Linux\n", "\n", "On Linux, most distributions have everything you need in their package managers.\n", "\n", "Install IPython and its dependencies:\n", "On Ubuntu or other Debian-based distributions, type at the shell:\n", "\n", "sudo apt-get install ipython-notebook\n", "On Fedora 18 and newer related distributions, use:\n", "\n", "sudo yum install python-ipython-notebook\n", "Optionally install additional tools for scientific computing:\n", "On Ubuntu or other Debian-based distributions, type at the shell:\n", "\n", "sudo apt-get install python-matplotlib python-scipy \\\n", " python-pandas python-sympy python-nose\n", "On Fedora 18 and newer related distributions, use:\n", "\n", "sudo yum install python-matplotlib scipy python-pandas sympy python-nose\n", "\n", "## Invoke from command line via\n", "\n", "Start the server with plotting functionality.\n", "\n", " ipython notebook --pylab=inline\n", "\n", "For in depth tutorial, see https://us.pycon.org/2012/schedule/presentation/121/\n", " \n", "For a list of keyboard shortcuts:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Stack Exchange Data Explorer 2.0 (R, Pandas)\n", "\n", "http://blog.stackoverflow.com/category/cc-wiki-dump" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Press CTRL-m h" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Execute code." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# CTRL-ENTER to execute code in current block\n", "print \"Hello World\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Hello World\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "# SHIFT-ENTER to execute the current code & jump to next block\n", "[x + 1 for x in xrange(10)]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 2, "text": [ "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For help." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# CTRL-m-h help menu popup\n", "# Built in tab completion" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "# Type enumerate to see a tooltip\n", "enumerate?" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use shell command magic with TAB completion." ] }, { "cell_type": "code", "collapsed": false, "input": [ "ls " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "051 Analyze network relationships with NetworkX.ipynb\r\n", "Data Analysis 101.ipynb\r\n", "\u001b[34mDesktop\u001b[m\u001b[m/\r\n", "\u001b[34mDocuments\u001b[m\u001b[m/\r\n", "\u001b[34mDownloads\u001b[m\u001b[m/\r\n", "\u001b[34mDropbox\u001b[m\u001b[m/\r\n", "\u001b[34mEnvs\u001b[m\u001b[m/\r\n", "IPython Intro.ipynb\r\n", "\u001b[34mLibrary\u001b[m\u001b[m/\r\n", "\u001b[34mMovies\u001b[m\u001b[m/\r\n", "\u001b[34mMusic\u001b[m\u001b[m/\r\n", "NetworkX Use Case.ipynb\r\n", "NumPy, SciPy, Pandas Use Cases.ipynb\r\n", "Pandas ETL.ipynb\r\n", "\u001b[34mPictures\u001b[m\u001b[m/\r\n", "\u001b[34mPublic\u001b[m\u001b[m/\r\n", "Time Series analysis.ipynb\r\n", "scikit-learn Use Case.ipynb\r\n", "\u001b[34mspringsource\u001b[m\u001b[m/\r\n", "weka.log\r\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "files = !ls # Store shell output in a variable" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "# type cd ~/Doc\n", "cd /Users/" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Copy and paste code and IPython \n", "\n", " >>> def add(x, y):\n", " ... return x + y\n", " >>> add(1, 2)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Copy/Paste code here and press CTRL-ENTER\n", " >>> def add(x, y):\n", " ... return x + y\n", " >>> add(1, 2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 4, "text": [ "3" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Examine variables in your session namespace." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Press SHIFT-ENTER\n", "x = 1" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "whos" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Variable Type Data/Info\n", "----------------------------\n", "x int 9\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compare execution speed." ] }, { "cell_type": "code", "collapsed": false, "input": [ "timeit 100 ** 100" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10000000 loops, best of 3: 21 ns per loop\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "timeit pow(100, 100)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000000 loops, best of 3: 1.83 us per loop\n" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "plot(rand(100))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 7, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mathematical expressions in LaTeX [MathJax]:\n", "\n", "$\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)$\n", "\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "## Youtube Example" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.lib.display import YouTubeVideo\n", "YouTubeVideo('iwVvqwLDsJo')" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " " ], "output_type": "pyout", "prompt_number": 28, "text": [ "" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [Browse other cool IPython notebooks](https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks)" ] } ], "metadata": {} } ] }