erambler/posts/2017-11-jupyter-notebooks-i...

205 lines
27 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One of my reasons for moving this blog over to [Nikola](https://getnikola.com) after only a year on [Hugo](https://gohugo.com) was to be able to include [Jupyter notebooks](https://jupyter.org/) as blog posts, so here's an example of that. (Also I'm off sick from work today, which generally means I'm bored and need something low-energy and low-risk to occupy my mind.) I'm going to demonstrate a few features without going into too much explanation. If you have a working Jupyter setup, you'll be able to use the \"Source\" link at the top of this post to download the full working notebook and play with it yourself.\n",
"\n",
"Jupyter is a platform that lets you write combination program/documents in a notebook style. You can interweave text (like this paragraph), code and the results of running that code all in a single document.\n",
"\n",
"This notebook uses the [Python 3](https://python.org) programming language, but Jupyter has additional \"kernels\" available to support loads of other languages, including data science favourites R and Julia. Python is a very powerful language, but we often need to include (`import`) additional *modules* written by other developers to gain additional functionality. [`numpy`](https://numpy.org) is a general-purpose mathematics module and [`matplotlib`](https://matplotlib.org) lets us create plots. These module names are quite long and we'll use them a lot, so we'll also give them aliases `np` and `plt` respectively."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can notice a couple of things about the above code snippet. First, it's flagged with `In [1]:` which tells us that it has been run, and was the first snippet of all in the document to be run. These numbers are important, because it's possible to run code snippets one at a time in arbitrary order, so they may not have been run in the order they appear in the document.\n",
"\n",
"Second, it has produced no output. In this case, this is a good thing, as importing a module is a silent operation and would only produce output in the form of an error message if it failed (for example, if the module wasn't installed correctly or was misspelled). For example, see what happens if I deliberately misspell a module name:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'numpie'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-2-fb56a7ca31d1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mnumpie\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'numpie'"
]
}
],
"source": [
"import numpie"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now I can ask these modules to do some work for me! For now, what I'm going to do is plot an exponential growth curve. If you're not familiar with the maths, this is a curve that can be used to represent the growth of a population of bacteria (or people!) in the presence of abundant food, space and other resources.\n",
"\n",
"First I need to define the range over which I'm going to plot this function: 0 to 10 in steps of 0.1. I'll call it $x$ because this will go along the x-axis of my graph."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"x = np.arange(0, 10, step=0.1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There's still no output: I need to specifically ask Python to show me the contents of `x`:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3 1.4\n",
" 1.5 1.6 1.7 1.8 1.9 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9\n",
" 3. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4. 4.1 4.2 4.3 4.4\n",
" 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9\n",
" 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4\n",
" 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9\n",
" 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9]\n"
]
}
],
"source": [
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I now have a list of the numbers I asked for. Notice that this doesn't include 10: the upper bound isn't included (this is a traditional maths thing but is worth being aware of). Next I want to calculate $e^x$, or as we'll translate it for Python:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1. 1.10517092 1.22140276 1.34985881 1.4918247 ]\n"
]
}
],
"source": [
"y = np.exp(x)\n",
"print(y[:5])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As this is a very long list, I asked Python to only show me the first 5 items in it: `y[:5]`. Finally, I ask `matplotlib` to make me a graph of these two lists of numbers, label the x and y axes and give it a title."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f21abeef470>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10,6))\n",
"plt.plot(x, y)\n",
"plt.xlabel('$x$')\n",
"plt.ylabel('$e^x$')\n",
"plt.title('Example of an exponential curve')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So that's just a little taster of what Jupyter notebooks can do. Hopefully I'll come up with some more interesting posts to combine text and code soon!"
]
}
],
"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"
},
"nikola": {
"date": "2017-11-07 14:48:00 UTC",
"description": "A brief example to introduce Jupyter notebooks.",
"slug": "jupyter-notebooks-introduction",
"tags": [
"Technology",
"Python",
"Jupyter",
"Code"
],
"title": "Introduction to Jupyter notebooks"
}
},
"nbformat": 4,
"nbformat_minor": 2
}