{ "metadata": { "name": "", "signature": "sha256:7a2e72e28d410a6c0411432c917e21cbf8ddb67b8bb90a602542188d5c877156" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Common data formats:\n", "\n", "* JSON\n", "* csv\n", "* matlab\n", "* excel spreadsheets\n", "* binary formats\n", "* XML\n", "* HDF\n", "* SQL" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "http://stats.stackexchange.com/questions/27237/what-are-the-most-useful-sources-of-economics-data\n", "\n", "Will use here:\n", "\n", "https://research.stlouisfed.org/fred2/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#JSON (Javascript object notation)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://www.json.org/\n", "\n", "* easy for humans to read and write\n", "* easy for machines to parse and generate\n", "\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Using FRED requires a personal key\n", "# To avoid exposing my key, I have it in a separate file\n", "from keys import fred_key" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "series_id = 'GNPCA'\n", "request_url = 'http://api.stlouisfed.org/fred/series?series_id=' + series_id + '&api_key=' + fred_key + '&file_type=json'\n", "\n", "import urllib2\n", "f = urllib2.urlopen(request_url)\n", "data = f.read()\n", "data" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 53, "text": [ "'{\"realtime_start\":\"2016-04-07\",\"realtime_end\":\"2016-04-07\",\"seriess\":[{\"id\":\"GNPCA\",\"realtime_start\":\"2016-04-07\",\"realtime_end\":\"2016-04-07\",\"title\":\"Real Gross National Product\",\"observation_start\":\"1929-01-01\",\"observation_end\":\"2015-01-01\",\"frequency\":\"Annual\",\"frequency_short\":\"A\",\"units\":\"Billions of Chained 2009 Dollars\",\"units_short\":\"Bil. of Chn. 2009 $\",\"seasonal_adjustment\":\"Not Seasonally Adjusted\",\"seasonal_adjustment_short\":\"NSA\",\"last_updated\":\"2016-03-25 07:56:03-05\",\"popularity\":35,\"notes\":\"BEA Account Code: A001RX1\"}]}'" ] } ], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "import json\n", "json_data = json.loads(data)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [ "type(json_data)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 55, "text": [ "dict" ] } ], "prompt_number": 55 }, { "cell_type": "code", "collapsed": false, "input": [ "json_data.keys()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 56, "text": [ "[u'seriess', u'realtime_start', u'realtime_end']" ] } ], "prompt_number": 56 }, { "cell_type": "code", "collapsed": false, "input": [ "json_data[u'realtime_start'], json_data[u'realtime_end']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 57, "text": [ "(u'2016-04-07', u'2016-04-07')" ] } ], "prompt_number": 57 }, { "cell_type": "code", "collapsed": false, "input": [ "json_data[u'seriess']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 58, "text": [ "[{u'frequency': u'Annual',\n", " u'frequency_short': u'A',\n", " u'id': u'GNPCA',\n", " u'last_updated': u'2016-03-25 07:56:03-05',\n", " u'notes': u'BEA Account Code: A001RX1',\n", " u'observation_end': u'2015-01-01',\n", " u'observation_start': u'1929-01-01',\n", " u'popularity': 35,\n", " u'realtime_end': u'2016-04-07',\n", " u'realtime_start': u'2016-04-07',\n", " u'seasonal_adjustment': u'Not Seasonally Adjusted',\n", " u'seasonal_adjustment_short': u'NSA',\n", " u'title': u'Real Gross National Product',\n", " u'units': u'Billions of Chained 2009 Dollars',\n", " u'units_short': u'Bil. of Chn. 2009 $'}]" ] } ], "prompt_number": 58 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Other series:\n", "https://research.stlouisfed.org/fred2/tags/series \n", " \n", "\n", "API docs: \n", "https://research.stlouisfed.org/docs/api/fred/\n", "\n", "Now let's get some data:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "request_url = 'http://api.stlouisfed.org/fred/series/observations?series_id=' + series_id + '&api_key=' + fred_key + '&file_type=json'\n", "\n", "import urllib2\n", "f = urllib2.urlopen(request_url)\n", "data = f.read()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 59 }, { "cell_type": "code", "collapsed": false, "input": [ "json_data = json.loads(data)\n", "json_data.keys()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 60, "text": [ "[u'count',\n", " u'order_by',\n", " u'observation_start',\n", " u'file_type',\n", " u'observation_end',\n", " u'realtime_end',\n", " u'sort_order',\n", " u'limit',\n", " u'observations',\n", " u'offset',\n", " u'units',\n", " u'output_type',\n", " u'realtime_start']" ] } ], "prompt_number": 60 }, { "cell_type": "code", "collapsed": false, "input": [ "json_data[u'count'],json_data[u'order_by'], json_data[u'observation_start'], json_data[ u'file_type'], json_data[ u'observation_end']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 61, "text": [ "(87, u'observation_date', u'1776-07-04', u'json', u'9999-12-31')" ] } ], "prompt_number": 61 }, { "cell_type": "code", "collapsed": false, "input": [ "json_data[u'realtime_start'], json_data[u'realtime_end'], json_data[u'sort_order'], json_data[u'limit'], json_data[u'offset']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 62, "text": [ "(u'2016-04-07', u'2016-04-07', u'asc', 100000, 0)" ] } ], "prompt_number": 62 }, { "cell_type": "code", "collapsed": false, "input": [ "json_data[u'output_type'], json_data[u'units']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 63, "text": [ "(1, u'lin')" ] } ], "prompt_number": 63 }, { "cell_type": "code", "collapsed": false, "input": [ "values = []\n", "\n", "for o in json_data['observations']:\n", " values.append(float(o['value']))\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 64 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Should use something like the pandas module to ensure the data is consistent (e.g. the time series is equally spaced, ordered and there are no mising time values)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot(values)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 65, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 65 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('../shared/gnpca.txt', 'w')\n", "\n", "for v in values:\n", " f.write(str(v) + '\\n')\n", " \n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 66 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Other sets:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "series_id = 'UNRATE'\n", "\n", "request_url = 'http://api.stlouisfed.org/fred/series/observations?series_id=' + series_id + '&api_key=' + fred_key + '&file_type=json'\n", "\n", "f = urllib2.urlopen(request_url)\n", "data = f.read()\n", "json_data = json.loads(data)\n", "\n", "values = []\n", "for o in json_data['observations']:\n", " values.append(float(o['value']))\n", " \n", "plot(values)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 67, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 67 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('../shared/unrate.txt', 'w')\n", "\n", "for v in values:\n", " f.write(str(v) + '\\n')\n", " \n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 68 }, { "cell_type": "code", "collapsed": false, "input": [ "series_id = 'GS10'\n", "\n", "request_url = 'http://api.stlouisfed.org/fred/series/observations?series_id=' + series_id + '&api_key=' + fred_key + '&file_type=json'\n", "\n", "f = urllib2.urlopen(request_url)\n", "data = f.read()\n", "json_data = json.loads(data)\n", "\n", "values = []\n", "for o in json_data['observations']:\n", " values.append(float(o['value']))\n", " \n", "plot(values)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 69, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 69 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open('../shared/gs10.txt', 'w')\n", "\n", "for v in values:\n", " f.write(str(v) + '\\n')\n", " \n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 70 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#CSV (Comma Separated Values)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "request_url = 'http://ichart.finance.yahoo.com/table.csv?s=^GSPC&ignore=.csv'\n", "\n", "f = urllib2.urlopen(request_url)\n", "data = f.read()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "import csv\n", "parsed_csv = csv.reader(data.split('\\n'))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "type(parsed_csv)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "_csv.reader" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "parsed_csv.next()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "parsed_csv.next()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "['2016-04-06',\n", " '2045.560059',\n", " '2067.330078',\n", " '2043.089966',\n", " '2066.659912',\n", " '3750800000',\n", " '2066.659912']" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "parsed_csv.next()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "['2016-04-05',\n", " '2062.50',\n", " '2062.50',\n", " '2042.560059',\n", " '2045.170044',\n", " '4154920000',\n", " '2045.170044']" ] } ], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "highs = []\n", "for row in parsed_csv:\n", " if len(row) > 0:\n", " highs.append(float(row[2]))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(highs)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://finance.yahoo.com/echarts?s=^GSPC+Interactive#{%22range%22:%22max%22,%22allowChartStacking%22:true}\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot(highs[::-1])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#MATLAB matrix format" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A long list of datasets:\n", "http://www.models.life.ku.dk/datasets" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urllib\n", "urllib.urlretrieve('http://www.eigenvector.com/data/Corn/corn.mat', 'corn.mat')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "('corn.mat', )" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://www.eigenvector.com/data/Corn/index.html" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.io import loadmat\n", "corn = loadmat('corn.mat')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "type(corn)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "dict" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "corn.keys()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 33, "text": [ "['mp6nbs',\n", " 'information',\n", " 'propvals',\n", " '__globals__',\n", " 'm5nbs',\n", " 'mp6spec',\n", " 'm5spec',\n", " 'mp5spec',\n", " '__header__',\n", " '__version__',\n", " 'mp5nbs']" ] } ], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "corn['mp6spec'][0][0][7]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "array([[-0.0227014, -0.0228025, -0.0228795, ..., 0.675079 , 0.674679 ,\n", " 0.674056 ],\n", " [-0.0219211, -0.0220554, -0.0221607, ..., 0.682942 , 0.682648 ,\n", " 0.682164 ],\n", " [-0.0208596, -0.0209931, -0.0211072, ..., 0.652276 , 0.651984 ,\n", " 0.651517 ],\n", " ..., \n", " [-0.0178645, -0.0179813, -0.0180715, ..., 0.695484 , 0.695075 ,\n", " 0.694381 ],\n", " [-0.0067957, -0.0068881, -0.0069559, ..., 0.690173 , 0.689855 ,\n", " 0.689125 ],\n", " [-0.0152611, -0.0153799, -0.0154608, ..., 0.703188 , 0.70277 ,\n", " 0.702071 ]])" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(corn['mp6spec'][0][0][7][0,:])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 35, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nPr3epAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#Excel sheets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Various ways to open excel sheets in python:\n", " \n", "http://stackoverflow.com/questions/3239207/how-can-i-open-an-excel-file-in-python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#Binary formats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Data can be encoded \"raw\" in a file. i.e. the file just contains bytes that are copied directly into memory. The user must know the format and data type of the data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "fib = [1,1,2,3,5,8,13]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "import struct\n", "enc = struct.pack('i', 10)\n", "enc" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 37, "text": [ "'\\n\\x00\\x00\\x00'" ] } ], "prompt_number": 37 }, { "cell_type": "code", "collapsed": false, "input": [ "hex(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ "'0xa'" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "chr(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 39, "text": [ "'\\n'" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "len(enc)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 40, "text": [ "4" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "ord('\\n'), ord('a')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 41, "text": [ "(10, 97)" ] } ], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "'i'*len(fib)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "'iiiiiii'" ] } ], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "bytes = struct.pack('i'*len(fib), *fib)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "bytes" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "'\\x01\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x08\\x00\\x00\\x00\\r\\x00\\x00\\x00'" ] } ], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [ "fib = struct.unpack('iiiiiii', bytes)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 45 }, { "cell_type": "code", "collapsed": false, "input": [ "fib" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 46, "text": [ "(1, 1, 2, 3, 5, 8, 13)" ] } ], "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [ "fib_f = struct.unpack('fffffff', bytes)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 47 }, { "cell_type": "code", "collapsed": false, "input": [ "fib_f" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 48, "text": [ "(1.401298464324817e-45,\n", " 1.401298464324817e-45,\n", " 2.802596928649634e-45,\n", " 4.203895392974451e-45,\n", " 7.006492321624085e-45,\n", " 1.1210387714598537e-44,\n", " 1.8216880036222622e-44)" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "bytes = struct.pack('f'*len(fib), *fib)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 49 }, { "cell_type": "code", "collapsed": false, "input": [ "bytes" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 50, "text": [ "'\\x00\\x00\\x80?\\x00\\x00\\x80?\\x00\\x00\\x00@\\x00\\x00@@\\x00\\x00\\xa0@\\x00\\x00\\x00A\\x00\\x00PA'" ] } ], "prompt_number": 50 }, { "cell_type": "code", "collapsed": false, "input": [ "fib_f = struct.unpack('fffffff', bytes)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 51 }, { "cell_type": "code", "collapsed": false, "input": [ "fib_f" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 52, "text": [ "(1.0, 1.0, 2.0, 3.0, 5.0, 8.0, 13.0)" ] } ], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#XML" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Earthquake XML.ipynb](Earthquake XML.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#HDF (Hierarchical Data Format)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "https://www.hdfgroup.org/\n", "\n", "Common format for \"big data\". Specifically designed for large multi-dimensional data sets.\n", "\n", "https://www.hdfgroup.org/tools/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#SQL (Structured Query Language)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Several options depending on need:\n", "\n", "https://docs.python.org/2/library/sqlite3.html\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By: Andr\u00e9s Cabrera mantaraya36@gmail.com\n", "\n", "For Course MAT 240F at UCSB\n", "\n", "This ipython notebook is licensed under the CC-BY-NC-SA license: http://creativecommons.org/licenses/by-nc-sa/4.0/\n", "\n", "![http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png](http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png)" ] } ], "metadata": {} } ] }