{ "metadata": { "name": "", "signature": "sha256:48984802b30a95b6bf01c11b6b871a2468a65dd8f3c37cf9714186c1134d8d0c" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Load monthly, historical precipitation data from the California Department\n", "of Water Resources.\n", "The tables are linked from http://cdec.water.ca.gov/cgi-progs/prevprecip/PRECIPOUT,\n", "e.g. http://cdec.water.ca.gov/cgi-progs/reports/PRECIPOUT.2011." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import lxml.html\n", "import numpy as np\n", "import pandas as pd" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# constants\n", "REGION = 'region'\n", "SUBREGION = 'subregion'\n", "DATAROW = 'datarow'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get some example rows for testing functions later." ] }, { "cell_type": "code", "collapsed": false, "input": [ "h = lxml.html.parse('http://cdec.water.ca.gov/cgi-progs/reports/PRECIPOUT.2011')\n", "table = h.xpath('//*[@id=\"main_content\"]/div/div[1]/table')[0]\n", "rows = table.getchildren()\n", "region_row = rows[0]\n", "subregion_row = rows[2]\n", "station_row = rows[3]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "def get_table(url):\n", " \"\"\"Return HTML table from URL.\"\"\"\n", " xpath = '//*[@id=\"main_content\"]/div/div[1]/table'\n", " return lxml.html.parse(url).xpath(xpath)[0]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "def row_type(row):\n", " \"\"\"Categorize a row.\"\"\"\n", " cells = row.iterchildren()\n", " \n", " if next(cells).tag == 'th':\n", " # first cell is a element\n", " return REGION\n", " elif next(cells).text_content().strip() == ' ':\n", " # second cell is empty\n", " return SUBREGION\n", " else:\n", " return DATAROW\n", "\n", "assert row_type(region_row) == REGION, row_type(region_row)\n", "assert row_type(subregion_row) == SUBREGION, row_type(subregion_row)\n", "assert row_type(station_row) == DATAROW, row_type(station_row)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "def get_region(row):\n", " \"\"\"Get region name from a REGION row.\"\"\"\n", " return row.text_content().strip()\n", "\n", "assert get_region(region_row) == 'NORTH COAST'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "def get_subregion(row):\n", " \"\"\"Parse subregion and month names from SUBREGION row.\"\"\"\n", " cell_text = [cell.text_content().strip() for cell in row]\n", " return cell_text[0], cell_text[3:]\n", "\n", "assert get_subregion(subregion_row)[0] == 'SMITH RIVER'\n", "assert get_subregion(subregion_row)[1] == \\\n", " 'Oct Nov\tDec\tJan\tFeb\tMar\tApr\tMay\tJun\tJul\tAug\tSep\tOct-Sep\tWat-Yr'.split()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "def get_elev_abbrev(cell):\n", " \"\"\"Parse elevation and station abbreviation.\"\"\"\n", " tc = cell.text_content().strip()\n", " return int(tc[:-6]), tc[-4:-1]\n", "\n", "assert get_elev_abbrev(station_row.getchildren()[1]) == (384, 'GAS')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "def get_precip_data(cell):\n", " \"\"\"Parse a precip data cell.\"\"\"\n", " tc = [s.strip() for s in cell.itertext()]\n", " for i, t in enumerate(tc):\n", " if t in {'---', ''}:\n", " tc[i] = float('nan')\n", " elif t.endswith('%'):\n", " tc[i] = float(t[:-1])\n", " else:\n", " tc[i] = float(t)\n", " return tc\n", "\n", "assert get_precip_data(station_row.getchildren()[3]) == [8.4, 7.53, 112]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "def iter_months(months, cells):\n", " \"\"\"Iterate over months and month data cells.\"\"\"\n", " for m, c in zip(months, cells):\n", " yield m, get_precip_data(c)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "def table_to_frame(table, year):\n", " \"\"\"Turn HTML table of precip data into a DataFrame.\"\"\"\n", " datarows = []\n", " rows = table.iterchildren()\n", "\n", " while True:\n", " try:\n", " r = next(rows)\n", " except StopIteration:\n", " break\n", "\n", " rt = row_type(r)\n", "\n", " if rt == REGION:\n", " region = get_region(r)\n", " next(rows) # burn the \"Station Elev.\" rows\n", " elif rt == SUBREGION:\n", " subregion, months = get_subregion(r)\n", " elif rt == DATAROW:\n", " cells = r.iterchildren()\n", "\n", " station = next(cells).text_content().strip()\n", " elev, abbrev = get_elev_abbrev(next(cells))\n", " next(cells) # burn the Precip Average %-avg cell\n", "\n", " for m, values in iter_months(months, cells):\n", " dr = [region, subregion, station, abbrev, elev, year, m]\n", " datarows.append(dr + list(values))\n", " \n", " return pd.DataFrame(datarows, columns=[\n", " 'region', 'subregion', 'station', 'abbreviation', 'elevation',\n", " 'year', 'month', 'precip', 'avg precip', 'pct of avg'])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "years = [2011, 2012, 2013, 2014]\n", "url = 'http://cdec.water.ca.gov/cgi-progs/reports/PRECIPOUT.{}'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "def all_data(url, years):\n", " frames = []\n", "\n", " for y in years:\n", " df = table_to_frame(get_table(url.format(y)), y)\n", " frames.append(df)\n", "\n", " return pd.concat(frames, ignore_index=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "df = all_data(url, years)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "df" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
regionsubregionstationabbreviationelevationyearmonthprecipavg precippct of avg
0 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Oct 8.40 7.53 112
1 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Nov 12.42 14.14 88
2 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Dec 25.00 16.37 153
3 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Jan 4.91 16.45 30
4 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Feb 9.53 11.95 80
5 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Mar 26.47 11.08 239
6 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Apr 10.25 6.47 158
7 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 May 4.67 4.43 105
8 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Jun 1.62 0.83 195
9 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Jul 0.39 0.56 70
10 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Aug 0.00 0.68 0
11 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Sep 0.34 1.84 18
12 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Oct-Sep 104.00 92.33 113
13 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS 384 2011 Wat-Yr NaN 92.33 113
14 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Oct 4.34 1.40 310
15 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Nov 1.66 2.75 60
16 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Dec 5.65 3.67 154
17 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Jan 0.91 3.68 25
18 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Feb 1.06 2.58 41
19 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Mar 5.42 2.14 253
20 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Apr 0.96 1.38 70
21 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 May 1.54 0.83 186
22 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Jun 1.42 0.67 212
23 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Jul 0.42 0.18 233
24 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Aug 0.23 0.29 79
25 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Sep 0.09 0.48 19
26 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Oct-Sep 23.70 20.05 118
27 NORTH COAST KLAMATH RIVER Callahan CAL 3185 2011 Wat-Yr NaN 20.05 118
28 NORTH COAST KLAMATH RIVER Fort Jones RS FJN 2725 2011 Oct 3.25 1.50 217
29 NORTH COAST KLAMATH RIVER Fort Jones RS FJN 2725 2011 Nov 2.64 2.90 91
.................................
9650 COLORADO RIVER COLORADO DESERT Blythe BLY 390 2014 Jul 0.00 0.19 0
9651 COLORADO RIVER COLORADO DESERT Blythe BLY 390 2014 Aug 0.49 0.68 72
9652 COLORADO RIVER COLORADO DESERT Blythe BLY 390 2014 Oct-Aug 1.38 3.23 43
9653 COLORADO RIVER COLORADO DESERT Blythe BLY 390 2014 Wat-Yr NaN 3.52 39
9654 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Oct 0.03 0.24 12
9655 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Nov NaN 0.24 NaN
9656 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Dec NaN 0.38 NaN
9657 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Jan 0.00 0.33 0
9658 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Feb 0.00 0.27 0
9659 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Mar NaN 0.27 NaN
9660 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Apr NaN 0.10 NaN
9661 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 May NaN 0.01 NaN
9662 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Jun 0.00 0.01 0
9663 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Jul 0.12 0.24 50
9664 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Aug NaN 0.32 NaN
9665 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Oct-Aug NaN 2.41 NaN
9666 COLORADO RIVER COLORADO DESERT Niland NLD -60 2014 Wat-Yr NaN 2.63 NaN
9667 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Oct 0.01 0.23 4
9668 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Nov 0.95 0.18 528
9669 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Dec 0.00 0.43 0
9670 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Jan 0.00 0.38 0
9671 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Feb 0.00 0.36 0
9672 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Mar 0.01 0.19 5
9673 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Apr 0.00 0.13 0
9674 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 May 0.00 0.01 0
9675 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Jun 0.00 0.00 NaN
9676 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Jul 0.00 0.10 0
9677 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Aug NaN 0.36 NaN
9678 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Oct-Aug NaN 2.37 NaN
9679 COLORADO RIVER COLORADO DESERT Imperial Valley IMP -64 2014 Wat-Yr NaN 2.73 NaN
\n", "

9680 rows \u00d7 10 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ " region subregion station abbreviation \\\n", "0 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "1 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "2 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "3 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "4 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "5 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "6 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "7 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "8 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "9 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "10 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "11 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "12 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "13 NORTH COAST SMITH RIVER Gasquet Ranger Station GAS \n", "14 NORTH COAST KLAMATH RIVER Callahan CAL \n", "15 NORTH COAST KLAMATH RIVER Callahan CAL \n", "16 NORTH COAST KLAMATH RIVER Callahan CAL \n", "17 NORTH COAST KLAMATH RIVER Callahan CAL \n", "18 NORTH COAST KLAMATH RIVER Callahan CAL \n", "19 NORTH COAST KLAMATH RIVER Callahan CAL \n", "20 NORTH COAST KLAMATH RIVER Callahan CAL \n", "21 NORTH COAST KLAMATH RIVER Callahan CAL \n", "22 NORTH COAST KLAMATH RIVER Callahan CAL \n", "23 NORTH COAST KLAMATH RIVER Callahan CAL \n", "24 NORTH COAST KLAMATH RIVER Callahan CAL \n", "25 NORTH COAST KLAMATH RIVER Callahan CAL \n", "26 NORTH COAST KLAMATH RIVER Callahan CAL \n", "27 NORTH COAST KLAMATH RIVER Callahan CAL \n", "28 NORTH COAST KLAMATH RIVER Fort Jones RS FJN \n", "29 NORTH COAST KLAMATH RIVER Fort Jones RS FJN \n", "... ... ... ... ... \n", "9650 COLORADO RIVER COLORADO DESERT Blythe BLY \n", "9651 COLORADO RIVER COLORADO DESERT Blythe BLY \n", "9652 COLORADO RIVER COLORADO DESERT Blythe BLY \n", "9653 COLORADO RIVER COLORADO DESERT Blythe BLY \n", "9654 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9655 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9656 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9657 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9658 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9659 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9660 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9661 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9662 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9663 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9664 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9665 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9666 COLORADO RIVER COLORADO DESERT Niland NLD \n", "9667 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9668 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9669 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9670 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9671 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9672 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9673 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9674 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9675 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9676 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9677 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9678 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "9679 COLORADO RIVER COLORADO DESERT Imperial Valley IMP \n", "\n", " elevation year month precip avg precip pct of avg \n", "0 384 2011 Oct 8.40 7.53 112 \n", "1 384 2011 Nov 12.42 14.14 88 \n", "2 384 2011 Dec 25.00 16.37 153 \n", "3 384 2011 Jan 4.91 16.45 30 \n", "4 384 2011 Feb 9.53 11.95 80 \n", "5 384 2011 Mar 26.47 11.08 239 \n", "6 384 2011 Apr 10.25 6.47 158 \n", "7 384 2011 May 4.67 4.43 105 \n", "8 384 2011 Jun 1.62 0.83 195 \n", "9 384 2011 Jul 0.39 0.56 70 \n", "10 384 2011 Aug 0.00 0.68 0 \n", "11 384 2011 Sep 0.34 1.84 18 \n", "12 384 2011 Oct-Sep 104.00 92.33 113 \n", "13 384 2011 Wat-Yr NaN 92.33 113 \n", "14 3185 2011 Oct 4.34 1.40 310 \n", "15 3185 2011 Nov 1.66 2.75 60 \n", "16 3185 2011 Dec 5.65 3.67 154 \n", "17 3185 2011 Jan 0.91 3.68 25 \n", "18 3185 2011 Feb 1.06 2.58 41 \n", "19 3185 2011 Mar 5.42 2.14 253 \n", "20 3185 2011 Apr 0.96 1.38 70 \n", "21 3185 2011 May 1.54 0.83 186 \n", "22 3185 2011 Jun 1.42 0.67 212 \n", "23 3185 2011 Jul 0.42 0.18 233 \n", "24 3185 2011 Aug 0.23 0.29 79 \n", "25 3185 2011 Sep 0.09 0.48 19 \n", "26 3185 2011 Oct-Sep 23.70 20.05 118 \n", "27 3185 2011 Wat-Yr NaN 20.05 118 \n", "28 2725 2011 Oct 3.25 1.50 217 \n", "29 2725 2011 Nov 2.64 2.90 91 \n", "... ... ... ... ... ... ... \n", "9650 390 2014 Jul 0.00 0.19 0 \n", "9651 390 2014 Aug 0.49 0.68 72 \n", "9652 390 2014 Oct-Aug 1.38 3.23 43 \n", "9653 390 2014 Wat-Yr NaN 3.52 39 \n", "9654 -60 2014 Oct 0.03 0.24 12 \n", "9655 -60 2014 Nov NaN 0.24 NaN \n", "9656 -60 2014 Dec NaN 0.38 NaN \n", "9657 -60 2014 Jan 0.00 0.33 0 \n", "9658 -60 2014 Feb 0.00 0.27 0 \n", "9659 -60 2014 Mar NaN 0.27 NaN \n", "9660 -60 2014 Apr NaN 0.10 NaN \n", "9661 -60 2014 May NaN 0.01 NaN \n", "9662 -60 2014 Jun 0.00 0.01 0 \n", "9663 -60 2014 Jul 0.12 0.24 50 \n", "9664 -60 2014 Aug NaN 0.32 NaN \n", "9665 -60 2014 Oct-Aug NaN 2.41 NaN \n", "9666 -60 2014 Wat-Yr NaN 2.63 NaN \n", "9667 -64 2014 Oct 0.01 0.23 4 \n", "9668 -64 2014 Nov 0.95 0.18 528 \n", "9669 -64 2014 Dec 0.00 0.43 0 \n", "9670 -64 2014 Jan 0.00 0.38 0 \n", "9671 -64 2014 Feb 0.00 0.36 0 \n", "9672 -64 2014 Mar 0.01 0.19 5 \n", "9673 -64 2014 Apr 0.00 0.13 0 \n", "9674 -64 2014 May 0.00 0.01 0 \n", "9675 -64 2014 Jun 0.00 0.00 NaN \n", "9676 -64 2014 Jul 0.00 0.10 0 \n", "9677 -64 2014 Aug NaN 0.36 NaN \n", "9678 -64 2014 Oct-Aug NaN 2.37 NaN \n", "9679 -64 2014 Wat-Yr NaN 2.73 NaN \n", "\n", "[9680 rows x 10 columns]" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "df.to_csv('precip_data.csv', index=False)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "!head precip_data.csv" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "region,subregion,station,abbreviation,elevation,year,month,precip,avg precip,pct of avg\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Oct,8.4,7.53,112.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Nov,12.42,14.14,88.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Dec,25.0,16.37,153.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Jan,4.91,16.45,30.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Feb,9.53,11.95,80.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Mar,26.47,11.08,239.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Apr,10.25,6.47,158.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,May,4.67,4.43,105.0\r\n", "NORTH COAST,SMITH RIVER,Gasquet Ranger Station,GAS,384,2011,Jun,1.62,0.83,195.0\r\n" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 } ], "metadata": {} } ] }