{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Data Analysis Tools: Python and Jupyter\n", "\n", "This is a **[Jupyter Notebook](http://jupyter.org/)**, a browser-based interface that works with [a vide variety of programming languages](https://github.com/jupyter/jupyter/wiki/Jupyter-kernels). It's great for playing around with data, taking notes and making plots. If used properly, the notebook can be included directly as [a supplement to your manuscript](https://losc.ligo.org/s/events/GW150914/LOSC_Event_tutorial_GW150914.html), making all your data processing transparrent and reproducible!\n", "\n", "Jupyter allows you to keep all your notes, code and plots in one place. The workspace is divided into 'cells', which can be either 'Markdown' (like this one, for taking notes) or 'Code'.\n", "\n", "## The main idea:\n", "\n", "![Not Like this!](./not_like_this.png)\n", "\n", "## For Example, in Python:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# first, import a few useful packages\n", "import numpy as np # the 'numerical python' package\n", "import pandas as pd # a 'spreadsheet' type library for data handling\n", "\n", "import matplotlib.pyplot as plt # for plotting\n", "\n", "# tell plots to display inline\n", "%matplotlib inline\n", "\n", "plt.rcParams['figure.dpi'] = 100 # make the displayed figures slightly bigger." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Read in some data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.read_excel('data.xls')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAFvCAYAAAC/9krTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3X24nGV96Pvvj5iACawFZIWwqSKhidgirSkCIr0iLzto\nq7bqqS+x+6LQuFssgkWoR05ftNR9sBaQnpDqsUYK1h29dmX7sjnuIG0wlQaCvIlVIWlCEJGwksBa\nJIEEw33+mBl81mRm1syseXmeWd/Pdc21sp7nnln38yQr85v7/v3uO1JKSJIkFdVB/e6AJEnSVBjM\nSJKkQjOYkSRJhWYwI0mSCs1gRpIkFZrBjCRJKjSDGUmSVGgGM5IkqdAMZiRJUqEZzEiSpEIzmJEk\nSYX2kn53YNBERADHAM/0uy+SJBXQYcDjqYXNIw1mOu8Y4LF+d0KSpAJ7GfCTZhsbzHTeMwA//vGP\nGRoa6ndfJEkqjPHxcV7+8pdDi7MbBjNdMjQ0ZDAjSVIPmAAsSZIKzWBGkiQVmsGMJEkqNIMZSZJU\naAYzkiSp0AxmJElSoVmaLUmSWrZ5dBdbd+7huLlzWDAyp699MZiRJElNe3rPPi5ZfT/rNo6+eGzJ\nonmsWLaY4dkz+9Inp5kkSVLTLll9P3ds2j7h2B2btnPx6vv61KOCBjMR8ZGISBFxXebYIRGxMiJ2\nRMSuiPhKRMyvet6xEXFLROyJiCcj4m8i4iVVbc6MiHsjYm9EbIqI83t0WZIk5drm0V2s2zjK/qo9\nIPenxLqNo2zZvrsv/SpcMBMRpwB/CHyv6tSngLcC7wTeQGnDx5szz5sB3ALMAl4P/B5wPnBlps2C\ncpu1wGuA64DPRcQbu3M1kiQVx9adexqef2SHwcykIuJQ4IvAfwWeyhwfBpYDH0op/UtK6R7gAuD1\nEfG6crNzgV8G/ktK6f6U0jeBPwcuiohZ5TYXAltSSpellH6YUroe+Cfg0l5cnyRJefaKI2c3PH/c\n3P4kAhcqmAFWAreklG6rOn4yMBN48XhK6UfAo8Dp5UOnAw+mlLZlnrcGGAJOzLSpfu01mdc4QEQc\nHBFDlQdwWGuXJElSMRw/71CWLJrHjIgJx2dEsGTRvL5VNRUmmImI9wC/BlxR4/TRwL6U0tNVx7eV\nz1XabKtxnibaDEXES+t07QpgLPN4rMFlSJJUaCuWLeaMhSMTjp2xcIQVyxb3qUcFKc2OiJcDfwss\nTSk91+/+VLkKuDbz/WEY0EiSBtTw7JnctPxUtmzfzSM7drvOTAtOBo4C7o2fD23NAJZExAeANwKz\nIuLwqtGZ+cAT5T8/AZxa9brzM+cqX+fXaDOeUnq2VsdSSnuBvZXvo2roTZKkQbRgpP9BTEVRppn+\nGTiJUoVR5fFdSsnAlT8/D5xTeUJEnAAcC6wvH1oPnBQRR2VedykwDvwg0+YcJlqaeQ1JkpQzhRiZ\nSSk9A3w/eywidgM7UkrfL3+/Crg2InZSClBWAOtTSneWn3IrpaDlCxHxYUr5MR8HVpZHVwA+A3wg\nIj4JfB44G3gX8OZuXp8kSWpfIYKZJl0KvAB8BTiYUhXSH1VOppT2R8RbgE9TGmnZDdwI/EWmzZaI\neDOlNWs+SCn35X0ppTW9ughJktSaSFWr+GlqyuXZY2NjYwwNDfW7O5IkFcb4+DjDw8MAwyml8Waf\nV5ScGUmSpJoMZiRJUqEZzEiSpEIzmJEkSYVmMCNJkgrNYEaSJBXaIK0zI0nSQNk8uoutO/fkYv+j\nPDOYkSQpZ57es49LVt/Puo2jLx5bsmgeK5YtZnj2zD72LJ+cZpIkKWcuWX0/d2zaPuHYHZu2c/Hq\n+/rUo3wzmJEkKUc2j+5i3cZR9let0L8/JdZtHGXL9t196ll+GcxIkpQjW3fuaXj+kR0GM9XMmZEk\nKUdeceTshuePm9ufROA8JyMbzEiSlCPHzzuUJYvmccem7ROmmmZEcMbCkZ4HEkVIRnaaSZKknFmx\nbDFnLByZcOyMhSOsWLa4530pQjKyIzOSJOXM8OyZ3LT8VLZs380jO3b3bWqnkoxcLZuMnIcpJ4MZ\nSZJyasFIf/NTmklGzkMw4zSTJEmqKa/JyNUMZiRJKpDNo7tY+9CTPVlvppKMPCNiwvEZESxZNC8X\nozLgNJMkSYXQr6qiFcsWc/Hq+yb83H4lI9cTqWqFQU1NRAwBY2NjYwwNDfW7O5KkAXHeqg11y7Vv\nWn5q139+L5KRx8fHGR4eBhhOKY03+zxHZiRJyrk8VBX1Oxm5EXNmJEnKObc4aMxgRpKknCtKVVG/\nGMxIkpRzva4q6mXFVCeYMyNJUgH0oqqoCPsw1WI1U4dZzSRJ6qbqqqJO7mbd74opq5kkSZoGKlVF\nT+/Zx3mrNnRsFCUPFVPtMmdGkqQC6vRu1kWumDKYkSSpYCqjKPurUkWyoyitKnLFlMGMJEkF041R\nlKLsw1SLwYwkSQUz2SjKtrHn2hqdWbFsMWcsHJlwLG/7MNViNVOHWc0kSeqFWpVH1dpNCO7FPky1\ntFvN5MiMJEkFVGsUpVqzCcHVi+QtGJnDWSccleuppSxLsyVJKqDh2TO5afmpbNm+mzs37+CKmx88\noM1kZdVFXSSvmiMzkiQV2IKRORw9fEjDNvUSgjtd3t0vhQhmIuL9EfG9iBgvP9ZHxG9kzh8SESsj\nYkdE7IqIr0TE/KrXODYibomIPRHxZET8TUS8pKrNmRFxb0TsjYhNEXF+jy5RkqS2tVNW3Y3y7n4p\nRDADPAZ8BDgZeC3wL8DXIuLE8vlPAW8F3gm8ATgGuLny5IiYAdwCzAJeD/wecD5wZabNgnKbtcBr\ngOuAz0XEG7t4XZIkTVk7ZdVFXiSvWiGCmZTSN1JK/19KaWNK6eGU0p8Cu4DXRcQwsBz4UErpX1JK\n9wAXAK+PiNeVX+Jc4JeB/5JSuj+l9E3gz4GLImJWuc2FwJaU0mUppR+mlK4H/gm4tIeXKklSW1ot\nqy7yInnVCpcAXB5leScwB1hPabRmJnBbpU1K6UcR8ShwOnBn+euDKaVtmZdaA3waOBG4r9zmNiZa\nQ2mEplF/DgYOzhw6rPWrkiRparIJwc2UVVdGc+ptLFmUSiYoyMgMQEScFBG7gL3AZ4C3p5R+ABwN\n7EspPV31lG3lc5S/bqtxnibaDEXESxt07QpgLPN4rLkrkiSp82qVVVeXXlcUdZG8akUamXmIUi7L\nMPA7wI0R8Yb+dgmAq4BrM98fhgGNJCkHJiu9bnU0J68KE8yklPYBm8rf3hMRpwAfBL4MzIqIw6tG\nZ+YDT5T//ARwatVLzs+cq3ydX6PNeErp2Qb92ktptAiAqEq+kiSpX+qVXi+/8W4uOnvhi8FL5VFU\nhZlmquEgSrkq9wDPA+dUTkTECcCxlHJqKH89KSKOyjx/KTAO/CDT5hwmWpp5DUmSuqredFC7r1Wv\n9Pq7W5/ighvu5qyrb+e8VRsY2/P8lH9ePxViZCYirgK+CTxKaRrnvcCZwBtTSmMRsQq4NiJ2UgpQ\nVgDrU0p3ll/iVkpByxci4sOU8mM+Dqwsj6xAKQ/nAxHxSeDzwNnAu4A39+ASJUnTWDdW4p2s9Lqi\nskjeTcurJzCKoygjM0cBN1HKm/ln4BRKgcy3yucvBf4X8BVgHaUpo3dUnpxS2g+8BdhPaaTlH8uv\n9xeZNlsoBS5LgQeAy4D3pZTWdPPCJEnqxkq8k5VeVxRxkbxqhRiZSSktn+T8c8BF5Ue9NluB35zk\ndW4HipXCLUkqtMp0ULXJ9lWaTL3S63oe2dHez8mDoozMSJI0kLq5Em8zO2tXFGmRvGqFGJmRJGlQ\ndXMl3urS679bu4l7tz5d+EXyqjkyI0lSn2we3cXWnXs45bgjWtpXqVWVhfQ+d94pA7FIXrVITcyj\nqXkRMQSMjY2NMTQ01O/uSJJyqFb10hGzZ/JUpkR6qtVMjeR1kbzx8XGGh4cBhlNK480+z2kmSZJ6\nrFb10vizP+OUVxzBH2UWs+uWoi+SV81gRpKkHmpUvXT31qdyN1pSBObMSJLUQ92sXpquDGYkSeqh\nblYvTVcGM5Ik9VBlMbtuVi9NNwYzkiT1WK3F7AahRLpfTACWJKlHKuvKHDd3zoTF7Ez6nRqDGUmS\nuqzRrtgGMVPnNJMkSV3WjV2x9XMGM5IkdVFlXZnqnauzu2JragxmJEnqIteV6T6DGUmSush1ZbrP\nYEaSpC5yXZnuM5iRJKnLXFemuyJVJSRpaiJiCBgbGxtjaGio392RJOWI68o0Nj4+zvDwMMBwSmm8\n2ee5zowkST2yYMQgphucZpIkSYVmMCNJkgrNYEaSJBWawYwkSSo0gxlJklRoBjOSJKnQDGYkSVKh\nGcxIkqRCM5iRJEmFZjAjSZIKzWBGkiQVmsGMJEkqNIMZSZJUaAYzkiSp0AoRzETEFRFxd0Q8ExFP\nRsRXI+KEqjaHRMTKiNgREbsi4isRMb+qzbERcUtE7Cm/zt9ExEuq2pwZEfdGxN6I2BQR5/fgEiVJ\nUpsKEcwAbwBWAq8DlgIzgVsjYk6mzaeAtwLvLLc/Bri5cjIiZgC3ALOA1wO/B5wPXJlps6DcZi3w\nGuA64HMR8cYuXZckSZqiSCn1uw8ti4h5wJPAG1JK6yJiGBgF3ptS+qdym1cBPwROTyndGRG/Afwv\n4JiU0rZymwuBvwbmpZT2RcRfA29OKb0687O+BByeUnpTk30bAsbGxsYYGhrq2DVLkjToxsfHGR4e\nBhhOKY03+7yijMxUGy5/3Vn+ejKl0ZrbKg1SSj8CHgVOLx86HXiwEsiUrQGGgBMzbW5jojWZ1zhA\nRBwcEUOVB3BY65cjSZLaVbhgJiIOojT9c0dK6fvlw0cD+1JKT1c131Y+V2mzrcZ5mmgzFBEvrdOl\nK4CxzOOxJi9FkiR1QOGCGUq5M68G3tPvjpRdRWmkqPJ4WX+7I0nS9PKSyZvkR0RcD7wFWJJSyo6A\nPAHMiojDq0Zn5pfPVdqcWvWS8zPnKl/n12gznlJ6tlafUkp7gb2ZPjZ5NZIkqRMKMTITJdcDbwfO\nTiltqWpyD/A8cE7mOScAxwLry4fWAydFxFGZ5y0FxoEfZNqcw0RLM68hSZJypigjMyuB9wK/DTwT\nEZUcl7GU0rMppbGIWAVcGxE7KQUoK4D1KaU7y21vpRS0fCEiPkwpP+bjwMry6ArAZ4APRMQngc8D\nZwPvAt7c/UuUJEntKMTIDPB+SvkotwM/zTzenWlzKaXS668A6yhNGb2jcjKltJ/SFNV+SiMt/wjc\nBPxFps0WSoHLUuAB4DLgfSmlNd25LEmSNFWFXGcmz1xnRpKk9ky3dWYkSZKA4uTMSJIEwObRXWzd\nuYfj5s5hwcicyZ+ggWcwI0kqhKf37OOS1fezbuPoi8eWLJrHimWLGZ49s+7zDH4Gn8GMJKkQLll9\nP3ds2j7h2B2btnPx6vu4aXn1MmLtBz8qHnNmJEm5t3l0F+s2jrK/qmhlf0qs2zjKlu27D3hOo+BH\ng8WRGUlS7m3duafh+Ud27J4whVQJfqpVgp91D5cCo25OPTm91TsGM5Kk3HvFkbMbnj9u7sRgYbLg\n57zPb3jxz52aeqoEL0fOnsU1tz7s9FYPGcxIknLv+HmHsmTRPO7YtH3CVNOMCM5YOHLAyMdkwU9W\no7ybZtTKzen0z1Bj5sxIkgphxbLFnLFwZMKxMxaOcNm5r2TtQ09OyJupBD8zmtj8t1HeTTNq5eZ0\n+meoMUdmJEmFMDx7JjctP5Ut23fzyI7dL07n/PbKO15sk53OWbFsMRevvq/hiElWdd5NM+rl5nTy\nZ2hyBjOSpEJZMFJKqD1v1YaGpdrVwc+MiAm5MtWq826aMVluTid+hiZnMCNJKpzJqpW2bP/5CEgl\n+AFayrtpRrO5OVP5GZqcOTOSpMJpplS7lnp5NyuWLW6rH83m5kzlZ2hyjsxIkgqn1VLtiuqpp06s\nAVMrN2fJonlcfu4r2bFnn+vM9IDBjCSpcFot1a6WnXpqV3ZRvE4HSGqNwYwkqZBqjYj0Yjqn0Z5P\nBjH9EalqnwtNTUQMAWNjY2MMDQ31uzuSNPB6PSJSqaKqNSLkonhTMz4+zvDwMMBwSmm82ec5MiNJ\nKrROTBk1q5UqKvWO1UySpGlv8+iuA1YRrqXdKip1lyMzkqRpq1H+S61NIdutolJ3OTIjSZq2au2r\nVFlFuJZ668rMiGDJonlOMfWJIzOSpGmp1fyXSin25W98JUDPq6hUn8GMJGmgZNd/aTRS0kz+y4KR\nOXWnor5+0RkuipcTBjOSpIHQrfyXelNRgKXYOWHOjCRpIHQj/6UyFbW/ak227FSU+s9gRpJUeO0G\nHZNtPGkpdjE4zSRJKrxm81+q1dt4cvPoLu798VOT7oZtKXY+GMxIkgpvquu/VFYRfnrPPs5btWFC\n3s0Rs2cy/uzz7M8M+jS7oaV6w2kmSVLhdWr9l1p5N2N7nmfopRMTiC3FzhdHZiRJA2Gqu2jXW3fm\nBeCpPc/zheWn8rMXkqXYOWQwI0kaCPXyX5o1Wd7Nz15InHXCUVPtprrAYEaSNFDa3UXbfZeKy5wZ\nSZJw36UiM5iRJOXW5tFdrH3oyZ4tTjfZujPKp0hVCwxpaiJiCBgbGxtjaGio392RpEJqdWuCTms3\n70ZTMz4+zvDwMMBwSmm82ee1PDITEe+JiJe2+rypioglEfGNiHg8IlJEvK3qfETElRHx04h4NiJu\ni4hFVW2OjIgvRsR4RDwdEasi4tCqNr8SEf8aEc9FxI8j4sO9uD5J0s+1ujVBpy0YmcNZJxxlIFMQ\n7UwzXQj8NCL+MSJ+MyJmdLpTdcwBHgAuqnP+w8Al5f6dBuwG1kTEIZk2XwROBJYCbwGWAJ+tnCyP\nqtwKbAVOBv4E+FhE/EFHr0SSVJf7IalVLQczKaUzKQUE9wJ/SSmwWRkRr+9w36p/7jdTSn+WUvqf\n1eciIoA/Bj6eUvpaSul7wHnAMcDbym1+CXgT8L6U0l0ppe8AFwPviYhjyi/1u8As4PdTSv+eUvoS\n8P8AH6rXr4g4OCKGKg/gsI5dtCRNQ+6HpFa1lQCcUvpJSunalNIplAKEJcC/RsSWiPiL8pt6Ly0A\njgZuy/RxDLgLOL186HTg6ZTSdzPPu43SekinZdqsSynty7RZA5wQEUfU+dlXAGOZx2NTuxRJmt4s\nkVar2gpmImJWRLwtIr4MfAt4GPid8uN4SlM1vXR0+eu2quPbMueOBp7Mnkwp/QzYWdWm1mtkf0a1\nq4DhzONlrXRckjSRJdJqVTsJwDcAP6U0rXMb8Isppf8jpfQ/U0r3AMspTUNNCymlvSml8coDeKbf\n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\nkiSp0P5/UDClA6qkWPAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# this uses pandas' built in plotting functions, rather than matplotlib directly\n", "ax = df.plot(x='x', y='y', kind='scatter')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks like a periodic function with an underlying polynomial trend...\n", "\n", "### Fitting Data\n", "\n", "There are heaps of ways to fit models to data in Python. This examples uses the `scipy` (**Sci**entific **Py**thon) package, but other notable tools include:\n", "- `statsmodels` (general statistics)\n", "- `sklearn` (machine-learning)\n", "- `PyMC3` (**Py**thon **M**onte **C**arlo)\n", "- `ggplot2` (plotting and basic model fitting)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from scipy.optimize import curve_fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define a function that we want to fit:\n", "\n", "$ y = S sin(x) + p_0 + p_1 x + p_2 x^2$" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def fitfn(x, s, p0, p1, p2):\n", " return s * np.sin(x) + p0 + p1 * x + p2 * x**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fit the model!" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "p, cov = curve_fit(f=fitfn, xdata=df.x, ydata=df.y)\n", "# note: `curve_fit` returns both the parameters and the covariance matrix of the parameters.\n", "# I've assingned them separate variable names here by specifying two variables on the\n", "# left of the `=`: the parameters are called `p`, and the matrix is called `cov`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the results" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAFvCAYAAAC/9krTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xd4VFX+x/H3SUgCCSSUBBCR3gQBkaKAUsUCiq4dC4i4\nrq6CXVH3J64uoq66Kpa1sCoWbICCiiBIF6SJNKWYUESEJEBCCBCSnN8fdybOTHoyycyEz+t55pmZ\ne8+999zJEL455XuMtRYRERGRUBUW6AqIiIiIlIeCGREREQlpCmZEREQkpCmYERERkZCmYEZERERC\nmoIZERERCWkKZkRERCSkKZgRERGRkKZgRkREREKaghkREREJaQpmREREJKRVC3QFqhpjjAEaAYcC\nXRcREZEQVAv43ZZi8UgFM/7XCPgt0JUQEREJYY2B3SUtrGDG/w4B7Nq1i9jY2EDXRUREJGSkp6dz\nyimnQCl7NxTMVJDY2FgFMyIiIpVAA4BFREQkpCmYERERkZCmYEZERERCmoIZERERCWkKZkRERCSk\nKZgRERGRkKap2SIiIlJqickZ7NifSbN6MTSPjwloXRTMiIiISIkdzMxizJS1LNqanLetT+sEJg7r\nQlx0REDqpG4mEZETyK5du+jXrx/t27enU6dOfPrpp4GukoSYMVPWsnRbite2pdtSGD3lxwDVKESD\nGWPMWGOMNca84LGtujHmFWNMqjEmwxgz1RjTwOe4JsaYr4wxmcaYfcaYfxtjqvmU6WeMWWOMOWaM\n2WaMubGSbktEpMJVq1aNF154gU2bNjFnzhzuuusuDh8+HOhqSYhITM5g0dZkcnzWgMyxlkVbk0lK\nCcx3KeSCGWNMd+BvwDqfXf8BLgauBPriLPg4zeO4cOArIBLoBYwAbgQe9yjT3FVmPnA68ALwljHm\n/Iq5m6qvX79+3HXXXaU+LjU1lfr167N9+/YSlb/mmmt47rnnSn0dkRPNSSedxOmnnw5Aw4YNiY+P\nZ//+/QGulYSKHfszi9y/PVXBTLGMMTWBD4C/Agc8tscBo4B7rLXfWWtXAyOBXsaYs1zFzgPaA9db\na9daa2cB/wfcboyJdJW5FUiy1t5rrf3ZWvsy8Blwd2Xcn9tjjz2GMcbr0a5dO68yr7zyCs2aNaN6\n9eqceeaZrFixwmv/a6+9RqdOnfLWiOrZsyezZs0q9tq7d+/m+uuvp169etSoUYOOHTuyatWqMt/L\ntGnTeOKJJ0p93Pjx47nkkkto1qxZicr/4x//YPz48aSlpZX6WuVVks+6tD+Pp556CmNMsYFgWX/O\n/rZo0SIuvvhiGjVqhDGGzz//vMx1Le677evQoUPcddddNG3alBo1atCrVy9Wrlzpt3urCMHy8129\nejU5OTnuhf1EitW0bnSR+5vVC8xA4JAKZoBXgK+stXN9tncFIoC87dbaX4CdQE/Xpp7AemvtXo/j\nZgOxQAePMr7nnu1xjnyMMVHGmFj3A6hVulsqWIcOHdizZ0/eY8mSJXn7Pv74Y+655x7GjRvHmjVr\n6Ny5M+effz779u3LK9O4cWOeeuopVq9ezapVqxgwYACXXHIJGzduLPSaBw4coHfv3kRERDBr1iw2\nbdrEc889R506dcp8H3Xr1qVWrdJ9JJmZmUyaNIlRo0aV+JjTTjuNli1b8v7775fqWv369eOdd94p\n1TG+SvJZl+bnsXLlSl5//XU6derkl2sXxx+fweHDh+ncuTOvvPJKuepaku+2r5tvvplvv/2W9957\nj/Xr13Peeedx7rnnsnv37nLdU3HK+rlV9s+3MPv372f48OG88cYb5T6XnDhaJNSkT+sEwo3x2h5u\nDH1aJwRuVpO1NiQewDXAeqC66/0C4AXX62uBYwUcswJ42vX6DWC2z/5owAIXut5vAR7yKTPYVaZG\nIfV6zLXf65GWlmbLaty4cbZz586F7u/Ro4e9/fbb897n5OTYRo0a2QkTJhR53jp16ti33nqr0P0P\nPvigPfvss0td308//dSedtpptnr16rZu3bp24MCBNiMjw1prbd++fe2dd96ZV7Zv37529OjR9v77\n77d16tSxDRo0sOPGjct3voSEhLz3+/btsw0aNLDjx4/P27Z06VIbERFh586dm7ftn//8Z6nr37dv\nX/v222+X6piSKO6zLqzMoUOHbOvWre23336b77Pz57U9+fszAOz06dNLVNa3rqX9bmdmZtrw8HD7\n5Zdfem0/44wz7COPPFLgMSX9PhWnLJ9bRf98S3pvR48eteecc46dPHlyqa8vcvBwlr3hrR9s0we/\nzHvc8NYP9uDhrHKfOy0tzf3/aKwtRYwQEi0zxphTgBeB66y1RwNdHx8TgDiPR2N/nHTr1q00atSI\nFi1acN1117Fz504AsrKyWL16Neeee25e2bCwMM4991yWLVtW4LlycnL46KOPOHz4MD17FtrIxIwZ\n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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# let's see how well it's done\n", "ax = df.plot(x='x', y='y', kind='scatter') # make a scatter plot\n", "\n", "pred = fitfn(df.x, *p) # calculate the fitted model\n", "# note: using `*p` like this 'unpacks' the four values of P\n", "# to populate the four parameters that `fitfn` is expecting.\n", "\n", "ax.plot(df.x, pred, c='r') # plot the model fit.\n", "\n", "# an example of number formatting in text.\n", "plt.text(.03, .97, '{:.1f} sin(x) + {:.1f} + {:.1f} x + {:.1f} $x^2$'.format(*p),\n", " va='top', ha='left', transform=ax.transAxes) # write the fit equation on the plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Residuals" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "yr = df.y - pred # calculate the residuals\n", "\n", "# This example doens't use pandas built-in plotting functions.\n", "# We're using matplotlib directly here, as it offere more customisable plots.\n", "\n", "# create a figure with three axes\n", "fig, (fax, rax, hax) = plt.subplots(1, 3, figsize=[10,3])\n", "# note the syntax on the left of the `=` sign - multiple parameters\n", "# are assigned at once!\n", "\n", "# plot the data and the best fit line\n", "fax.scatter(df.x, df.y)\n", "fax.plot(df.x, pred, c='r')\n", "fax.set_ylabel('y')\n", "fax.set_xlabel('x')\n", "\n", "# plot the residuals\n", "rax.scatter(df.x, yr)\n", "rax.set_xlabel('x')\n", "\n", "# plot a histogram of the residuals\n", "hax.hist(yr, orientation='horizontal')\n", "hax.set_xlabel('n')\n", "\n", "# a loop! This cycles through the residual axes [rax, hax], and\n", "# adds a y label and a dashed line at zero.\n", "for ax in [rax, hax]:\n", " ax.axhline(0, c='k', ls='dashed') # dashed line at zero\n", " ax.set_ylabel('Residual ($y_{obs} - y_{pred}$)') # y label (note use of TeX syntax inside $ for subscripts)\n", "\n", " \n", "# calculate goodness of fit\n", "SStot = np.sum((df.y - df.y.mean())**2) # total sum of squares\n", "SSreg = np.sum(yr**2) # residual sum of squares\n", "R2 = 1 - (SSreg / SStot) # calculate R2\n", "\n", "# write R2 on plot\n", "fax.text(.02, .98, '$R^2$: {:.3f}'.format(R2), va='top', ha='left', transform=fax.transAxes)\n", "\n", "# shift around the axes so they look nice\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Want to try this at home?\n", "\n", "## Complete Beginner\n", "If you're completely new to Python, the easiest way in is to download and install a pre-packaged version that contains everything you need and will 'just work', like Continuum Analytics '[Anaconda](https://www.anaconda.com/download/)'. Download the Python 3.6 version from that link, and everything should work. It even comes with a nice [graphical interface](https://docs.anaconda.com/anaconda/navigator/) to start Jupyter and other Python apps, and manage which packages you have installed.\n", "\n", "### Getting started with Python\n", "Python is a famously simple programming language. It still has a learning curve, but it's easier than most. A good place to start is the [Code Academy](https://www.codecademy.com/learn/learn-python), which teaches you the very-basics of the language an syntax.\n", "\n", "### Getting starting with Jupyter\n", "I could waffle here, but [this](https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook##UseJupyter) is more useful.\n", "\n", "**Pro Tip:** There's a list of Keyboard Shortcuts in the Help menu at the top.\n", "\n", "### Windows Users\n", "Some people have been struggling to launch Jupyter from the 'Anaconda Navigator'. I'm not sure why this is ([possibly something to do with how windows handles web broswers](https://github.com/ContinuumIO/anaconda-issues/issues/1027)?), but a simple workaround:\n", "\n", " 1. Go to the start menu, and search for 'Anaconda Terminal'. Open it. This is different from a normal windows command prompt, because it starts within your Anaconda '[virtual environment](https://conda.io/docs/user-guide/tasks/manage-environments.html)'.\n", " 2. In the terminal that appears, navigate to the folder you want to work in (using `cd`), and type `jupyter notebook` to start Jupyter.\n", " 3. Leave this terminal window open in the background - this is where Jupyter is actually running, the browser is just an interface. Close it when you're done.\n", " 4. Reconsider your decision to use Windows. Anything that isn't 'point and click' is easier on Mac or Linux :D\n", "\n", "### Python Data Science Handbook\n", "[This book](http://nbviewer.jupyter.org/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/Index.ipynb) by [Jake Vanderplas](https://staff.washington.edu/jakevdp/) is excellent, and is *entirely* written in Jupyter Notebooks! Read on for lists of various useful packages." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Some useful packages\n", "Python is a 'modular' language - it's not like Matlab, which includes pretty much everything 'out of the box'. This is necessary because python is a general-purpose language, which can be used for anything from data analysis to [making toast](http://blog.clarifai.com/clarifai-featured-hack-make-the-perfect-toast-with-toastifai-an-ai-powered-toaster/#.WcnKPk1fjmE)(?!). If python came with everything it can do 'in the box', it would be unfeasibly massive.\n", "\n", "This means that most of your work in python will rely on packages, of which there are [at least 117,819](https://pypi.python.org/pypi?). The first step to doing anything in useful in Python is finding the best package for the job. Google and colleagues are good resources here!\n", "\n", "Some of the most useful packages that you might routinly use in data science are:\n", "\n", "#### General calculations\n", "- [numpy](http://www.numpy.org/) - efficient numeric operations and handling of multi-dimensional arrays.\n", "- [theano](http://deeplearning.net/software/theano/) - GPU accellerated multi-dimensional array operations.\n", "- [scipy](https://www.scipy.org/) - the **Sci**entific **Py**thon library. These guys make numpy and matplotlib, byt have an additional `scipy` library with all sorts of scientifically useful functions in.\n", "\n", "#### Data manipulation / import\n", "- [pandas](http://pandas.pydata.org/) - a 'Data Frame' library for dealing with tabular data. Including lots of useful data import/export functions and excel integration.\n", "- [pytables](http://www.pytables.org/) - a package for dealing with hierarchical datasets (based on the HDF5 data format).\n", "\n", "#### Plotting\n", "- [matplotlib](https://matplotlib.org/) - a plottling library originally based on Matlab's plotting functions. A good place to start. The [Matplotlib Gallery](https://matplotlib.org/gallery.html) contains a wide array of example plot types and the code to make them.\n", "- [Bokeh](https://bokeh.pydata.org/en/latest/) - a plottling library built around interactivity using the [D3.js](https://d3js.org/) library. Particularly good for making plots to display on websites.\n", "- [Plotly](https://plot.ly/) - another libary geared towards interactivity and sharing plots online. Some of their services require money, though...\n", "- [ggplot](http://ggplot.yhathq.com/) - A Python re-write of R's popular [ggplot2](http://ggplot2.org/) library. Lots of convenient plotting functions, which would be a good place to start if you're an R user.\n", "- and [many more](https://wiki.python.org/moin/NumericAndScientific/Plotting)\n", "\n", "#### Statistics / Analysis\n", "- [scipy.stats](https://docs.scipy.org/doc/scipy/reference/stats.html) - the statistics part of the `scipy` library\n", "- [statsmodels](http://www.statsmodels.org/stable/index.html) - a wide variety of statistical functions.\n", "- [scikit-learn](http://scikit-learn.org/) - a machine-learning focussed library withan emphasis on data classification. Excellent for Principal Component Analysis and multi-dimensional data clustering analysis.\n", "\n", "#### Image Manipulation\n", "- [scikit-image](http://scikit-image.org/) - image processing and manipulation tools.\n", "\n", "#### Monte-Carlo Simulation\n", "- [PyMC3](http://docs.pymc.io/) - a framework for Monte-Carlo computation.\n", "\n", "If you've installed Anaconda, as instructed above, this comes pre-installed with many of the most useful packages for data science. If you find you need one that isn't installed (you get an error when you try to import it), you can install most of them either through the Anaconda Navigator, or in a terminal by typing `conda install XXX`, where XXX is the name of the package you want.\n", "\n", "To actually *use* these packages, you need to `import` them at the top of your python code, for example:\n", "\n", " import numpy as np\n", "\n", "Will import all the functions in the numpy package, and make them accessible within the `np` variable in your python session. In a Jupyter Notebook, you can access the functions by typing `np.` followed by the `[Tab]` key to list all the functions available." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.2" } }, "nbformat": 4, "nbformat_minor": 2 }