Skip to content

Instantly share code, notes, and snippets.

@pybokeh
Created December 22, 2014 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pybokeh/f4ad0648369206955809 to your computer and use it in GitHub Desktop.
Save pybokeh/f4ad0648369206955809 to your computer and use it in GitHub Desktop.
rmagic
{
"metadata": {
"name": "",
"signature": "sha256:b72bb58631224f7343dd661386ef15970cba7dd7ff25e3fb6f44ad4abb241b17"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Obtain stock ticker data"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas.io.data as web\n",
"from datetime import datetime\n",
"import pandas as pd\n",
"\n",
"ticker = 'HMC'\n",
"start = datetime(2014, 1, 1)\n",
"end = datetime(2014, 12, 19)\n",
"\n",
"df=web.DataReader(ticker, 'yahoo', start, end)\n",
"df.reset_index(level=0, inplace=True) # R's data frame doesn't like it when the index is a date so convert date to column"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Adj Close</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2014-01-02</td>\n",
" <td> 41.10</td>\n",
" <td> 41.13</td>\n",
" <td> 40.60</td>\n",
" <td> 40.69</td>\n",
" <td> 179400</td>\n",
" <td> 40.69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2014-01-03</td>\n",
" <td> 40.68</td>\n",
" <td> 40.82</td>\n",
" <td> 40.50</td>\n",
" <td> 40.69</td>\n",
" <td> 191900</td>\n",
" <td> 40.69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2014-01-06</td>\n",
" <td> 41.08</td>\n",
" <td> 41.38</td>\n",
" <td> 40.66</td>\n",
" <td> 40.80</td>\n",
" <td> 277000</td>\n",
" <td> 40.80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2014-01-07</td>\n",
" <td> 40.67</td>\n",
" <td> 40.81</td>\n",
" <td> 40.56</td>\n",
" <td> 40.71</td>\n",
" <td> 207000</td>\n",
" <td> 40.71</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2014-01-08</td>\n",
" <td> 40.72</td>\n",
" <td> 40.72</td>\n",
" <td> 40.50</td>\n",
" <td> 40.65</td>\n",
" <td> 258100</td>\n",
" <td> 40.65</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
" Date Open High Low Close Volume Adj Close\n",
"0 2014-01-02 41.10 41.13 40.60 40.69 179400 40.69\n",
"1 2014-01-03 40.68 40.82 40.50 40.69 191900 40.69\n",
"2 2014-01-06 41.08 41.38 40.66 40.80 277000 40.80\n",
"3 2014-01-07 40.67 40.81 40.56 40.71 207000 40.71\n",
"4 2014-01-08 40.72 40.72 40.50 40.65 258100 40.65"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load the rpy2 extension so that we can use RMagic"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%load_ext rpy2.ipython"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pass the pandas dataframe to R as an input"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%R -i df"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%R -w 480 -h 300 -u px # instead of px, you can also choose 'in', 'cm', or 'mm'\n",
"df = as.data.frame(df) # ensure dataframe that was passed in from Python will be R's dataframe type\n",
"library(ggplot2)\n",
"p = ggplot(df, aes(df$Date, df$Adj.Close))\n",
"p = p + \n",
" geom_line() +\n",
" ggtitle(\"HMC Closing Price\") +\n",
" xlab(\"Date\") +\n",
" ylab(\"Price\")\n",
"print(p)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAEsCAMAAAAsIJBoAAADAFBMVEUAAAABAQECAgIDAwMEBAQF\nBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUWFhYXFxcY\nGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgpKSkqKior\nKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8PDw9PT0+\nPj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1OTk5PT09QUFBR\nUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBhYWFiYmJjY2Nk\nZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0dHR1dXV2dnZ3\nd3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISFhYWGhoaHh4eIiIiJiYmK\nioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJyd\nnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+w\nsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLD\nw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW\n1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp\n6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8\n/Pz9/f3+/v7////isF19AAAgAElEQVR4nO2dCXwTRfvHt6VcpSkFaeW0IogcRQso2siNyOuriEBf\nuSqiUAQFFBQBfSWAgHJpQV7lCAKiclgRIhQKgnI1gtwg1ATaBjpgK+UPKggo5L8zs5vsmc5Am2zS\n+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\nXtzkUwAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%R\n",
"library(forecast)\n",
"HoltWinters(df$Adj.Close)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Error in decompose(ts(x[1L:wind], start = start(x), frequency = f), seasonal) : \n",
" time series has no or less than 2 periods\n"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%R\n",
"hwm = HoltWinters(df$Adj.Close, gamma=FALSE)\n",
"hwf = forecast.HoltWinters(hwm, h=20)\n",
"summary(hwf)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%R print(summary(hwf))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"<DataFrame - Python:0x08E26D50 / R:0x095AD9A8>\n",
"[FloatVe..., FloatVe..., FloatVe..., FloatVe..., FloatVe...]\n",
" Point Forecast: <class 'rpy2.robjects.vectors.FloatVector'>\n",
" <FloatVector - Python:0x08E26A08 / R:0x082BF9E8>\n",
"[30.309197, 30.288394, 30.267591, ..., 29.955544, 29.934741, 29.913938]\n",
" Lo 80: <class 'rpy2.robjects.vectors.FloatVector'>\n",
" <FloatVector - Python:0x08E263A0 / R:0x0875ADD8>\n",
"[29.793228, 29.557593, 29.371186, ..., 27.709635, 27.623839, 27.539461]\n",
" Hi 80: <class 'rpy2.robjects.vectors.FloatVector'>\n",
" <FloatVector - Python:0x08E26800 / R:0x08ED1B38>\n",
"[30.825166, 31.019194, 31.163995, ..., 32.201454, 32.245643, 32.288415]\n",
" Lo 95: <class 'rpy2.robjects.vectors.FloatVector'>\n",
" <FloatVector - Python:0x08E26300 / R:0x0778FE98>\n",
"[29.520090, 29.170731, 28.896658, ..., 26.520722, 26.400521, 26.282489]\n",
" Hi 95: <class 'rpy2.robjects.vectors.FloatVector'>\n",
" <FloatVector - Python:0x05D5E850 / R:0x07D84198>\n",
"[31.098303, 31.406057, 31.638523, ..., 33.390366, 33.468961, 33.545387]"
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%R print(head(df))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 9,
"text": [
"<DataFrame - Python:0x08E21198 / R:0x0869EED8>\n",
"[POSIXct, Array, Array, ..., Array, Array, Array]\n",
" Date: <class 'rpy2.robjects.vectors.POSIXct'>\n",
" <POSIXct - Python:0x08E1A918 / R:0x09FBCDF8>\n",
"[1388638800.000000, 1388725200.000000, 1388984400.000000, 1389070800.000000, 1389157200.000000, 1389243600.000000]\n",
" Open: <class 'rpy2.robjects.vectors.Array'>\n",
" <Array - Python:0x08E1A210 / R:0x09FBCDA0>\n",
"[41.100000, 40.680000, 41.080000, 40.670000, 40.720000, 40.700000]\n",
" High: <class 'rpy2.robjects.vectors.Array'>\n",
" <Array - Python:0x08CCEC60 / R:0x09FBCD48>\n",
"[41.130000, 40.820000, 41.380000, 40.810000, 40.720000, 40.750000]\n",
" ...\n",
" Date: <class 'rpy2.robjects.vectors.Array'>\n",
" <Array - Python:0x067E1210 / R:0x09FBCC98>\n",
"[40.690000, 40.690000, 40.800000, 40.710000, 40.650000, 40.730000]\n",
" Open: <class 'rpy2.robjects.vectors.Array'>\n",
" <Array - Python:0x08CCF2B0 / R:0x0847A1D0>\n",
"[ 179400, 191900, 277000, 207000, 258100, 170800]\n",
" High: <class 'rpy2.robjects.vectors.Array'>\n",
" <Array - Python:0x08E125F8 / R:0x09FBCC40>\n",
"[40.690000, 40.690000, 40.800000, 40.710000, 40.650000, 40.730000]"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%R\n",
"plot.forecast(hwf)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\no0z4heQmGkkAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 11
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment