{ "metadata": { "name": "", "signature": "sha256:46f5e92027cfe863797014b98ff0fa408d86ba40f056c093fd6dfc66c5f73e1e" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#Pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use the display function to render the html." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.core.display import HTML\n", "HTML(\"\")" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "" ], "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas has its own representation to have this appearance in the iPython Notebook." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "import pandas.io.data\n", "import datetime\n", "\n", "aapl = pd.io.data.get_data_yahoo('AAPL', \n", " start=datetime.datetime(2006, 10, 1), \n", " end=datetime.datetime(2015, 1, 4))\n", "aapl.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
OpenHighLowCloseVolumeAdj Close
Date
2006-10-02 75.10 75.87 74.30 74.86 178159800 10.09
2006-10-03 74.45 74.95 73.19 74.08 197677200 9.98
2006-10-04 74.10 75.46 73.16 75.38 207270700 10.16
2006-10-05 74.53 76.16 74.13 74.83 170970800 10.08
2006-10-06 74.42 75.04 73.81 74.22 116739700 10.00
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ " Open High Low Close Volume Adj Close\n", "Date \n", "2006-10-02 75.10 75.87 74.30 74.86 178159800 10.09\n", "2006-10-03 74.45 74.95 73.19 74.08 197677200 9.98\n", "2006-10-04 74.10 75.46 73.16 75.38 207270700 10.16\n", "2006-10-05 74.53 76.16 74.13 74.83 170970800 10.08\n", "2006-10-06 74.42 75.04 73.81 74.22 116739700 10.00" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data can be save into a CSV file." ] }, { "cell_type": "code", "collapsed": false, "input": [ "aapl.to_csv('aapl_ohlc.csv')\n", "%ls" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "00_Basics.ipynb\r\n", "01_numpy.ipynb\r\n", "02_Pandas.ipynb\r\n", "02_audio.ipynb\r\n", "03_R.ipynb\r\n", "04_Cython.ipynb\r\n", "DataLab_final_logo__ColourURL_--UPDATED.png\r\n", "aapl_ohlc.csv\r\n", "deepscore_cnn.py\r\n", "\u001b[34mdeepscore_simple_1\u001b[m\u001b[m/\r\n", "mnist.pkl.gz\r\n", "mnist.py\r\n", "mnist.pyc\r\n", "mnist_conv.py\r\n", "png2pickle.ipynb\r\n", "title.ipynb\r\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets read it back!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "df = pd.read_csv('aapl_ohlc.csv', index_col='Date', parse_dates=True)\n", "df.tail()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
OpenHighLowCloseVolumeAdj Close
Date
2014-12-26 112.10 114.52 112.01 113.99 33721000 113.54
2014-12-29 113.79 114.77 113.70 113.91 27598900 113.46
2014-12-30 113.64 113.92 112.11 112.52 29881500 112.08
2014-12-31 112.82 113.13 110.21 110.38 41403400 109.95
2015-01-02 111.39 111.44 107.35 109.33 53204600 108.90
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ " Open High Low Close Volume Adj Close\n", "Date \n", "2014-12-26 112.10 114.52 112.01 113.99 33721000 113.54\n", "2014-12-29 113.79 114.77 113.70 113.91 27598900 113.46\n", "2014-12-30 113.64 113.92 112.11 112.52 29881500 112.08\n", "2014-12-31 112.82 113.13 110.21 110.38 41403400 109.95\n", "2015-01-02 111.39 111.44 107.35 109.33 53204600 108.90" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "df.index" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "\n", "[2006-10-02, ..., 2015-01-02]\n", "Length: 2078, Freq: None, Timezone: None" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "df['diff'] = df.Open - df.Close\n", "df.head()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
OpenHighLowCloseVolumeAdj Closediff
Date
2006-10-02 75.10 75.87 74.30 74.86 178159800 10.09 0.24
2006-10-03 74.45 74.95 73.19 74.08 197677200 9.98 0.37
2006-10-04 74.10 75.46 73.16 75.38 207270700 10.16-1.28
2006-10-05 74.53 76.16 74.13 74.83 170970800 10.08-0.30
2006-10-06 74.42 75.04 73.81 74.22 116739700 10.00 0.20
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ " Open High Low Close Volume Adj Close diff\n", "Date \n", "2006-10-02 75.10 75.87 74.30 74.86 178159800 10.09 0.24\n", "2006-10-03 74.45 74.95 73.19 74.08 197677200 9.98 0.37\n", "2006-10-04 74.10 75.46 73.16 75.38 207270700 10.16 -1.28\n", "2006-10-05 74.53 76.16 74.13 74.83 170970800 10.08 -0.30\n", "2006-10-06 74.42 75.04 73.81 74.22 116739700 10.00 0.20" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Interactive\n", "We can have some interacitve elements in the notebook." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def show_col(dataframe, name):\n", " ts = dataframe[name][-10:]\n", " print ts" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.html.widgets import interact, fixed" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "interact(show_col, dataframe=fixed(df), name=list(df.columns.values))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Date\n", "2014-12-18 111.87\n", "2014-12-19 112.26\n", "2014-12-22 112.16\n", "2014-12-23 113.23\n", "2014-12-24 112.58\n", "2014-12-26 112.10\n", "2014-12-29 113.79\n", "2014-12-30 113.64\n", "2014-12-31 112.82\n", "2015-01-02 111.39\n", "Name: Open, dtype: float64\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#Plot" ] }, { "cell_type": "code", "collapsed": false, "input": [ "close_px = df['Adj Close']\n", "mavg = pd.rolling_mean(close_px, 40)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "close_px.plot(label='AAPL')\n", "mavg.plot(label='mavg')\n", "plt.legend(loc=4)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 35, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }