Skip to content

Instantly share code, notes, and snippets.

@pybokeh
Last active December 31, 2015 21:19
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/8045874 to your computer and use it in GitHub Desktop.
Save pybokeh/8045874 to your computer and use it in GitHub Desktop.
Plotting Litecoin Prices
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><h3>Plotting Litecoin Closing Price in US Dollars</h3></center>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Litecoin data was obtained [here](http://www.ltc-charts.com/period-charts.php?period=ytd&resolution=day&pair=ltc-usd&market=bitfinex). We will use the BeautifulSoup library to parse the HTML page. Open that web page and view its source to understand why the following code is doing what it is doing."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from bs4 import BeautifulSoup\n",
"import urllib.request as request\n",
"\n",
"html = request.urlopen('http://www.ltc-charts.com/period-charts.php?period=ytd&resolution=day&pair=ltc-usd&market=bitfinex')\n",
"\n",
"soup = BeautifulSoup(html)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Since the data we want is enclosed in the &lt;tbody&gt; tag, we will tell Beautifulsoup to grab data in the tbody tag:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"table_body = soup.tbody\n",
"table_body"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"<tbody>\n",
"<tr>\n",
"<td>2013-11-18</td>\n",
"<td class=\"num\">7.00000 USD</td>\n",
"<td class=\"num\">9.99000 USD</td>\n",
"<td class=\"num\">8.31000 USD</td>\n",
"<td class=\"num\">9.30000 USD</td>\n",
"<td class=\"num\">10,687.61 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-19</td>\n",
"<td class=\"num\">6.55000 USD</td>\n",
"<td class=\"num\">10.00000 USD</td>\n",
"<td class=\"num\">9.30000 USD</td>\n",
"<td class=\"num\">7.74000 USD</td>\n",
"<td class=\"num\">22,885.89 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-20</td>\n",
"<td class=\"num\">6.00000 USD</td>\n",
"<td class=\"num\">9.40000 USD</td>\n",
"<td class=\"num\">7.74000 USD</td>\n",
"<td class=\"num\">8.35000 USD</td>\n",
"<td class=\"num\">15,508.26 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-21</td>\n",
"<td class=\"num\">7.31000 USD</td>\n",
"<td class=\"num\">9.99000 USD</td>\n",
"<td class=\"num\">7.31000 USD</td>\n",
"<td class=\"num\">9.88900 USD</td>\n",
"<td class=\"num\">7,409.77 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-22</td>\n",
"<td class=\"num\">8.71499 USD</td>\n",
"<td class=\"num\">10.45000 USD</td>\n",
"<td class=\"num\">9.61000 USD</td>\n",
"<td class=\"num\">10.20000 USD</td>\n",
"<td class=\"num\">7,852.93 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-23</td>\n",
"<td class=\"num\">10.10000 USD</td>\n",
"<td class=\"num\">12.28000 USD</td>\n",
"<td class=\"num\">10.10000 USD</td>\n",
"<td class=\"num\">11.49000 USD</td>\n",
"<td class=\"num\">9,675.14 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-24</td>\n",
"<td class=\"num\">10.11000 USD</td>\n",
"<td class=\"num\">12.00000 USD</td>\n",
"<td class=\"num\">11.99000 USD</td>\n",
"<td class=\"num\">11.00000 USD</td>\n",
"<td class=\"num\">21,053.20 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-25</td>\n",
"<td class=\"num\">10.78000 USD</td>\n",
"<td class=\"num\">13.00000 USD</td>\n",
"<td class=\"num\">11.00000 USD</td>\n",
"<td class=\"num\">12.00500 USD</td>\n",
"<td class=\"num\">11,876.89 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-26</td>\n",
"<td class=\"num\">12.00000 USD</td>\n",
"<td class=\"num\">20.66000 USD</td>\n",
"<td class=\"num\">12.25000 USD</td>\n",
"<td class=\"num\">19.30000 USD</td>\n",
"<td class=\"num\">33,083.90 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-27</td>\n",
"<td class=\"num\">17.51000 USD</td>\n",
"<td class=\"num\">47.00000 USD</td>\n",
"<td class=\"num\">19.00000 USD</td>\n",
"<td class=\"num\">38.15000 USD</td>\n",
"<td class=\"num\">57,353.21 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-28</td>\n",
"<td class=\"num\">25.00000 USD</td>\n",
"<td class=\"num\">55.00000 USD</td>\n",
"<td class=\"num\">36.03000 USD</td>\n",
"<td class=\"num\">40.50000 USD</td>\n",
"<td class=\"num\">66,632.58 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-29</td>\n",
"<td class=\"num\">25.50000 USD</td>\n",
"<td class=\"num\">46.00000 USD</td>\n",
"<td class=\"num\">39.50000 USD</td>\n",
"<td class=\"num\">36.69000 USD</td>\n",
"<td class=\"num\">25,133.05 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-11-30</td>\n",
"<td class=\"num\">34.02010 USD</td>\n",
"<td class=\"num\">44.94000 USD</td>\n",
"<td class=\"num\">36.40000 USD</td>\n",
"<td class=\"num\">41.25000 USD</td>\n",
"<td class=\"num\">12,248.14 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-07</td>\n",
"<td class=\"num\">13.00000 USD</td>\n",
"<td class=\"num\">28.00000 USD</td>\n",
"<td class=\"num\">16.15100 USD</td>\n",
"<td class=\"num\">21.02300 USD</td>\n",
"<td class=\"num\">13,629.40 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-08</td>\n",
"<td class=\"num\">20.52000 USD</td>\n",
"<td class=\"num\">27.98000 USD</td>\n",
"<td class=\"num\">22.99000 USD</td>\n",
"<td class=\"num\">26.50000 USD</td>\n",
"<td class=\"num\">12,219.27 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-09</td>\n",
"<td class=\"num\">26.20100 USD</td>\n",
"<td class=\"num\">35.33000 USD</td>\n",
"<td class=\"num\">27.10000 USD</td>\n",
"<td class=\"num\">31.14000 USD</td>\n",
"<td class=\"num\">12,458.78 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-10</td>\n",
"<td class=\"num\">30.50000 USD</td>\n",
"<td class=\"num\">37.60900 USD</td>\n",
"<td class=\"num\">31.45100 USD</td>\n",
"<td class=\"num\">35.13000 USD</td>\n",
"<td class=\"num\">8,148.49 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-11</td>\n",
"<td class=\"num\">27.00000 USD</td>\n",
"<td class=\"num\">37.46000 USD</td>\n",
"<td class=\"num\">35.13000 USD</td>\n",
"<td class=\"num\">31.40000 USD</td>\n",
"<td class=\"num\">16,705.02 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-12</td>\n",
"<td class=\"num\">29.55000 USD</td>\n",
"<td class=\"num\">32.19000 USD</td>\n",
"<td class=\"num\">30.78920 USD</td>\n",
"<td class=\"num\">30.99000 USD</td>\n",
"<td class=\"num\">5,022.61 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-13</td>\n",
"<td class=\"num\">29.16000 USD</td>\n",
"<td class=\"num\">33.00000 USD</td>\n",
"<td class=\"num\">31.40000 USD</td>\n",
"<td class=\"num\">30.65000 USD</td>\n",
"<td class=\"num\">6,703.60 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-14</td>\n",
"<td class=\"num\">29.21000 USD</td>\n",
"<td class=\"num\">30.99000 USD</td>\n",
"<td class=\"num\">30.65000 USD</td>\n",
"<td class=\"num\">29.22000 USD</td>\n",
"<td class=\"num\">3,191.54 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-15</td>\n",
"<td class=\"num\">27.23000 USD</td>\n",
"<td class=\"num\">32.50000 USD</td>\n",
"<td class=\"num\">29.23000 USD</td>\n",
"<td class=\"num\">30.89000 USD</td>\n",
"<td class=\"num\">11,378.15 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-16</td>\n",
"<td class=\"num\">22.50000 USD</td>\n",
"<td class=\"num\">31.00000 USD</td>\n",
"<td class=\"num\">30.89000 USD</td>\n",
"<td class=\"num\">24.45000 USD</td>\n",
"<td class=\"num\">30,372.23 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-17</td>\n",
"<td class=\"num\">15.50000 USD</td>\n",
"<td class=\"num\">26.00000 USD</td>\n",
"<td class=\"num\">23.60300 USD</td>\n",
"<td class=\"num\">22.15000 USD</td>\n",
"<td class=\"num\">26,209.58 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-18</td>\n",
"<td class=\"num\">0.00100 USD</td>\n",
"<td class=\"num\">22.60000 USD</td>\n",
"<td class=\"num\">22.10000 USD</td>\n",
"<td class=\"num\">13.25000 USD</td>\n",
"<td class=\"num\">158,101.91 LTC</td>\n",
"</tr>\n",
"<tr>\n",
"<td>2013-12-19</td>\n",
"<td class=\"num\">12.55000 USD</td>\n",
"<td class=\"num\">19.34000 USD</td>\n",
"<td class=\"num\">13.50000 USD</td>\n",
"<td class=\"num\">18.67000 USD</td>\n",
"<td class=\"num\">24,529.78 LTC</td>\n",
"</tr>\n",
"</tbody>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"But within the &lt;tbody&gt; tag, we really just need the data in the &lt;td&gt; tag:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"table_data = table_body.find_all('td')\n",
"table_data"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": [
"[<td>2013-11-18</td>,\n",
" <td class=\"num\">7.00000 USD</td>,\n",
" <td class=\"num\">9.99000 USD</td>,\n",
" <td class=\"num\">8.31000 USD</td>,\n",
" <td class=\"num\">9.30000 USD</td>,\n",
" <td class=\"num\">10,687.61 LTC</td>,\n",
" <td>2013-11-19</td>,\n",
" <td class=\"num\">6.55000 USD</td>,\n",
" <td class=\"num\">10.00000 USD</td>,\n",
" <td class=\"num\">9.30000 USD</td>,\n",
" <td class=\"num\">7.74000 USD</td>,\n",
" <td class=\"num\">22,885.89 LTC</td>,\n",
" <td>2013-11-20</td>,\n",
" <td class=\"num\">6.00000 USD</td>,\n",
" <td class=\"num\">9.40000 USD</td>,\n",
" <td class=\"num\">7.74000 USD</td>,\n",
" <td class=\"num\">8.35000 USD</td>,\n",
" <td class=\"num\">15,508.26 LTC</td>,\n",
" <td>2013-11-21</td>,\n",
" <td class=\"num\">7.31000 USD</td>,\n",
" <td class=\"num\">9.99000 USD</td>,\n",
" <td class=\"num\">7.31000 USD</td>,\n",
" <td class=\"num\">9.88900 USD</td>,\n",
" <td class=\"num\">7,409.77 LTC</td>,\n",
" <td>2013-11-22</td>,\n",
" <td class=\"num\">8.71499 USD</td>,\n",
" <td class=\"num\">10.45000 USD</td>,\n",
" <td class=\"num\">9.61000 USD</td>,\n",
" <td class=\"num\">10.20000 USD</td>,\n",
" <td class=\"num\">7,852.93 LTC</td>,\n",
" <td>2013-11-23</td>,\n",
" <td class=\"num\">10.10000 USD</td>,\n",
" <td class=\"num\">12.28000 USD</td>,\n",
" <td class=\"num\">10.10000 USD</td>,\n",
" <td class=\"num\">11.49000 USD</td>,\n",
" <td class=\"num\">9,675.14 LTC</td>,\n",
" <td>2013-11-24</td>,\n",
" <td class=\"num\">10.11000 USD</td>,\n",
" <td class=\"num\">12.00000 USD</td>,\n",
" <td class=\"num\">11.99000 USD</td>,\n",
" <td class=\"num\">11.00000 USD</td>,\n",
" <td class=\"num\">21,053.20 LTC</td>,\n",
" <td>2013-11-25</td>,\n",
" <td class=\"num\">10.78000 USD</td>,\n",
" <td class=\"num\">13.00000 USD</td>,\n",
" <td class=\"num\">11.00000 USD</td>,\n",
" <td class=\"num\">12.00500 USD</td>,\n",
" <td class=\"num\">11,876.89 LTC</td>,\n",
" <td>2013-11-26</td>,\n",
" <td class=\"num\">12.00000 USD</td>,\n",
" <td class=\"num\">20.66000 USD</td>,\n",
" <td class=\"num\">12.25000 USD</td>,\n",
" <td class=\"num\">19.30000 USD</td>,\n",
" <td class=\"num\">33,083.90 LTC</td>,\n",
" <td>2013-11-27</td>,\n",
" <td class=\"num\">17.51000 USD</td>,\n",
" <td class=\"num\">47.00000 USD</td>,\n",
" <td class=\"num\">19.00000 USD</td>,\n",
" <td class=\"num\">38.15000 USD</td>,\n",
" <td class=\"num\">57,353.21 LTC</td>,\n",
" <td>2013-11-28</td>,\n",
" <td class=\"num\">25.00000 USD</td>,\n",
" <td class=\"num\">55.00000 USD</td>,\n",
" <td class=\"num\">36.03000 USD</td>,\n",
" <td class=\"num\">40.50000 USD</td>,\n",
" <td class=\"num\">66,632.58 LTC</td>,\n",
" <td>2013-11-29</td>,\n",
" <td class=\"num\">25.50000 USD</td>,\n",
" <td class=\"num\">46.00000 USD</td>,\n",
" <td class=\"num\">39.50000 USD</td>,\n",
" <td class=\"num\">36.69000 USD</td>,\n",
" <td class=\"num\">25,133.05 LTC</td>,\n",
" <td>2013-11-30</td>,\n",
" <td class=\"num\">34.02010 USD</td>,\n",
" <td class=\"num\">44.94000 USD</td>,\n",
" <td class=\"num\">36.40000 USD</td>,\n",
" <td class=\"num\">41.25000 USD</td>,\n",
" <td class=\"num\">12,248.14 LTC</td>,\n",
" <td>2013-12-07</td>,\n",
" <td class=\"num\">13.00000 USD</td>,\n",
" <td class=\"num\">28.00000 USD</td>,\n",
" <td class=\"num\">16.15100 USD</td>,\n",
" <td class=\"num\">21.02300 USD</td>,\n",
" <td class=\"num\">13,629.40 LTC</td>,\n",
" <td>2013-12-08</td>,\n",
" <td class=\"num\">20.52000 USD</td>,\n",
" <td class=\"num\">27.98000 USD</td>,\n",
" <td class=\"num\">22.99000 USD</td>,\n",
" <td class=\"num\">26.50000 USD</td>,\n",
" <td class=\"num\">12,219.27 LTC</td>,\n",
" <td>2013-12-09</td>,\n",
" <td class=\"num\">26.20100 USD</td>,\n",
" <td class=\"num\">35.33000 USD</td>,\n",
" <td class=\"num\">27.10000 USD</td>,\n",
" <td class=\"num\">31.14000 USD</td>,\n",
" <td class=\"num\">12,458.78 LTC</td>,\n",
" <td>2013-12-10</td>,\n",
" <td class=\"num\">30.50000 USD</td>,\n",
" <td class=\"num\">37.60900 USD</td>,\n",
" <td class=\"num\">31.45100 USD</td>,\n",
" <td class=\"num\">35.13000 USD</td>,\n",
" <td class=\"num\">8,148.49 LTC</td>,\n",
" <td>2013-12-11</td>,\n",
" <td class=\"num\">27.00000 USD</td>,\n",
" <td class=\"num\">37.46000 USD</td>,\n",
" <td class=\"num\">35.13000 USD</td>,\n",
" <td class=\"num\">31.40000 USD</td>,\n",
" <td class=\"num\">16,705.02 LTC</td>,\n",
" <td>2013-12-12</td>,\n",
" <td class=\"num\">29.55000 USD</td>,\n",
" <td class=\"num\">32.19000 USD</td>,\n",
" <td class=\"num\">30.78920 USD</td>,\n",
" <td class=\"num\">30.99000 USD</td>,\n",
" <td class=\"num\">5,022.61 LTC</td>,\n",
" <td>2013-12-13</td>,\n",
" <td class=\"num\">29.16000 USD</td>,\n",
" <td class=\"num\">33.00000 USD</td>,\n",
" <td class=\"num\">31.40000 USD</td>,\n",
" <td class=\"num\">30.65000 USD</td>,\n",
" <td class=\"num\">6,703.60 LTC</td>,\n",
" <td>2013-12-14</td>,\n",
" <td class=\"num\">29.21000 USD</td>,\n",
" <td class=\"num\">30.99000 USD</td>,\n",
" <td class=\"num\">30.65000 USD</td>,\n",
" <td class=\"num\">29.22000 USD</td>,\n",
" <td class=\"num\">3,191.54 LTC</td>,\n",
" <td>2013-12-15</td>,\n",
" <td class=\"num\">27.23000 USD</td>,\n",
" <td class=\"num\">32.50000 USD</td>,\n",
" <td class=\"num\">29.23000 USD</td>,\n",
" <td class=\"num\">30.89000 USD</td>,\n",
" <td class=\"num\">11,378.15 LTC</td>,\n",
" <td>2013-12-16</td>,\n",
" <td class=\"num\">22.50000 USD</td>,\n",
" <td class=\"num\">31.00000 USD</td>,\n",
" <td class=\"num\">30.89000 USD</td>,\n",
" <td class=\"num\">24.45000 USD</td>,\n",
" <td class=\"num\">30,372.23 LTC</td>,\n",
" <td>2013-12-17</td>,\n",
" <td class=\"num\">15.50000 USD</td>,\n",
" <td class=\"num\">26.00000 USD</td>,\n",
" <td class=\"num\">23.60300 USD</td>,\n",
" <td class=\"num\">22.15000 USD</td>,\n",
" <td class=\"num\">26,209.58 LTC</td>,\n",
" <td>2013-12-18</td>,\n",
" <td class=\"num\">0.00100 USD</td>,\n",
" <td class=\"num\">22.60000 USD</td>,\n",
" <td class=\"num\">22.10000 USD</td>,\n",
" <td class=\"num\">13.25000 USD</td>,\n",
" <td class=\"num\">158,101.91 LTC</td>,\n",
" <td>2013-12-19</td>,\n",
" <td class=\"num\">12.55000 USD</td>,\n",
" <td class=\"num\">19.34000 USD</td>,\n",
" <td class=\"num\">13.50000 USD</td>,\n",
" <td class=\"num\">18.67000 USD</td>,\n",
" <td class=\"num\">24,529.78 LTC</td>]"
]
}
],
"prompt_number": 18
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Let's just grab the raw data without the HTML tags. But first, let's print the data out to see if the get_text() method does what we want it to do:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"for row in table_data:\n",
" print(row.get_text())"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"2013-11-18\n",
"7.00000 USD\n",
"9.99000 USD\n",
"8.31000 USD\n",
"9.30000 USD\n",
"10,687.61 LTC\n",
"2013-11-19\n",
"6.55000 USD\n",
"10.00000 USD\n",
"9.30000 USD\n",
"7.74000 USD\n",
"22,885.89 LTC\n",
"2013-11-20\n",
"6.00000 USD\n",
"9.40000 USD\n",
"7.74000 USD\n",
"8.35000 USD\n",
"15,508.26 LTC\n",
"2013-11-21\n",
"7.31000 USD\n",
"9.99000 USD\n",
"7.31000 USD\n",
"9.88900 USD\n",
"7,409.77 LTC\n",
"2013-11-22\n",
"8.71499 USD\n",
"10.45000 USD\n",
"9.61000 USD\n",
"10.20000 USD\n",
"7,852.93 LTC\n",
"2013-11-23\n",
"10.10000 USD\n",
"12.28000 USD\n",
"10.10000 USD\n",
"11.49000 USD\n",
"9,675.14 LTC\n",
"2013-11-24\n",
"10.11000 USD\n",
"12.00000 USD\n",
"11.99000 USD\n",
"11.00000 USD\n",
"21,053.20 LTC\n",
"2013-11-25\n",
"10.78000 USD\n",
"13.00000 USD\n",
"11.00000 USD\n",
"12.00500 USD\n",
"11,876.89 LTC\n",
"2013-11-26\n",
"12.00000 USD\n",
"20.66000 USD\n",
"12.25000 USD\n",
"19.30000 USD\n",
"33,083.90 LTC\n",
"2013-11-27\n",
"17.51000 USD\n",
"47.00000 USD\n",
"19.00000 USD\n",
"38.15000 USD\n",
"57,353.21 LTC\n",
"2013-11-28\n",
"25.00000 USD\n",
"55.00000 USD\n",
"36.03000 USD\n",
"40.50000 USD\n",
"66,632.58 LTC\n",
"2013-11-29\n",
"25.50000 USD\n",
"46.00000 USD\n",
"39.50000 USD\n",
"36.69000 USD\n",
"25,133.05 LTC\n",
"2013-11-30\n",
"34.02010 USD\n",
"44.94000 USD\n",
"36.40000 USD\n",
"41.25000 USD\n",
"12,248.14 LTC\n",
"2013-12-07\n",
"13.00000 USD\n",
"28.00000 USD\n",
"16.15100 USD\n",
"21.02300 USD\n",
"13,629.40 LTC\n",
"2013-12-08\n",
"20.52000 USD\n",
"27.98000 USD\n",
"22.99000 USD\n",
"26.50000 USD\n",
"12,219.27 LTC\n",
"2013-12-09\n",
"26.20100 USD\n",
"35.33000 USD\n",
"27.10000 USD\n",
"31.14000 USD\n",
"12,458.78 LTC\n",
"2013-12-10\n",
"30.50000 USD\n",
"37.60900 USD\n",
"31.45100 USD\n",
"35.13000 USD\n",
"8,148.49 LTC\n",
"2013-12-11\n",
"27.00000 USD\n",
"37.46000 USD\n",
"35.13000 USD\n",
"31.40000 USD\n",
"16,705.02 LTC\n",
"2013-12-12\n",
"29.55000 USD\n",
"32.19000 USD\n",
"30.78920 USD\n",
"30.99000 USD\n",
"5,022.61 LTC\n",
"2013-12-13\n",
"29.16000 USD\n",
"33.00000 USD\n",
"31.40000 USD\n",
"30.65000 USD\n",
"6,703.60 LTC\n",
"2013-12-14\n",
"29.21000 USD\n",
"30.99000 USD\n",
"30.65000 USD\n",
"29.22000 USD\n",
"3,191.54 LTC\n",
"2013-12-15\n",
"27.23000 USD\n",
"32.50000 USD\n",
"29.23000 USD\n",
"30.89000 USD\n",
"11,378.15 LTC\n",
"2013-12-16\n",
"22.50000 USD\n",
"31.00000 USD\n",
"30.89000 USD\n",
"24.45000 USD\n",
"30,372.23 LTC\n",
"2013-12-17\n",
"15.50000 USD\n",
"26.00000 USD\n",
"23.60300 USD\n",
"22.15000 USD\n",
"26,209.58 LTC\n",
"2013-12-18\n",
"0.00100 USD\n",
"22.60000 USD\n",
"22.10000 USD\n",
"13.25000 USD\n",
"158,101.91 LTC\n",
"2013-12-19\n",
"12.55000 USD\n",
"19.34000 USD\n",
"13.50000 USD\n",
"18.67000 USD\n",
"24,529.78 LTC\n"
]
}
],
"prompt_number": 19
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"So from above, it looks like it does. So, let's store the data in a list"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data_list = []\n",
"for row in table_data:\n",
" data_list.append(row.get_text())"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data_list"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 23,
"text": [
"['2013-11-18',\n",
" '7.00000 USD',\n",
" '9.99000 USD',\n",
" '8.31000 USD',\n",
" '9.30000 USD',\n",
" '10,687.61 LTC',\n",
" '2013-11-19',\n",
" '6.55000 USD',\n",
" '10.00000 USD',\n",
" '9.30000 USD',\n",
" '7.74000 USD',\n",
" '22,885.89 LTC',\n",
" '2013-11-20',\n",
" '6.00000 USD',\n",
" '9.40000 USD',\n",
" '7.74000 USD',\n",
" '8.35000 USD',\n",
" '15,508.26 LTC',\n",
" '2013-11-21',\n",
" '7.31000 USD',\n",
" '9.99000 USD',\n",
" '7.31000 USD',\n",
" '9.88900 USD',\n",
" '7,409.77 LTC',\n",
" '2013-11-22',\n",
" '8.71499 USD',\n",
" '10.45000 USD',\n",
" '9.61000 USD',\n",
" '10.20000 USD',\n",
" '7,852.93 LTC',\n",
" '2013-11-23',\n",
" '10.10000 USD',\n",
" '12.28000 USD',\n",
" '10.10000 USD',\n",
" '11.49000 USD',\n",
" '9,675.14 LTC',\n",
" '2013-11-24',\n",
" '10.11000 USD',\n",
" '12.00000 USD',\n",
" '11.99000 USD',\n",
" '11.00000 USD',\n",
" '21,053.20 LTC',\n",
" '2013-11-25',\n",
" '10.78000 USD',\n",
" '13.00000 USD',\n",
" '11.00000 USD',\n",
" '12.00500 USD',\n",
" '11,876.89 LTC',\n",
" '2013-11-26',\n",
" '12.00000 USD',\n",
" '20.66000 USD',\n",
" '12.25000 USD',\n",
" '19.30000 USD',\n",
" '33,083.90 LTC',\n",
" '2013-11-27',\n",
" '17.51000 USD',\n",
" '47.00000 USD',\n",
" '19.00000 USD',\n",
" '38.15000 USD',\n",
" '57,353.21 LTC',\n",
" '2013-11-28',\n",
" '25.00000 USD',\n",
" '55.00000 USD',\n",
" '36.03000 USD',\n",
" '40.50000 USD',\n",
" '66,632.58 LTC',\n",
" '2013-11-29',\n",
" '25.50000 USD',\n",
" '46.00000 USD',\n",
" '39.50000 USD',\n",
" '36.69000 USD',\n",
" '25,133.05 LTC',\n",
" '2013-11-30',\n",
" '34.02010 USD',\n",
" '44.94000 USD',\n",
" '36.40000 USD',\n",
" '41.25000 USD',\n",
" '12,248.14 LTC',\n",
" '2013-12-07',\n",
" '13.00000 USD',\n",
" '28.00000 USD',\n",
" '16.15100 USD',\n",
" '21.02300 USD',\n",
" '13,629.40 LTC',\n",
" '2013-12-08',\n",
" '20.52000 USD',\n",
" '27.98000 USD',\n",
" '22.99000 USD',\n",
" '26.50000 USD',\n",
" '12,219.27 LTC',\n",
" '2013-12-09',\n",
" '26.20100 USD',\n",
" '35.33000 USD',\n",
" '27.10000 USD',\n",
" '31.14000 USD',\n",
" '12,458.78 LTC',\n",
" '2013-12-10',\n",
" '30.50000 USD',\n",
" '37.60900 USD',\n",
" '31.45100 USD',\n",
" '35.13000 USD',\n",
" '8,148.49 LTC',\n",
" '2013-12-11',\n",
" '27.00000 USD',\n",
" '37.46000 USD',\n",
" '35.13000 USD',\n",
" '31.40000 USD',\n",
" '16,705.02 LTC',\n",
" '2013-12-12',\n",
" '29.55000 USD',\n",
" '32.19000 USD',\n",
" '30.78920 USD',\n",
" '30.99000 USD',\n",
" '5,022.61 LTC',\n",
" '2013-12-13',\n",
" '29.16000 USD',\n",
" '33.00000 USD',\n",
" '31.40000 USD',\n",
" '30.65000 USD',\n",
" '6,703.60 LTC',\n",
" '2013-12-14',\n",
" '29.21000 USD',\n",
" '30.99000 USD',\n",
" '30.65000 USD',\n",
" '29.22000 USD',\n",
" '3,191.54 LTC',\n",
" '2013-12-15',\n",
" '27.23000 USD',\n",
" '32.50000 USD',\n",
" '29.23000 USD',\n",
" '30.89000 USD',\n",
" '11,378.15 LTC',\n",
" '2013-12-16',\n",
" '22.50000 USD',\n",
" '31.00000 USD',\n",
" '30.89000 USD',\n",
" '24.45000 USD',\n",
" '30,372.23 LTC',\n",
" '2013-12-17',\n",
" '15.50000 USD',\n",
" '26.00000 USD',\n",
" '23.60300 USD',\n",
" '22.15000 USD',\n",
" '26,209.58 LTC',\n",
" '2013-12-18',\n",
" '0.00100 USD',\n",
" '22.60000 USD',\n",
" '22.10000 USD',\n",
" '13.25000 USD',\n",
" '158,101.91 LTC',\n",
" '2013-12-19',\n",
" '12.55000 USD',\n",
" '19.34000 USD',\n",
" '13.50000 USD',\n",
" '18.67000 USD',\n",
" '24,529.78 LTC']"
]
}
],
"prompt_number": 23
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Let's use Python's handy list slicing to grab the data we want"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dates = data_list[0::6] # grab the 1st item and every 6th item afterwards"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dates"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 27,
"text": [
"['2013-11-18',\n",
" '2013-11-19',\n",
" '2013-11-20',\n",
" '2013-11-21',\n",
" '2013-11-22',\n",
" '2013-11-23',\n",
" '2013-11-24',\n",
" '2013-11-25',\n",
" '2013-11-26',\n",
" '2013-11-27',\n",
" '2013-11-28',\n",
" '2013-11-29',\n",
" '2013-11-30',\n",
" '2013-12-07',\n",
" '2013-12-08',\n",
" '2013-12-09',\n",
" '2013-12-10',\n",
" '2013-12-11',\n",
" '2013-12-12',\n",
" '2013-12-13',\n",
" '2013-12-14',\n",
" '2013-12-15',\n",
" '2013-12-16',\n",
" '2013-12-17',\n",
" '2013-12-18',\n",
" '2013-12-19']"
]
}
],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"close_price = data_list[4::6]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"close_price"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 29,
"text": [
"['9.30000 USD',\n",
" '7.74000 USD',\n",
" '8.35000 USD',\n",
" '9.88900 USD',\n",
" '10.20000 USD',\n",
" '11.49000 USD',\n",
" '11.00000 USD',\n",
" '12.00500 USD',\n",
" '19.30000 USD',\n",
" '38.15000 USD',\n",
" '40.50000 USD',\n",
" '36.69000 USD',\n",
" '41.25000 USD',\n",
" '21.02300 USD',\n",
" '26.50000 USD',\n",
" '31.14000 USD',\n",
" '35.13000 USD',\n",
" '31.40000 USD',\n",
" '30.99000 USD',\n",
" '30.65000 USD',\n",
" '29.22000 USD',\n",
" '30.89000 USD',\n",
" '24.45000 USD',\n",
" '22.15000 USD',\n",
" '13.25000 USD',\n",
" '18.67000 USD']"
]
}
],
"prompt_number": 29
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Since we want to plot the closing price, we need to get rid of the \" USD\". We can replace it with an emply space \"\""
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"price = []\n",
"for row in close_price:\n",
" price.append(float(row.replace(\" USD\",\"\")))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Looks like that worked:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"price"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 32,
"text": [
"[9.3,\n",
" 7.74,\n",
" 8.35,\n",
" 9.889,\n",
" 10.2,\n",
" 11.49,\n",
" 11.0,\n",
" 12.005,\n",
" 19.3,\n",
" 38.15,\n",
" 40.5,\n",
" 36.69,\n",
" 41.25,\n",
" 21.023,\n",
" 26.5,\n",
" 31.14,\n",
" 35.13,\n",
" 31.4,\n",
" 30.99,\n",
" 30.65,\n",
" 29.22,\n",
" 30.89,\n",
" 24.45,\n",
" 22.15,\n",
" 13.25,\n",
" 18.67]"
]
}
],
"prompt_number": 32
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"One more problem, the dates list we made stored dates in String format, we want them to be actual Python date objects so that MATPLOTLIB will plot them. So we'll convert str to Python dates:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from datetime import datetime\n",
"dates_final = []\n",
"for date in dates:\n",
" dates_final.append(datetime.strptime(date, \"%Y-%m-%d\"))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 34
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Looks like that worked:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dates_final"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 35,
"text": [
"[datetime.datetime(2013, 11, 18, 0, 0),\n",
" datetime.datetime(2013, 11, 19, 0, 0),\n",
" datetime.datetime(2013, 11, 20, 0, 0),\n",
" datetime.datetime(2013, 11, 21, 0, 0),\n",
" datetime.datetime(2013, 11, 22, 0, 0),\n",
" datetime.datetime(2013, 11, 23, 0, 0),\n",
" datetime.datetime(2013, 11, 24, 0, 0),\n",
" datetime.datetime(2013, 11, 25, 0, 0),\n",
" datetime.datetime(2013, 11, 26, 0, 0),\n",
" datetime.datetime(2013, 11, 27, 0, 0),\n",
" datetime.datetime(2013, 11, 28, 0, 0),\n",
" datetime.datetime(2013, 11, 29, 0, 0),\n",
" datetime.datetime(2013, 11, 30, 0, 0),\n",
" datetime.datetime(2013, 12, 7, 0, 0),\n",
" datetime.datetime(2013, 12, 8, 0, 0),\n",
" datetime.datetime(2013, 12, 9, 0, 0),\n",
" datetime.datetime(2013, 12, 10, 0, 0),\n",
" datetime.datetime(2013, 12, 11, 0, 0),\n",
" datetime.datetime(2013, 12, 12, 0, 0),\n",
" datetime.datetime(2013, 12, 13, 0, 0),\n",
" datetime.datetime(2013, 12, 14, 0, 0),\n",
" datetime.datetime(2013, 12, 15, 0, 0),\n",
" datetime.datetime(2013, 12, 16, 0, 0),\n",
" datetime.datetime(2013, 12, 17, 0, 0),\n",
" datetime.datetime(2013, 12, 18, 0, 0),\n",
" datetime.datetime(2013, 12, 19, 0, 0)]"
]
}
],
"prompt_number": 35
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Now that we have the data we need in their proper format, we are ready to plot:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.pyplot as plt\n",
"from matplotlib.dates import YearLocator, MonthLocator, WeekdayLocator, DateFormatter\n",
"from matplotlib.ticker import MultipleLocator\n",
"\n",
"# These are just time intervals we can use to format our X axis tick intervals\n",
"year = YearLocator()\n",
"month = MonthLocator(bymonth=range(1,13), bymonthday=1, interval=1)\n",
"week = WeekdayLocator(byweekday=MO) # Every MOnday\n",
"day = DayLocator(bymonthday=range(1,32), interval=1)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_axes([0, 0, 2, 1]) # left, bottom, width, height\n",
"\n",
"# Format the x-axis, set tick labels as Month-dd format, turn on grid for major ticks\n",
"#dayFmt = DateFormatter(\"%b-%d\")\n",
"dayFmt = DateFormatter(\"%b-%d\")\n",
"ax.xaxis.set_major_formatter(dayFmt) # Make the x-axis tick interval to be monthly interval size\n",
"ax.xaxis.set_major_locator(day)\n",
"ax.xaxis.grid(which='major')\n",
"\n",
"# Format the y-axis\n",
"y_major_ticks = MultipleLocator(5)\n",
"ax.yaxis.set_major_locator(y_major_ticks)\n",
"ax.yaxis.set_ticks_position('right') # Not sure why 'both' don't work\n",
"ax.yaxis.set_label_position('right')\n",
"ax.yaxis.grid(which='major')\n",
"\n",
"# Plot the data...\n",
"plt.plot_date(dates_final, price, 'r')\n",
"ax.set_title(\"Litecoin Value in US$\", weight=\"bold\")\n",
"ax.set_xlabel(\"Month-Day\")\n",
"ax.set_ylabel(\"US$\")\n",
"plt.setp(ax.get_xticklabels(), rotation=-90)\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nAsihQ4f46quvePrpp1P21SclJWXqfIHMUBMpIiIiIiISQHr27MnIkSNTrtcCs78+KiqKKlWq0LFj\nR06cOGFZvppIERERERGRADF//nyKFi1KeHj4JTOPXbp0Ye/evXi9XooVK0bv3r0tqyHDeyJLly6d\n4UuVRUREREREJONKlSqVcpUVwEsvvcSkSZPInj07Z8+e5c8//6RFixZER0enfMy+ffto0qQJW7Zs\nsaSmDM9E7t69O2W9rT9+DBo0SHnKc1yW8pSnvOAYm/KU59Qs5SlPecExtqSkpH9N4A0bNoyDBw+y\nd+9epk+fzv333090dDSHDx9O+ZjZs2dTqVKlrHeLachu2TOLiIiIiIiIZZKSklLuGu7bty+bNm3C\n4/FQokQJxo8fb1mu45vIffv2KU95jstSnvKUZ0+W8pTn5Dw3j015ynNynpvHdjURERFEREQAMGnS\nJL/lOv5gnapVqypPeY7LUp7ylGdPlvKU5+Q8N49Necpzcp6bx+ZUGT5Yx+PxkMFPERERERERkUxw\nYv/l+JlIERERERERcQ7HN5ExMTHKU57jspSnPOXZk6U85Tk5z81jU57ynJzn5rE5leObSBERERER\nEXEO7YkUERERERFxKCf2X5qJFBERERERkXRzfBPp9jXOygvMLOUpT3n2ZClPeU7Oc/PYlKc8J+e5\neWxO5fgmUkRERERERJxDeyJFREREREQcyon9l2YiRUREREREJN0c30S6fY2z8gIzS3nKU549WcpT\nnpPz3Dw25SnPyXluHptTOb6JFBEREREREefQnkgRERERERGHcmL/pZlIERERERERSTfHN5FuX+Os\nvMDMUp7ylGdPlvKU5+Q8N49Necpzcp6bx+ZUjm8iRURERERExDm0J1JERERERMShnNh/aSZSRERE\nRERE0s3xTaTb1zgrLzCzlKc85dmTpTzlOTnPzWNTnvKcnOfmsTmV45tIERERERERcQ7tiRQRERER\nEXEoJ/ZfmokUEbHSyZPQrBl88YXdlYiIiIj4hOObSLevcVZeYGYpT3npkpAAbdpASAgxzz8PL7wA\n585Zn4u+9pSnPDvy3Dw25SnPyXluHptTOb6JFBEJWC++CKdPw/Tp8OGH8PPPcM89sHu33ZWJiIiI\nZJr2RIqIWOH992HMGFizBgoVMr+WlATvvANDh8K770KrVvbWKCIiIo7nxP5LTaSIiK8tXgzt28Pq\n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\n4YZ2rly5gpo1axo2AbgXEUFeXh6qVasGb29vl7bLFBYWwtPTU/f3vR/2LWfPni33j0ur7FvuBftI\nAAAADVRJREFUB99//z0CAwMNuwo5Ed2fyq4IXqtWLbM3hch5jp48+c4770jjxo0lMjJSWrZsKRs3\nbpTAwECpX7++vP3227qfrDl69GjJyckREZENGzZIkyZNJDIyUpo1aybvv/++7r29e/dKRESEBAcH\nS1RUlERFRUlwcLB07dpV9u7dq3tv+vTpFT6/a9cuefHFF3Xv2Ww2eemll+56Pi0tTWJiYnTvde3a\nVU6fPn3X84WFhTJgwADdeyIijRo1kiFDhsiUKVOksLDQkIaISOfOnSU3N1dERE6dOiV9+vSxf/Tu\n3Vv33s8//yyPPPKI1K5dW2w2mzRt2lSaNm0qs2fPlhs3buje+yVGXAiG+xZ9rVu3rsLnf/zxR1mz\nZo2urVatWlV45cnNmzfLtGnTdG2JiMTFxUlmZuZdzxcUFMjMmTN175Xx8/OTiIgIWb9+vWENEZFx\n48bZ95s5OTkyZ84c+0dycrLuvZs3b8rixYtl4MCB0r59ewkPD5cRI0bIl19+qXvr14waNUr399yz\nZ4907NhRPD09JTIyUrKzs+WRRx6R3r1726+SrJfXX39dzp07JyIihw4dkp49e4qXl5d06dJF9u/f\nr2tLRCQvL0+mT58ubdq0EW9vb/H29pY2bdrI9OnTJS8vT/eeK/crIty36O1+3be4+35FxPX7Fmc4\nPIls3769/R/Ox44dE09PT/n5558lLy9P2rdvr/uG3X4Fw27dukl2draIiJw/f17CwsJ077Vv317+\n+9//3vX8rl27DBlfkyZNKnz+zJkz0rRpU917ISEhEhcXJwkJCeVuNyAiEhwcrHvvzt+j/v372z/v\n0KGD7j0RkYCAABERWb9+vTz44IOydu1aQzp3jq1du3ayd+9e+fbbbw25Ct9DDz1k3/GuXbtWnnvu\nObl69arMmjVL/vSnP+nea9mypSQlJVW4czJiEsl9i77utW85fPhwubHroVmzZhISEiIpKSnlni8p\nKTFkv3Ln9+v2H7gZ8XtXJiAgQC5duiRTpkyR4cOHy/Hjxw3p3H514NLSUmnevLksWrRI/va3v0nj\nxo11740dO1Zmz54taWlp8vTTT0tycrKkpqZKVFSUvPHGG7r34uPj5dNPP73r7yARY/YtERERkpaW\n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\n4t7+MLQAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x6c10110>"
]
}
],
"prompt_number": 70
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment