Skip to content

Instantly share code, notes, and snippets.

@phobson
Created June 6, 2013 18:38
Show Gist options
  • Save phobson/5723849 to your computer and use it in GitHub Desktop.
Save phobson/5723849 to your computer and use it in GitHub Desktop.
Pandas Basics
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "Basics of DataFrames (Labeled Arrays)"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Basics of computer math have typically been arrays (*N*-dimensional matrices). \n",
"# The only metadata we have about the elements are where they are in the array. \n",
"\n",
"# So let's define a 3x2 and a 2x3 array\n",
"\n",
"#### Array 1:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import StringIO\n",
"\n",
"from IPython.display import HTML\n",
"import numpy as np\n",
"import pandas\n",
"\n",
"array1 = np.array([[1, 3],\n",
" [4, 6],\n",
" [7, 9]])\n",
"array1"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"c:\\Python27\\lib\\site-packages\\pytz\\__init__.py:35: UserWarning: Module IPython was already imported from c:\\users\\phobson\\work\\ipython\\IPython\\__init__.pyc, but c:\\python27\\lib\\site-packages\\ipython-0.13.1.dev-py2.7.egg is being added to sys.path\n",
" from pkg_resources import resource_stream\n"
]
},
{
"output_type": "pyout",
"prompt_number": 1,
"text": [
"array([[1, 3],\n",
" [4, 6],\n",
" [7, 9]])"
]
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Array 2:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"array2 = np.array([[1, 2, 3],\n",
" [4, 5, 6]])\n",
"array2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 2,
"text": [
"array([[1, 2, 3],\n",
" [4, 5, 6]])"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## But these arrays are incompatible for basic operations. Watch what happens when we try to add them:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"array1 + array2"
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "operands could not be broadcast together with shapes (3,2) (2,3) ",
"output_type": "pyerr",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-3-532fc8ad18ec>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0marray1\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0marray2\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mValueError\u001b[0m: operands could not be broadcast together with shapes (3,2) (2,3) "
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataFrame give us basic abilities to label each index (rows, columns) of the data. And then `pandas` makes smart decisions about aligning the data appropriately\n",
"### So let's give `array1` some row and column labels"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df1 = pandas.DataFrame(array1, columns=['A', 'C'], index=['X', 'Y', 'Z'])\n",
"df1"
],
"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>A</th>\n",
" <th>C</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>X</th>\n",
" <td> 1</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Y</th>\n",
" <td> 4</td>\n",
" <td> 6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Z</th>\n",
" <td> 7</td>\n",
" <td> 9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 4,
"text": [
" A C\n",
"X 1 3\n",
"Y 4 6\n",
"Z 7 9"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### And do the same for `array2`"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df2 = pandas.DataFrame(array2, columns=['A', 'B', 'C'], index=['X', 'Z'])\n",
"df2"
],
"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>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>X</th>\n",
" <td> 1</td>\n",
" <td> 2</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Z</th>\n",
" <td> 4</td>\n",
" <td> 5</td>\n",
" <td> 6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 5,
"text": [
" A B C\n",
"X 1 2 3\n",
"Z 4 5 6"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Now when we try to add them, `pandas` will align the data on the indices on both axes and perform the operation."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df1 + df2"
],
"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>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>X</th>\n",
" <td> 2</td>\n",
" <td>NaN</td>\n",
" <td> 6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Y</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Z</th>\n",
" <td> 11</td>\n",
" <td>NaN</td>\n",
" <td> 15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 6,
"text": [
" A B C\n",
"X 2 NaN 6\n",
"Y NaN NaN NaN\n",
"Z 11 NaN 15"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df2"
],
"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>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>X</th>\n",
" <td> 1</td>\n",
" <td> 2</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Z</th>\n",
" <td> 4</td>\n",
" <td> 5</td>\n",
" <td> 6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 7,
"text": [
" A B C\n",
"X 1 2 3\n",
"Z 4 5 6"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"panel12 = pandas.Panel({'Day 1':df1, 'Day 2':df2})"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"panel12.ix['Day 2']"
],
"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>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>X</th>\n",
" <td> 1</td>\n",
" <td> 2</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Y</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Z</th>\n",
" <td> 4</td>\n",
" <td> 5</td>\n",
" <td> 6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 9,
"text": [
" A B C\n",
"X 1 2 3\n",
"Y NaN NaN NaN\n",
"Z 4 5 6"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# You'll have to trust me on this, but this is HUGE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What if we had some stormwater concentrations for various parameters from different landuses within watersheds, like this:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"conc_string = StringIO.StringIO(\"\"\"\\\n",
"Land Use,Parameter,1E,1N,1S,2\n",
"Airfield,BOD5,0.418,0.118,0.226,1.063\n",
"Airfield,Ortho P,0.002,0.001,0.001,0.002\n",
"Airfield,TSS,1.773,11.47,0.862,0.183\n",
"Airfield,Zn,0.1,0.1,4.95,0.001\n",
"\"Commercial\",BOD5,0.036,0.0419,,0.315\n",
"\"Commercial\",Cu,9.17,7.34,,0.42\n",
"\"Commercial\",O&G,0.0385,0.127,,0.263\n",
"Open Space,TSS,0.371,3.01,1.209,0.147\n",
"Open Space,Zn,0.127,0.69,0.0132,0.7\n",
"\"Parking Lot\",BOD5,0.924,0.0668,2.603,3.19\n",
"\"Parking Lot\",O&G,1.02,0.149,1.347,1.88\n",
"\"Rooftops\",BOD5,0.135,1.00,0.0562,0.310\"\"\")\n",
"concentration = pandas.read_csv(conc_string, index_col=[0,1])\n",
"concentration.columns.names = ['Watersheds']\n",
"concentration"
],
"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>Watersheds</th>\n",
" <th>1E</th>\n",
" <th>1N</th>\n",
" <th>1S</th>\n",
" <th>2</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">Airfield</th>\n",
" <th>BOD5</th>\n",
" <td> 0.4180</td>\n",
" <td> 0.1180</td>\n",
" <td> 0.2260</td>\n",
" <td> 1.063</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 0.0020</td>\n",
" <td> 0.0010</td>\n",
" <td> 0.0010</td>\n",
" <td> 0.002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 1.7730</td>\n",
" <td> 11.4700</td>\n",
" <td> 0.8620</td>\n",
" <td> 0.183</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.1000</td>\n",
" <td> 0.1000</td>\n",
" <td> 4.9500</td>\n",
" <td> 0.001</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Commercial</th>\n",
" <th>BOD5</th>\n",
" <td> 0.0360</td>\n",
" <td> 0.0419</td>\n",
" <td> NaN</td>\n",
" <td> 0.315</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 9.1700</td>\n",
" <td> 7.3400</td>\n",
" <td> NaN</td>\n",
" <td> 0.420</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 0.0385</td>\n",
" <td> 0.1270</td>\n",
" <td> NaN</td>\n",
" <td> 0.263</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Open Space</th>\n",
" <th>TSS</th>\n",
" <td> 0.3710</td>\n",
" <td> 3.0100</td>\n",
" <td> 1.2090</td>\n",
" <td> 0.147</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.1270</td>\n",
" <td> 0.6900</td>\n",
" <td> 0.0132</td>\n",
" <td> 0.700</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Parking Lot</th>\n",
" <th>BOD5</th>\n",
" <td> 0.9240</td>\n",
" <td> 0.0668</td>\n",
" <td> 2.6030</td>\n",
" <td> 3.190</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 1.0200</td>\n",
" <td> 0.1490</td>\n",
" <td> 1.3470</td>\n",
" <td> 1.880</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rooftops</th>\n",
" <th>BOD5</th>\n",
" <td> 0.1350</td>\n",
" <td> 1.0000</td>\n",
" <td> 0.0562</td>\n",
" <td> 0.310</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 10,
"text": [
"Watersheds 1E 1N 1S 2\n",
"Land Use Parameter \n",
"Airfield BOD5 0.4180 0.1180 0.2260 1.063\n",
" Ortho P 0.0020 0.0010 0.0010 0.002\n",
" TSS 1.7730 11.4700 0.8620 0.183\n",
" Zn 0.1000 0.1000 4.9500 0.001\n",
"Commercial BOD5 0.0360 0.0419 NaN 0.315\n",
" Cu 9.1700 7.3400 NaN 0.420\n",
" O&G 0.0385 0.1270 NaN 0.263\n",
"Open Space TSS 0.3710 3.0100 1.2090 0.147\n",
" Zn 0.1270 0.6900 0.0132 0.700\n",
"Parking Lot BOD5 0.9240 0.0668 2.6030 3.190\n",
" O&G 1.0200 0.1490 1.3470 1.880\n",
"Rooftops BOD5 0.1350 1.0000 0.0562 0.310"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## And what if we had runoff volumes from each landuse within the watersheds"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"volumes_string = StringIO.StringIO(\"\"\"\\\n",
"Land Use,1E,1N,1S,2,3W,4N,4S,5\n",
"Airfield,511,23,62,94,354,10,56,3\n",
"Commercial,50,174,2,165,101,44,73,66\n",
"Open Space,1,5,2,4,10,56,2,3\n",
"\"Parking Lot\",332,514,252,171,657,56,99,200\n",
"Rooftops,81,28,52,3,5,85,20,10\"\"\")\n",
"volumes = pandas.read_csv(volumes_string, index_col=0)\n",
"volumes.columns.names = ['Watersheds']\n",
"volumes"
],
"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>Watersheds</th>\n",
" <th>1E</th>\n",
" <th>1N</th>\n",
" <th>1S</th>\n",
" <th>2</th>\n",
" <th>3W</th>\n",
" <th>4N</th>\n",
" <th>4S</th>\n",
" <th>5</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Airfield</th>\n",
" <td> 511</td>\n",
" <td> 23</td>\n",
" <td> 62</td>\n",
" <td> 94</td>\n",
" <td> 354</td>\n",
" <td> 10</td>\n",
" <td> 56</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Commercial</th>\n",
" <td> 50</td>\n",
" <td> 174</td>\n",
" <td> 2</td>\n",
" <td> 165</td>\n",
" <td> 101</td>\n",
" <td> 44</td>\n",
" <td> 73</td>\n",
" <td> 66</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Open Space</th>\n",
" <td> 1</td>\n",
" <td> 5</td>\n",
" <td> 2</td>\n",
" <td> 4</td>\n",
" <td> 10</td>\n",
" <td> 56</td>\n",
" <td> 2</td>\n",
" <td> 3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Parking Lot</th>\n",
" <td> 332</td>\n",
" <td> 514</td>\n",
" <td> 252</td>\n",
" <td> 171</td>\n",
" <td> 657</td>\n",
" <td> 56</td>\n",
" <td> 99</td>\n",
" <td> 200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rooftops</th>\n",
" <td> 81</td>\n",
" <td> 28</td>\n",
" <td> 52</td>\n",
" <td> 3</td>\n",
" <td> 5</td>\n",
" <td> 85</td>\n",
" <td> 20</td>\n",
" <td> 10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 11,
"text": [
"Watersheds 1E 1N 1S 2 3W 4N 4S 5\n",
"Land Use \n",
"Airfield 511 23 62 94 354 10 56 3\n",
"Commercial 50 174 2 165 101 44 73 66\n",
"Open Space 1 5 2 4 10 56 2 3\n",
"Parking Lot 332 514 252 171 657 56 99 200\n",
"Rooftops 81 28 52 3 5 85 20 10"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## So now `pandas` can use these labeled indices to align and broadcast our data for us. That means computing the exported mass during this storm would be as simple as:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"mass = concentration.mul(volumes, level='Land Use')\n",
"np.round(mass,2)"
],
"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>Watersheds</th>\n",
" <th>1E</th>\n",
" <th>1N</th>\n",
" <th>1S</th>\n",
" <th>2</th>\n",
" <th>3W</th>\n",
" <th>4N</th>\n",
" <th>4S</th>\n",
" <th>5</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">Airfield</th>\n",
" <th>BOD5</th>\n",
" <td> 213.60</td>\n",
" <td> 2.71</td>\n",
" <td> 14.01</td>\n",
" <td> 99.92</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 1.02</td>\n",
" <td> 0.02</td>\n",
" <td> 0.06</td>\n",
" <td> 0.19</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 906.00</td>\n",
" <td> 263.81</td>\n",
" <td> 53.44</td>\n",
" <td> 17.20</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 51.10</td>\n",
" <td> 2.30</td>\n",
" <td> 306.90</td>\n",
" <td> 0.09</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Commercial</th>\n",
" <th>BOD5</th>\n",
" <td> 1.80</td>\n",
" <td> 7.29</td>\n",
" <td> NaN</td>\n",
" <td> 51.98</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 458.50</td>\n",
" <td> 1277.16</td>\n",
" <td> NaN</td>\n",
" <td> 69.30</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 1.92</td>\n",
" <td> 22.10</td>\n",
" <td> NaN</td>\n",
" <td> 43.40</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Open Space</th>\n",
" <th>TSS</th>\n",
" <td> 0.37</td>\n",
" <td> 15.05</td>\n",
" <td> 2.42</td>\n",
" <td> 0.59</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.13</td>\n",
" <td> 3.45</td>\n",
" <td> 0.03</td>\n",
" <td> 2.80</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Parking Lot</th>\n",
" <th>BOD5</th>\n",
" <td> 306.77</td>\n",
" <td> 34.34</td>\n",
" <td> 655.96</td>\n",
" <td> 545.49</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 338.64</td>\n",
" <td> 76.59</td>\n",
" <td> 339.44</td>\n",
" <td> 321.48</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rooftops</th>\n",
" <th>BOD5</th>\n",
" <td> 10.94</td>\n",
" <td> 28.00</td>\n",
" <td> 2.92</td>\n",
" <td> 0.93</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 12,
"text": [
"Watersheds 1E 1N 1S 2 3W 4N 4S 5\n",
"Land Use Parameter \n",
"Airfield BOD5 213.60 2.71 14.01 99.92 NaN NaN NaN NaN\n",
" Ortho P 1.02 0.02 0.06 0.19 NaN NaN NaN NaN\n",
" TSS 906.00 263.81 53.44 17.20 NaN NaN NaN NaN\n",
" Zn 51.10 2.30 306.90 0.09 NaN NaN NaN NaN\n",
"Commercial BOD5 1.80 7.29 NaN 51.98 NaN NaN NaN NaN\n",
" Cu 458.50 1277.16 NaN 69.30 NaN NaN NaN NaN\n",
" O&G 1.92 22.10 NaN 43.40 NaN NaN NaN NaN\n",
"Open Space TSS 0.37 15.05 2.42 0.59 NaN NaN NaN NaN\n",
" Zn 0.13 3.45 0.03 2.80 NaN NaN NaN NaN\n",
"Parking Lot BOD5 306.77 34.34 655.96 545.49 NaN NaN NaN NaN\n",
" O&G 338.64 76.59 339.44 321.48 NaN NaN NaN NaN\n",
"Rooftops BOD5 10.94 28.00 2.92 0.93 NaN NaN NaN NaN"
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Now let's say we have a second file the remaining subwatersheds\n",
"### (but different landuse/parameter results)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"conc_string2 = StringIO.StringIO(\"\"\"\\\n",
"Land Use,Parameter,3W,4N,4S,5\n",
"Airfield,BOD5,0.418,0.118,0.226,1.063\n",
"Airfield,Zn,0.001,0.001,4.95E-05,0.001\n",
"\"Commercial\",BOD5,0.036,0.0419,,0.315\n",
"\"Commercial\",Cu,4.37,7.34,,0.39\n",
"Open Space,TSS,0.371,3.01,1.209,0.147\n",
"Open Space,Zn,0.127,0.069,0.132,0.2\n",
"\"Parking Lot\",Ortho P,0.924,0.0668,2.603,3.19\n",
"\"Rooftops\",BOD5,0.135,1.00,0.0562,0.310\"\"\")\n",
"concentration2 = pandas.read_csv(conc_string2, index_col=[0,1])\n",
"concentration2.columns.names = ['Watersheds']\n",
"concentration2"
],
"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>Watersheds</th>\n",
" <th>3W</th>\n",
" <th>4N</th>\n",
" <th>4S</th>\n",
" <th>5</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Airfield</th>\n",
" <th>BOD5</th>\n",
" <td> 0.418</td>\n",
" <td> 0.1180</td>\n",
" <td> 0.226000</td>\n",
" <td> 1.063</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.001</td>\n",
" <td> 0.0010</td>\n",
" <td> 0.000049</td>\n",
" <td> 0.001</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Commercial</th>\n",
" <th>BOD5</th>\n",
" <td> 0.036</td>\n",
" <td> 0.0419</td>\n",
" <td> NaN</td>\n",
" <td> 0.315</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 4.370</td>\n",
" <td> 7.3400</td>\n",
" <td> NaN</td>\n",
" <td> 0.390</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Open Space</th>\n",
" <th>TSS</th>\n",
" <td> 0.371</td>\n",
" <td> 3.0100</td>\n",
" <td> 1.209000</td>\n",
" <td> 0.147</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.127</td>\n",
" <td> 0.0690</td>\n",
" <td> 0.132000</td>\n",
" <td> 0.200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Parking Lot</th>\n",
" <th>Ortho P</th>\n",
" <td> 0.924</td>\n",
" <td> 0.0668</td>\n",
" <td> 2.603000</td>\n",
" <td> 3.190</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rooftops</th>\n",
" <th>BOD5</th>\n",
" <td> 0.135</td>\n",
" <td> 1.0000</td>\n",
" <td> 0.056200</td>\n",
" <td> 0.310</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 13,
"text": [
"Watersheds 3W 4N 4S 5\n",
"Land Use Parameter \n",
"Airfield BOD5 0.418 0.1180 0.226000 1.063\n",
" Zn 0.001 0.0010 0.000049 0.001\n",
"Commercial BOD5 0.036 0.0419 NaN 0.315\n",
" Cu 4.370 7.3400 NaN 0.390\n",
"Open Space TSS 0.371 3.0100 1.209000 0.147\n",
" Zn 0.127 0.0690 0.132000 0.200\n",
"Parking Lot Ortho P 0.924 0.0668 2.603000 3.190\n",
"Rooftops BOD5 0.135 1.0000 0.056200 0.310"
]
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## We can (outer) join it to create a unified dataset"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"allconc = concentration.join(concentration2, how='outer')\n",
"HTML(allconc.to_html())"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Watersheds</th>\n",
" <th>1E</th>\n",
" <th>1N</th>\n",
" <th>1S</th>\n",
" <th>2</th>\n",
" <th>3W</th>\n",
" <th>4N</th>\n",
" <th>4S</th>\n",
" <th>5</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">Airfield</th>\n",
" <th>BOD5</th>\n",
" <td> 0.4180</td>\n",
" <td> 0.1180</td>\n",
" <td> 0.2260</td>\n",
" <td> 1.063</td>\n",
" <td> 0.418</td>\n",
" <td> 0.1180</td>\n",
" <td> 0.226000</td>\n",
" <td> 1.063</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 0.0020</td>\n",
" <td> 0.0010</td>\n",
" <td> 0.0010</td>\n",
" <td> 0.002</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 1.7730</td>\n",
" <td> 11.4700</td>\n",
" <td> 0.8620</td>\n",
" <td> 0.183</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.1000</td>\n",
" <td> 0.1000</td>\n",
" <td> 4.9500</td>\n",
" <td> 0.001</td>\n",
" <td> 0.001</td>\n",
" <td> 0.0010</td>\n",
" <td> 0.000049</td>\n",
" <td> 0.001</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Commercial</th>\n",
" <th>BOD5</th>\n",
" <td> 0.0360</td>\n",
" <td> 0.0419</td>\n",
" <td> NaN</td>\n",
" <td> 0.315</td>\n",
" <td> 0.036</td>\n",
" <td> 0.0419</td>\n",
" <td> NaN</td>\n",
" <td> 0.315</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 9.1700</td>\n",
" <td> 7.3400</td>\n",
" <td> NaN</td>\n",
" <td> 0.420</td>\n",
" <td> 4.370</td>\n",
" <td> 7.3400</td>\n",
" <td> NaN</td>\n",
" <td> 0.390</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 0.0385</td>\n",
" <td> 0.1270</td>\n",
" <td> NaN</td>\n",
" <td> 0.263</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Open Space</th>\n",
" <th>TSS</th>\n",
" <td> 0.3710</td>\n",
" <td> 3.0100</td>\n",
" <td> 1.2090</td>\n",
" <td> 0.147</td>\n",
" <td> 0.371</td>\n",
" <td> 3.0100</td>\n",
" <td> 1.209000</td>\n",
" <td> 0.147</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.1270</td>\n",
" <td> 0.6900</td>\n",
" <td> 0.0132</td>\n",
" <td> 0.700</td>\n",
" <td> 0.127</td>\n",
" <td> 0.0690</td>\n",
" <td> 0.132000</td>\n",
" <td> 0.200</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Parking Lot</th>\n",
" <th>BOD5</th>\n",
" <td> 0.9240</td>\n",
" <td> 0.0668</td>\n",
" <td> 2.6030</td>\n",
" <td> 3.190</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 1.0200</td>\n",
" <td> 0.1490</td>\n",
" <td> 1.3470</td>\n",
" <td> 1.880</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> NaN</td>\n",
" <td> 0.924</td>\n",
" <td> 0.0668</td>\n",
" <td> 2.603000</td>\n",
" <td> 3.190</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rooftops</th>\n",
" <th>BOD5</th>\n",
" <td> 0.1350</td>\n",
" <td> 1.0000</td>\n",
" <td> 0.0562</td>\n",
" <td> 0.310</td>\n",
" <td> 0.135</td>\n",
" <td> 1.0000</td>\n",
" <td> 0.056200</td>\n",
" <td> 0.310</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"output_type": "pyout",
"prompt_number": 14,
"text": [
"<IPython.core.display.HTML at 0x6412450>"
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Compute loads again"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"allloads = allconc.mul(volumes, level='Land Use')\n",
"allloads = allloads.fillna(0)\n",
"HTML(allloads.to_html())"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Watersheds</th>\n",
" <th>1E</th>\n",
" <th>1N</th>\n",
" <th>1S</th>\n",
" <th>2</th>\n",
" <th>3W</th>\n",
" <th>4N</th>\n",
" <th>4S</th>\n",
" <th>5</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">Airfield</th>\n",
" <th>BOD5</th>\n",
" <td> 213.598</td>\n",
" <td> 2.7140</td>\n",
" <td> 14.0120</td>\n",
" <td> 99.922</td>\n",
" <td> 147.972</td>\n",
" <td> 1.1800</td>\n",
" <td> 12.656000</td>\n",
" <td> 3.189</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 1.022</td>\n",
" <td> 0.0230</td>\n",
" <td> 0.0620</td>\n",
" <td> 0.188</td>\n",
" <td> 0.000</td>\n",
" <td> 0.0000</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 906.003</td>\n",
" <td> 263.8100</td>\n",
" <td> 53.4440</td>\n",
" <td> 17.202</td>\n",
" <td> 0.000</td>\n",
" <td> 0.0000</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 51.100</td>\n",
" <td> 2.3000</td>\n",
" <td> 306.9000</td>\n",
" <td> 0.094</td>\n",
" <td> 0.354</td>\n",
" <td> 0.0100</td>\n",
" <td> 0.002772</td>\n",
" <td> 0.003</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Commercial</th>\n",
" <th>BOD5</th>\n",
" <td> 1.800</td>\n",
" <td> 7.2906</td>\n",
" <td> 0.0000</td>\n",
" <td> 51.975</td>\n",
" <td> 3.636</td>\n",
" <td> 1.8436</td>\n",
" <td> 0.000000</td>\n",
" <td> 20.790</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 458.500</td>\n",
" <td> 1277.1600</td>\n",
" <td> 0.0000</td>\n",
" <td> 69.300</td>\n",
" <td> 441.370</td>\n",
" <td> 322.9600</td>\n",
" <td> 0.000000</td>\n",
" <td> 25.740</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 1.925</td>\n",
" <td> 22.0980</td>\n",
" <td> 0.0000</td>\n",
" <td> 43.395</td>\n",
" <td> 0.000</td>\n",
" <td> 0.0000</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Open Space</th>\n",
" <th>TSS</th>\n",
" <td> 0.371</td>\n",
" <td> 15.0500</td>\n",
" <td> 2.4180</td>\n",
" <td> 0.588</td>\n",
" <td> 3.710</td>\n",
" <td> 168.5600</td>\n",
" <td> 2.418000</td>\n",
" <td> 0.441</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 0.127</td>\n",
" <td> 3.4500</td>\n",
" <td> 0.0264</td>\n",
" <td> 2.800</td>\n",
" <td> 1.270</td>\n",
" <td> 3.8640</td>\n",
" <td> 0.264000</td>\n",
" <td> 0.600</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Parking Lot</th>\n",
" <th>BOD5</th>\n",
" <td> 306.768</td>\n",
" <td> 34.3352</td>\n",
" <td> 655.9560</td>\n",
" <td> 545.490</td>\n",
" <td> 0.000</td>\n",
" <td> 0.0000</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 338.640</td>\n",
" <td> 76.5860</td>\n",
" <td> 339.4440</td>\n",
" <td> 321.480</td>\n",
" <td> 0.000</td>\n",
" <td> 0.0000</td>\n",
" <td> 0.000000</td>\n",
" <td> 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 0.000</td>\n",
" <td> 0.0000</td>\n",
" <td> 0.0000</td>\n",
" <td> 0.000</td>\n",
" <td> 607.068</td>\n",
" <td> 3.7408</td>\n",
" <td> 257.697000</td>\n",
" <td> 638.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rooftops</th>\n",
" <th>BOD5</th>\n",
" <td> 10.935</td>\n",
" <td> 28.0000</td>\n",
" <td> 2.9224</td>\n",
" <td> 0.930</td>\n",
" <td> 0.675</td>\n",
" <td> 85.0000</td>\n",
" <td> 1.124000</td>\n",
" <td> 3.100</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"output_type": "pyout",
"prompt_number": 15,
"text": [
"<IPython.core.display.HTML at 0x63baff0>"
]
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## And then easily sum the load for each parameter/landuse"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"landuse_load = pandas.DataFrame(allloads.sum(axis=1))\n",
"\n",
"\n",
"\n",
"landuse_load.rename(columns={0: 'Load (g)'}, inplace=True)\n",
"np.round(landuse_load)"
],
"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></th>\n",
" <th>Load (g)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"4\" valign=\"top\">Airfield</th>\n",
" <th>BOD5</th>\n",
" <td> 495</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 1240</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 361</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Commercial</th>\n",
" <th>BOD5</th>\n",
" <td> 87</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 2595</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 67</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Open Space</th>\n",
" <th>TSS</th>\n",
" <td> 194</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 12</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">Parking Lot</th>\n",
" <th>BOD5</th>\n",
" <td> 1543</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 1076</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 1507</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rooftops</th>\n",
" <th>BOD5</th>\n",
" <td> 133</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 16,
"text": [
" Load (g)\n",
"Land Use Parameter \n",
"Airfield BOD5 495\n",
" Ortho P 1\n",
" TSS 1240\n",
" Zn 361\n",
"Commercial BOD5 87\n",
" Cu 2595\n",
" O&G 67\n",
"Open Space TSS 194\n",
" Zn 12\n",
"Parking Lot BOD5 1543\n",
" O&G 1076\n",
" Ortho P 1507\n",
"Rooftops BOD5 133"
]
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## And now we can `groupby` the parameter column to figure out watershed-wide stats"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"loads = landuse_load.groupby(level='Parameter')\n",
"loads.sum() # total load for each parameter"
],
"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>Load (g)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>BOD5</th>\n",
" <td> 2257.813800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 2595.030000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 1143.568000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 1507.800800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 1434.015000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 373.165172</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 17,
"text": [
" Load (g)\n",
"Parameter \n",
"BOD5 2257.813800\n",
"Cu 2595.030000\n",
"O&G 1143.568000\n",
"Ortho P 1507.800800\n",
"TSS 1434.015000\n",
"Zn 373.165172"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"loads.max()"
],
"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>Load (g)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>BOD5</th>\n",
" <td> 1542.549200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 2595.030000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 1076.150000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 1506.505800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 1240.459000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 360.763772</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 18,
"text": [
" Load (g)\n",
"Parameter \n",
"BOD5 1542.549200\n",
"Cu 2595.030000\n",
"O&G 1076.150000\n",
"Ortho P 1506.505800\n",
"TSS 1240.459000\n",
"Zn 360.763772"
]
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Can even have `groupby` spit out the median (take *that*, SQL)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"loads.median() # median load"
],
"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>Load (g)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Parameter</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>BOD5</th>\n",
" <td> 313.964700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cu</th>\n",
" <td> 2595.030000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>O&amp;G</th>\n",
" <td> 571.784000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ortho P</th>\n",
" <td> 753.900400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TSS</th>\n",
" <td> 717.007500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zn</th>\n",
" <td> 186.582586</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 19,
"text": [
" Load (g)\n",
"Parameter \n",
"BOD5 313.964700\n",
"Cu 2595.030000\n",
"O&G 571.784000\n",
"Ortho P 753.900400\n",
"TSS 717.007500\n",
"Zn 186.582586"
]
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline\n",
"ax = loads.median().plot(kind='bar')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
"For more information, type 'help(pylab)'.\n"
]
},
{
"output_type": "display_data",
"svg": [
"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Created with matplotlib (http://matplotlib.org/) -->\n",
"<svg height=\"295pt\" version=\"1.1\" viewBox=\"0 0 377 295\" width=\"377pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <defs>\n",
" <style type=\"text/css\">\n",
"*{stroke-linecap:square;stroke-linejoin:round;}\n",
" </style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"\n",
"M0 295.041\n",
"L377.253 295.041\n",
"L377.253 0\n",
"L0 0\n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"\n",
"M35.2531 234.182\n",
"L370.053 234.182\n",
"L370.053 10.982\n",
"L35.2531 10.982\n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M48.6451 234.182\n",
"L88.8211 234.182\n",
"L88.8211 210.823\n",
"L48.6451 210.823\n",
"z\n",
"\" style=\"fill:#0000ff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M102.213 234.182\n",
"L142.389 234.182\n",
"L142.389 41.1118\n",
"L102.213 41.1118\n",
"z\n",
"\" style=\"fill:#0000ff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M155.781 234.182\n",
"L195.957 234.182\n",
"L195.957 191.641\n",
"L155.781 191.641\n",
"z\n",
"\" style=\"fill:#0000ff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M209.349 234.182\n",
"L249.525 234.182\n",
"L249.525 178.092\n",
"L209.349 178.092\n",
"z\n",
"\" style=\"fill:#0000ff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_7\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M262.917 234.182\n",
"L303.093 234.182\n",
"L303.093 180.837\n",
"L262.917 180.837\n",
"z\n",
"\" style=\"fill:#0000ff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_8\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M316.485 234.182\n",
"L356.661 234.182\n",
"L356.661 220.3\n",
"L316.485 220.3\n",
"z\n",
"\" style=\"fill:#0000ff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 234.182\n",
"L370.053 234.182\" style=\"fill:none;stroke:#000000;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;stroke-linecap:butt;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_2\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M68.7331 234.182\n",
"L68.7331 10.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_3\">\n",
" <defs>\n",
" <path d=\"\n",
"M0 0\n",
"L0 -4\" id=\"mcb557df647\" style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"68.733125\" xlink:href=\"#mcb557df647\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <defs>\n",
" <path d=\"\n",
"M0 0\n",
"L0 4\" id=\"mdad270ee8e\" style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"68.733125\" xlink:href=\"#mdad270ee8e\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- BOD5 -->\n",
" <defs>\n",
" <path d=\"\n",
"M39.4062 66.2188\n",
"Q28.6562 66.2188 22.3281 58.2031\n",
"Q16.0156 50.2031 16.0156 36.375\n",
"Q16.0156 22.6094 22.3281 14.5938\n",
"Q28.6562 6.59375 39.4062 6.59375\n",
"Q50.1406 6.59375 56.4219 14.5938\n",
"Q62.7031 22.6094 62.7031 36.375\n",
"Q62.7031 50.2031 56.4219 58.2031\n",
"Q50.1406 66.2188 39.4062 66.2188\n",
"M39.4062 74.2188\n",
"Q54.7344 74.2188 63.9062 63.9375\n",
"Q73.0938 53.6562 73.0938 36.375\n",
"Q73.0938 19.1406 63.9062 8.85938\n",
"Q54.7344 -1.42188 39.4062 -1.42188\n",
"Q24.0312 -1.42188 14.8125 8.82812\n",
"Q5.60938 19.0938 5.60938 36.375\n",
"Q5.60938 53.6562 14.8125 63.9375\n",
"Q24.0312 74.2188 39.4062 74.2188\" id=\"BitstreamVeraSans-Roman-4f\"/>\n",
" <path d=\"\n",
"M19.6719 64.7969\n",
"L19.6719 8.10938\n",
"L31.5938 8.10938\n",
"Q46.6875 8.10938 53.6875 14.9375\n",
"Q60.6875 21.7812 60.6875 36.5312\n",
"Q60.6875 51.1719 53.6875 57.9844\n",
"Q46.6875 64.7969 31.5938 64.7969\n",
"z\n",
"\n",
"M9.8125 72.9062\n",
"L30.0781 72.9062\n",
"Q51.2656 72.9062 61.1719 64.0938\n",
"Q71.0938 55.2812 71.0938 36.5312\n",
"Q71.0938 17.6719 61.125 8.82812\n",
"Q51.1719 0 30.0781 0\n",
"L9.8125 0\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-44\"/>\n",
" <path d=\"\n",
"M19.6719 34.8125\n",
"L19.6719 8.10938\n",
"L35.5 8.10938\n",
"Q43.4531 8.10938 47.2812 11.4062\n",
"Q51.125 14.7031 51.125 21.4844\n",
"Q51.125 28.3281 47.2812 31.5625\n",
"Q43.4531 34.8125 35.5 34.8125\n",
"z\n",
"\n",
"M19.6719 64.7969\n",
"L19.6719 42.8281\n",
"L34.2812 42.8281\n",
"Q41.5 42.8281 45.0312 45.5312\n",
"Q48.5781 48.25 48.5781 53.8125\n",
"Q48.5781 59.3281 45.0312 62.0625\n",
"Q41.5 64.7969 34.2812 64.7969\n",
"z\n",
"\n",
"M9.8125 72.9062\n",
"L35.0156 72.9062\n",
"Q46.2969 72.9062 52.3906 68.2188\n",
"Q58.5 63.5312 58.5 54.8906\n",
"Q58.5 48.1875 55.375 44.2344\n",
"Q52.25 40.2812 46.1875 39.3125\n",
"Q53.4688 37.75 57.5 32.7812\n",
"Q61.5312 27.8281 61.5312 20.4062\n",
"Q61.5312 10.6406 54.8906 5.3125\n",
"Q48.25 0 35.9844 0\n",
"L9.8125 0\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-42\"/>\n",
" <path d=\"\n",
"M10.7969 72.9062\n",
"L49.5156 72.9062\n",
"L49.5156 64.5938\n",
"L19.8281 64.5938\n",
"L19.8281 46.7344\n",
"Q21.9688 47.4688 24.1094 47.8281\n",
"Q26.2656 48.1875 28.4219 48.1875\n",
"Q40.625 48.1875 47.75 41.5\n",
"Q54.8906 34.8125 54.8906 23.3906\n",
"Q54.8906 11.625 47.5625 5.09375\n",
"Q40.2344 -1.42188 26.9062 -1.42188\n",
"Q22.3125 -1.42188 17.5469 -0.640625\n",
"Q12.7969 0.140625 7.71875 1.70312\n",
"L7.71875 11.625\n",
"Q12.1094 9.23438 16.7969 8.0625\n",
"Q21.4844 6.89062 26.7031 6.89062\n",
"Q35.1562 6.89062 40.0781 11.3281\n",
"Q45.0156 15.7656 45.0156 23.3906\n",
"Q45.0156 31 40.0781 35.4375\n",
"Q35.1562 39.8906 26.7031 39.8906\n",
"Q22.75 39.8906 18.8125 39.0156\n",
"Q14.8906 38.1406 10.7969 36.2812\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-35\"/>\n",
" </defs>\n",
" <g transform=\"translate(72.51515625 264.80546875)rotate(-90.0)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-42\"/>\n",
" <use x=\"66.853515625\" xlink:href=\"#BitstreamVeraSans-Roman-4f\"/>\n",
" <use x=\"145.564453125\" xlink:href=\"#BitstreamVeraSans-Roman-44\"/>\n",
" <use x=\"222.56640625\" xlink:href=\"#BitstreamVeraSans-Roman-35\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M122.301 234.182\n",
"L122.301 10.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"122.301125\" xlink:href=\"#mcb557df647\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_7\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"122.301125\" xlink:href=\"#mdad270ee8e\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- Cu -->\n",
" <defs>\n",
" <path d=\"\n",
"M8.5 21.5781\n",
"L8.5 54.6875\n",
"L17.4844 54.6875\n",
"L17.4844 21.9219\n",
"Q17.4844 14.1562 20.5 10.2656\n",
"Q23.5312 6.39062 29.5938 6.39062\n",
"Q36.8594 6.39062 41.0781 11.0312\n",
"Q45.3125 15.6719 45.3125 23.6875\n",
"L45.3125 54.6875\n",
"L54.2969 54.6875\n",
"L54.2969 0\n",
"L45.3125 0\n",
"L45.3125 8.40625\n",
"Q42.0469 3.42188 37.7188 1\n",
"Q33.4062 -1.42188 27.6875 -1.42188\n",
"Q18.2656 -1.42188 13.375 4.4375\n",
"Q8.5 10.2969 8.5 21.5781\" id=\"BitstreamVeraSans-Roman-75\"/>\n",
" <path d=\"\n",
"M64.4062 67.2812\n",
"L64.4062 56.8906\n",
"Q59.4219 61.5312 53.7812 63.8125\n",
"Q48.1406 66.1094 41.7969 66.1094\n",
"Q29.2969 66.1094 22.6562 58.4688\n",
"Q16.0156 50.8281 16.0156 36.375\n",
"Q16.0156 21.9688 22.6562 14.3281\n",
"Q29.2969 6.6875 41.7969 6.6875\n",
"Q48.1406 6.6875 53.7812 8.98438\n",
"Q59.4219 11.2812 64.4062 15.9219\n",
"L64.4062 5.60938\n",
"Q59.2344 2.09375 53.4375 0.328125\n",
"Q47.6562 -1.42188 41.2188 -1.42188\n",
"Q24.6562 -1.42188 15.125 8.70312\n",
"Q5.60938 18.8438 5.60938 36.375\n",
"Q5.60938 53.9531 15.125 64.0781\n",
"Q24.6562 74.2188 41.2188 74.2188\n",
"Q47.75 74.2188 53.5312 72.4844\n",
"Q59.3281 70.75 64.4062 67.2812\" id=\"BitstreamVeraSans-Roman-43\"/>\n",
" </defs>\n",
" <g transform=\"translate(126.08315625 249.89140625)rotate(-90.0)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-43\"/>\n",
" <use x=\"69.82421875\" xlink:href=\"#BitstreamVeraSans-Roman-75\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_8\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M175.869 234.182\n",
"L175.869 10.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_9\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"175.869125\" xlink:href=\"#mcb557df647\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"175.869125\" xlink:href=\"#mdad270ee8e\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- O&amp;G -->\n",
" <defs>\n",
" <path d=\"\n",
"M59.5156 10.4062\n",
"L59.5156 29.9844\n",
"L43.4062 29.9844\n",
"L43.4062 38.0938\n",
"L69.2812 38.0938\n",
"L69.2812 6.78125\n",
"Q63.5781 2.73438 56.6875 0.65625\n",
"Q49.8125 -1.42188 42 -1.42188\n",
"Q24.9062 -1.42188 15.25 8.5625\n",
"Q5.60938 18.5625 5.60938 36.375\n",
"Q5.60938 54.25 15.25 64.2344\n",
"Q24.9062 74.2188 42 74.2188\n",
"Q49.125 74.2188 55.5469 72.4531\n",
"Q61.9688 70.7031 67.3906 67.2812\n",
"L67.3906 56.7812\n",
"Q61.9219 61.4219 55.7656 63.7656\n",
"Q49.6094 66.1094 42.8281 66.1094\n",
"Q29.4375 66.1094 22.7188 58.6406\n",
"Q16.0156 51.1719 16.0156 36.375\n",
"Q16.0156 21.625 22.7188 14.1562\n",
"Q29.4375 6.6875 42.8281 6.6875\n",
"Q48.0469 6.6875 52.1406 7.59375\n",
"Q56.25 8.5 59.5156 10.4062\" id=\"BitstreamVeraSans-Roman-47\"/>\n",
" <path d=\"\n",
"M24.3125 39.2031\n",
"Q19.875 35.25 17.7969 31.3125\n",
"Q15.7188 27.3906 15.7188 23.0938\n",
"Q15.7188 15.9688 20.8906 11.2344\n",
"Q26.0781 6.5 33.8906 6.5\n",
"Q38.5312 6.5 42.5781 8.03125\n",
"Q46.625 9.57812 50.2031 12.7031\n",
"z\n",
"\n",
"M31.2031 44.6719\n",
"L56 19.2812\n",
"Q58.8906 23.6406 60.5 28.5938\n",
"Q62.1094 33.5469 62.4062 39.1094\n",
"L71.4844 39.1094\n",
"Q70.9062 32.6719 68.3594 26.3594\n",
"Q65.8281 20.0625 61.2812 13.9219\n",
"L74.9062 0\n",
"L62.5938 0\n",
"L55.6094 7.17188\n",
"Q50.5312 2.82812 44.9688 0.703125\n",
"Q39.4062 -1.42188 33.0156 -1.42188\n",
"Q21.2344 -1.42188 13.7656 5.29688\n",
"Q6.29688 12.0156 6.29688 22.5156\n",
"Q6.29688 28.7656 9.5625 34.25\n",
"Q12.8438 39.75 19.3906 44.5781\n",
"Q17.0469 47.6562 15.8125 50.7031\n",
"Q14.5938 53.7656 14.5938 56.6875\n",
"Q14.5938 64.5938 20.0156 69.4062\n",
"Q25.4375 74.2188 34.4219 74.2188\n",
"Q38.4844 74.2188 42.5 73.3438\n",
"Q46.5312 72.4688 50.6875 70.7031\n",
"L50.6875 61.8125\n",
"Q46.4375 64.1094 42.5781 65.2969\n",
"Q38.7188 66.5 35.4062 66.5\n",
"Q30.2812 66.5 27.0781 63.7812\n",
"Q23.875 61.0781 23.875 56.7812\n",
"Q23.875 54.2969 25.3125 51.7812\n",
"Q26.7656 49.2656 31.2031 44.6719\" id=\"BitstreamVeraSans-Roman-26\"/>\n",
" </defs>\n",
" <g transform=\"translate(179.65115625 260.07734375)rotate(-90.0)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-4f\"/>\n",
" <use x=\"78.7109375\" xlink:href=\"#BitstreamVeraSans-Roman-26\"/>\n",
" <use x=\"156.689453125\" xlink:href=\"#BitstreamVeraSans-Roman-47\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M229.437 234.182\n",
"L229.437 10.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"229.437125\" xlink:href=\"#mcb557df647\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_13\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"229.437125\" xlink:href=\"#mdad270ee8e\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- Ortho P -->\n",
" <defs>\n",
" <path id=\"BitstreamVeraSans-Roman-20\"/>\n",
" <path d=\"\n",
"M30.6094 48.3906\n",
"Q23.3906 48.3906 19.1875 42.75\n",
"Q14.9844 37.1094 14.9844 27.2969\n",
"Q14.9844 17.4844 19.1562 11.8438\n",
"Q23.3438 6.20312 30.6094 6.20312\n",
"Q37.7969 6.20312 41.9844 11.8594\n",
"Q46.1875 17.5312 46.1875 27.2969\n",
"Q46.1875 37.0156 41.9844 42.7031\n",
"Q37.7969 48.3906 30.6094 48.3906\n",
"M30.6094 56\n",
"Q42.3281 56 49.0156 48.375\n",
"Q55.7188 40.7656 55.7188 27.2969\n",
"Q55.7188 13.875 49.0156 6.21875\n",
"Q42.3281 -1.42188 30.6094 -1.42188\n",
"Q18.8438 -1.42188 12.1719 6.21875\n",
"Q5.51562 13.875 5.51562 27.2969\n",
"Q5.51562 40.7656 12.1719 48.375\n",
"Q18.8438 56 30.6094 56\" id=\"BitstreamVeraSans-Roman-6f\"/>\n",
" <path d=\"\n",
"M19.6719 64.7969\n",
"L19.6719 37.4062\n",
"L32.0781 37.4062\n",
"Q38.9688 37.4062 42.7188 40.9688\n",
"Q46.4844 44.5312 46.4844 51.125\n",
"Q46.4844 57.6719 42.7188 61.2344\n",
"Q38.9688 64.7969 32.0781 64.7969\n",
"z\n",
"\n",
"M9.8125 72.9062\n",
"L32.0781 72.9062\n",
"Q44.3438 72.9062 50.6094 67.3594\n",
"Q56.8906 61.8125 56.8906 51.125\n",
"Q56.8906 40.3281 50.6094 34.8125\n",
"Q44.3438 29.2969 32.0781 29.2969\n",
"L19.6719 29.2969\n",
"L19.6719 0\n",
"L9.8125 0\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-50\"/>\n",
" <path d=\"\n",
"M54.8906 33.0156\n",
"L54.8906 0\n",
"L45.9062 0\n",
"L45.9062 32.7188\n",
"Q45.9062 40.4844 42.875 44.3281\n",
"Q39.8438 48.1875 33.7969 48.1875\n",
"Q26.5156 48.1875 22.3125 43.5469\n",
"Q18.1094 38.9219 18.1094 30.9062\n",
"L18.1094 0\n",
"L9.07812 0\n",
"L9.07812 75.9844\n",
"L18.1094 75.9844\n",
"L18.1094 46.1875\n",
"Q21.3438 51.125 25.7031 53.5625\n",
"Q30.0781 56 35.7969 56\n",
"Q45.2188 56 50.0469 50.1719\n",
"Q54.8906 44.3438 54.8906 33.0156\" id=\"BitstreamVeraSans-Roman-68\"/>\n",
" <path d=\"\n",
"M18.3125 70.2188\n",
"L18.3125 54.6875\n",
"L36.8125 54.6875\n",
"L36.8125 47.7031\n",
"L18.3125 47.7031\n",
"L18.3125 18.0156\n",
"Q18.3125 11.3281 20.1406 9.42188\n",
"Q21.9688 7.51562 27.5938 7.51562\n",
"L36.8125 7.51562\n",
"L36.8125 0\n",
"L27.5938 0\n",
"Q17.1875 0 13.2344 3.875\n",
"Q9.28125 7.76562 9.28125 18.0156\n",
"L9.28125 47.7031\n",
"L2.6875 47.7031\n",
"L2.6875 54.6875\n",
"L9.28125 54.6875\n",
"L9.28125 70.2188\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-74\"/>\n",
" <path d=\"\n",
"M41.1094 46.2969\n",
"Q39.5938 47.1719 37.8125 47.5781\n",
"Q36.0312 48 33.8906 48\n",
"Q26.2656 48 22.1875 43.0469\n",
"Q18.1094 38.0938 18.1094 28.8125\n",
"L18.1094 0\n",
"L9.07812 0\n",
"L9.07812 54.6875\n",
"L18.1094 54.6875\n",
"L18.1094 46.1875\n",
"Q20.9531 51.1719 25.4844 53.5781\n",
"Q30.0312 56 36.5312 56\n",
"Q37.4531 56 38.5781 55.875\n",
"Q39.7031 55.7656 41.0625 55.5156\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-72\"/>\n",
" </defs>\n",
" <g transform=\"translate(233.3074375 275.26640625)rotate(-90.0)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-4f\"/>\n",
" <use x=\"78.7109375\" xlink:href=\"#BitstreamVeraSans-Roman-72\"/>\n",
" <use x=\"119.82421875\" xlink:href=\"#BitstreamVeraSans-Roman-74\"/>\n",
" <use x=\"159.033203125\" xlink:href=\"#BitstreamVeraSans-Roman-68\"/>\n",
" <use x=\"222.412109375\" xlink:href=\"#BitstreamVeraSans-Roman-6f\"/>\n",
" <use x=\"283.59375\" xlink:href=\"#BitstreamVeraSans-Roman-20\"/>\n",
" <use x=\"315.380859375\" xlink:href=\"#BitstreamVeraSans-Roman-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_14\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M283.005 234.182\n",
"L283.005 10.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_15\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"283.005125\" xlink:href=\"#mcb557df647\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"283.005125\" xlink:href=\"#mdad270ee8e\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- TSS -->\n",
" <defs>\n",
" <path d=\"\n",
"M53.5156 70.5156\n",
"L53.5156 60.8906\n",
"Q47.9062 63.5781 42.9219 64.8906\n",
"Q37.9375 66.2188 33.2969 66.2188\n",
"Q25.25 66.2188 20.875 63.0938\n",
"Q16.5 59.9688 16.5 54.2031\n",
"Q16.5 49.3594 19.4062 46.8906\n",
"Q22.3125 44.4375 30.4219 42.9219\n",
"L36.375 41.7031\n",
"Q47.4062 39.5938 52.6562 34.2969\n",
"Q57.9062 29 57.9062 20.125\n",
"Q57.9062 9.51562 50.7969 4.04688\n",
"Q43.7031 -1.42188 29.9844 -1.42188\n",
"Q24.8125 -1.42188 18.9688 -0.25\n",
"Q13.1406 0.921875 6.89062 3.21875\n",
"L6.89062 13.375\n",
"Q12.8906 10.0156 18.6562 8.29688\n",
"Q24.4219 6.59375 29.9844 6.59375\n",
"Q38.4219 6.59375 43.0156 9.90625\n",
"Q47.6094 13.2344 47.6094 19.3906\n",
"Q47.6094 24.75 44.3125 27.7812\n",
"Q41.0156 30.8125 33.5 32.3281\n",
"L27.4844 33.5\n",
"Q16.4531 35.6875 11.5156 40.375\n",
"Q6.59375 45.0625 6.59375 53.4219\n",
"Q6.59375 63.0938 13.4062 68.6562\n",
"Q20.2188 74.2188 32.1719 74.2188\n",
"Q37.3125 74.2188 42.625 73.2812\n",
"Q47.9531 72.3594 53.5156 70.5156\" id=\"BitstreamVeraSans-Roman-53\"/>\n",
" <path d=\"\n",
"M-0.296875 72.9062\n",
"L61.375 72.9062\n",
"L61.375 64.5938\n",
"L35.5 64.5938\n",
"L35.5 0\n",
"L25.5938 0\n",
"L25.5938 64.5938\n",
"L-0.296875 64.5938\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-54\"/>\n",
" </defs>\n",
" <g transform=\"translate(286.78715625 256.31640625)rotate(-90.0)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-54\"/>\n",
" <use x=\"61.083984375\" xlink:href=\"#BitstreamVeraSans-Roman-53\"/>\n",
" <use x=\"124.560546875\" xlink:href=\"#BitstreamVeraSans-Roman-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_6\">\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M336.573 234.182\n",
"L336.573 10.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"336.573125\" xlink:href=\"#mcb557df647\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_19\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"336.573125\" xlink:href=\"#mdad270ee8e\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- Zn -->\n",
" <defs>\n",
" <path d=\"\n",
"M54.8906 33.0156\n",
"L54.8906 0\n",
"L45.9062 0\n",
"L45.9062 32.7188\n",
"Q45.9062 40.4844 42.875 44.3281\n",
"Q39.8438 48.1875 33.7969 48.1875\n",
"Q26.5156 48.1875 22.3125 43.5469\n",
"Q18.1094 38.9219 18.1094 30.9062\n",
"L18.1094 0\n",
"L9.07812 0\n",
"L9.07812 54.6875\n",
"L18.1094 54.6875\n",
"L18.1094 46.1875\n",
"Q21.3438 51.125 25.7031 53.5625\n",
"Q30.0781 56 35.7969 56\n",
"Q45.2188 56 50.0469 50.1719\n",
"Q54.8906 44.3438 54.8906 33.0156\" id=\"BitstreamVeraSans-Roman-6e\"/>\n",
" <path d=\"\n",
"M5.60938 72.9062\n",
"L62.8906 72.9062\n",
"L62.8906 65.375\n",
"L16.7969 8.29688\n",
"L64.0156 8.29688\n",
"L64.0156 0\n",
"L4.5 0\n",
"L4.5 7.51562\n",
"L50.5938 64.5938\n",
"L5.60938 64.5938\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-5a\"/>\n",
" </defs>\n",
" <g transform=\"translate(340.2184375 250.07109375)rotate(-90.0)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-5a\"/>\n",
" <use x=\"68.505859375\" xlink:href=\"#BitstreamVeraSans-Roman-6e\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- Parameter -->\n",
" <defs>\n",
" <path d=\"\n",
"M56.2031 29.5938\n",
"L56.2031 25.2031\n",
"L14.8906 25.2031\n",
"Q15.4844 15.9219 20.4844 11.0625\n",
"Q25.4844 6.20312 34.4219 6.20312\n",
"Q39.5938 6.20312 44.4531 7.46875\n",
"Q49.3125 8.73438 54.1094 11.2812\n",
"L54.1094 2.78125\n",
"Q49.2656 0.734375 44.1875 -0.34375\n",
"Q39.1094 -1.42188 33.8906 -1.42188\n",
"Q20.7969 -1.42188 13.1562 6.1875\n",
"Q5.51562 13.8125 5.51562 26.8125\n",
"Q5.51562 40.2344 12.7656 48.1094\n",
"Q20.0156 56 32.3281 56\n",
"Q43.3594 56 49.7812 48.8906\n",
"Q56.2031 41.7969 56.2031 29.5938\n",
"M47.2188 32.2344\n",
"Q47.125 39.5938 43.0938 43.9844\n",
"Q39.0625 48.3906 32.4219 48.3906\n",
"Q24.9062 48.3906 20.3906 44.1406\n",
"Q15.875 39.8906 15.1875 32.1719\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-65\"/>\n",
" <path d=\"\n",
"M52 44.1875\n",
"Q55.375 50.25 60.0625 53.125\n",
"Q64.75 56 71.0938 56\n",
"Q79.6406 56 84.2812 50.0156\n",
"Q88.9219 44.0469 88.9219 33.0156\n",
"L88.9219 0\n",
"L79.8906 0\n",
"L79.8906 32.7188\n",
"Q79.8906 40.5781 77.0938 44.375\n",
"Q74.3125 48.1875 68.6094 48.1875\n",
"Q61.625 48.1875 57.5625 43.5469\n",
"Q53.5156 38.9219 53.5156 30.9062\n",
"L53.5156 0\n",
"L44.4844 0\n",
"L44.4844 32.7188\n",
"Q44.4844 40.625 41.7031 44.4062\n",
"Q38.9219 48.1875 33.1094 48.1875\n",
"Q26.2188 48.1875 22.1562 43.5312\n",
"Q18.1094 38.875 18.1094 30.9062\n",
"L18.1094 0\n",
"L9.07812 0\n",
"L9.07812 54.6875\n",
"L18.1094 54.6875\n",
"L18.1094 46.1875\n",
"Q21.1875 51.2188 25.4844 53.6094\n",
"Q29.7812 56 35.6875 56\n",
"Q41.6562 56 45.8281 52.9688\n",
"Q50 49.9531 52 44.1875\" id=\"BitstreamVeraSans-Roman-6d\"/>\n",
" <path d=\"\n",
"M34.2812 27.4844\n",
"Q23.3906 27.4844 19.1875 25\n",
"Q14.9844 22.5156 14.9844 16.5\n",
"Q14.9844 11.7188 18.1406 8.90625\n",
"Q21.2969 6.10938 26.7031 6.10938\n",
"Q34.1875 6.10938 38.7031 11.4062\n",
"Q43.2188 16.7031 43.2188 25.4844\n",
"L43.2188 27.4844\n",
"z\n",
"\n",
"M52.2031 31.2031\n",
"L52.2031 0\n",
"L43.2188 0\n",
"L43.2188 8.29688\n",
"Q40.1406 3.32812 35.5469 0.953125\n",
"Q30.9531 -1.42188 24.3125 -1.42188\n",
"Q15.9219 -1.42188 10.9531 3.29688\n",
"Q6 8.01562 6 15.9219\n",
"Q6 25.1406 12.1719 29.8281\n",
"Q18.3594 34.5156 30.6094 34.5156\n",
"L43.2188 34.5156\n",
"L43.2188 35.4062\n",
"Q43.2188 41.6094 39.1406 45\n",
"Q35.0625 48.3906 27.6875 48.3906\n",
"Q23 48.3906 18.5469 47.2656\n",
"Q14.1094 46.1406 10.0156 43.8906\n",
"L10.0156 52.2031\n",
"Q14.9375 54.1094 19.5781 55.0469\n",
"Q24.2188 56 28.6094 56\n",
"Q40.4844 56 46.3438 49.8438\n",
"Q52.2031 43.7031 52.2031 31.2031\" id=\"BitstreamVeraSans-Roman-61\"/>\n",
" </defs>\n",
" <g transform=\"translate(177.13125 287.69921875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-50\"/>\n",
" <use x=\"55.802734375\" xlink:href=\"#BitstreamVeraSans-Roman-61\"/>\n",
" <use x=\"117.08203125\" xlink:href=\"#BitstreamVeraSans-Roman-72\"/>\n",
" <use x=\"158.1953125\" xlink:href=\"#BitstreamVeraSans-Roman-61\"/>\n",
" <use x=\"219.474609375\" xlink:href=\"#BitstreamVeraSans-Roman-6d\"/>\n",
" <use x=\"316.88671875\" xlink:href=\"#BitstreamVeraSans-Roman-65\"/>\n",
" <use x=\"378.41015625\" xlink:href=\"#BitstreamVeraSans-Roman-74\"/>\n",
" <use x=\"417.619140625\" xlink:href=\"#BitstreamVeraSans-Roman-65\"/>\n",
" <use x=\"479.142578125\" xlink:href=\"#BitstreamVeraSans-Roman-72\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_20\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 234.182\n",
"L370.053 234.182\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_21\">\n",
" <defs>\n",
" <path d=\"\n",
"M0 0\n",
"L4 0\" id=\"mc8fcea1516\" style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"35.253125\" xlink:href=\"#mc8fcea1516\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <defs>\n",
" <path d=\"\n",
"M0 0\n",
"L-4 0\" id=\"m0d5b0a6425\" style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"370.053125\" xlink:href=\"#m0d5b0a6425\" y=\"234.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 0 -->\n",
" <defs>\n",
" <path d=\"\n",
"M31.7812 66.4062\n",
"Q24.1719 66.4062 20.3281 58.9062\n",
"Q16.5 51.4219 16.5 36.375\n",
"Q16.5 21.3906 20.3281 13.8906\n",
"Q24.1719 6.39062 31.7812 6.39062\n",
"Q39.4531 6.39062 43.2812 13.8906\n",
"Q47.125 21.3906 47.125 36.375\n",
"Q47.125 51.4219 43.2812 58.9062\n",
"Q39.4531 66.4062 31.7812 66.4062\n",
"M31.7812 74.2188\n",
"Q44.0469 74.2188 50.5156 64.5156\n",
"Q56.9844 54.8281 56.9844 36.375\n",
"Q56.9844 17.9688 50.5156 8.26562\n",
"Q44.0469 -1.42188 31.7812 -1.42188\n",
"Q19.5312 -1.42188 13.0625 8.26562\n",
"Q6.59375 17.9688 6.59375 36.375\n",
"Q6.59375 54.8281 13.0625 64.5156\n",
"Q19.5312 74.2188 31.7812 74.2188\" id=\"BitstreamVeraSans-Roman-30\"/>\n",
" </defs>\n",
" <g transform=\"translate(26.2140625 237.821875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_23\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 196.982\n",
"L370.053 196.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"35.253125\" xlink:href=\"#mc8fcea1516\" y=\"196.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_25\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"370.053125\" xlink:href=\"#m0d5b0a6425\" y=\"196.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 500 -->\n",
" <g transform=\"translate(13.6015625 200.621875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-35\"/>\n",
" <use x=\"63.623046875\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"127.24609375\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_26\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 159.782\n",
"L370.053 159.782\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_27\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"35.253125\" xlink:href=\"#mc8fcea1516\" y=\"159.78203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_28\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"370.053125\" xlink:href=\"#m0d5b0a6425\" y=\"159.78203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_10\">\n",
" <!-- 1000 -->\n",
" <defs>\n",
" <path d=\"\n",
"M12.4062 8.29688\n",
"L28.5156 8.29688\n",
"L28.5156 63.9219\n",
"L10.9844 60.4062\n",
"L10.9844 69.3906\n",
"L28.4219 72.9062\n",
"L38.2812 72.9062\n",
"L38.2812 8.29688\n",
"L54.3906 8.29688\n",
"L54.3906 0\n",
"L12.4062 0\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-31\"/>\n",
" </defs>\n",
" <g transform=\"translate(7.565625 163.421875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-31\"/>\n",
" <use x=\"63.623046875\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"127.24609375\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"190.869140625\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_4\">\n",
" <g id=\"line2d_29\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 122.582\n",
"L370.053 122.582\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_30\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"35.253125\" xlink:href=\"#mc8fcea1516\" y=\"122.58203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_31\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"370.053125\" xlink:href=\"#m0d5b0a6425\" y=\"122.58203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_11\">\n",
" <!-- 1500 -->\n",
" <g transform=\"translate(7.565625 126.221875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-31\"/>\n",
" <use x=\"63.623046875\" xlink:href=\"#BitstreamVeraSans-Roman-35\"/>\n",
" <use x=\"127.24609375\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"190.869140625\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_5\">\n",
" <g id=\"line2d_32\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 85.382\n",
"L370.053 85.382\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_33\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"35.253125\" xlink:href=\"#mc8fcea1516\" y=\"85.38203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_34\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"370.053125\" xlink:href=\"#m0d5b0a6425\" y=\"85.38203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_12\">\n",
" <!-- 2000 -->\n",
" <defs>\n",
" <path d=\"\n",
"M19.1875 8.29688\n",
"L53.6094 8.29688\n",
"L53.6094 0\n",
"L7.32812 0\n",
"L7.32812 8.29688\n",
"Q12.9375 14.1094 22.625 23.8906\n",
"Q32.3281 33.6875 34.8125 36.5312\n",
"Q39.5469 41.8438 41.4219 45.5312\n",
"Q43.3125 49.2188 43.3125 52.7812\n",
"Q43.3125 58.5938 39.2344 62.25\n",
"Q35.1562 65.9219 28.6094 65.9219\n",
"Q23.9688 65.9219 18.8125 64.3125\n",
"Q13.6719 62.7031 7.8125 59.4219\n",
"L7.8125 69.3906\n",
"Q13.7656 71.7812 18.9375 73\n",
"Q24.125 74.2188 28.4219 74.2188\n",
"Q39.75 74.2188 46.4844 68.5469\n",
"Q53.2188 62.8906 53.2188 53.4219\n",
"Q53.2188 48.9219 51.5312 44.8906\n",
"Q49.8594 40.875 45.4062 35.4062\n",
"Q44.1875 33.9844 37.6406 27.2188\n",
"Q31.1094 20.4531 19.1875 8.29688\" id=\"BitstreamVeraSans-Roman-32\"/>\n",
" </defs>\n",
" <g transform=\"translate(7.2 89.021875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-32\"/>\n",
" <use x=\"63.623046875\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"127.24609375\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"190.869140625\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_6\">\n",
" <g id=\"line2d_35\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 48.182\n",
"L370.053 48.182\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_36\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"35.253125\" xlink:href=\"#mc8fcea1516\" y=\"48.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_37\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"370.053125\" xlink:href=\"#m0d5b0a6425\" y=\"48.18203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_13\">\n",
" <!-- 2500 -->\n",
" <g transform=\"translate(7.2 51.821875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-32\"/>\n",
" <use x=\"63.623046875\" xlink:href=\"#BitstreamVeraSans-Roman-35\"/>\n",
" <use x=\"127.24609375\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"190.869140625\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_7\">\n",
" <g id=\"line2d_38\">\n",
" <path clip-path=\"url(#pedc73a1d37)\" d=\"\n",
"M35.2531 10.982\n",
"L370.053 10.982\" style=\"fill:none;stroke:#000000;stroke-dasharray:1.000000,3.000000;stroke-dashoffset:0.0;stroke-linecap:butt;stroke-width:0.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_39\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"35.253125\" xlink:href=\"#mc8fcea1516\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_40\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-linecap:butt;stroke-width:0.5;\" x=\"370.053125\" xlink:href=\"#m0d5b0a6425\" y=\"10.98203125\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_14\">\n",
" <!-- 3000 -->\n",
" <defs>\n",
" <path d=\"\n",
"M40.5781 39.3125\n",
"Q47.6562 37.7969 51.625 33\n",
"Q55.6094 28.2188 55.6094 21.1875\n",
"Q55.6094 10.4062 48.1875 4.48438\n",
"Q40.7656 -1.42188 27.0938 -1.42188\n",
"Q22.5156 -1.42188 17.6562 -0.515625\n",
"Q12.7969 0.390625 7.625 2.20312\n",
"L7.625 11.7188\n",
"Q11.7188 9.32812 16.5938 8.10938\n",
"Q21.4844 6.89062 26.8125 6.89062\n",
"Q36.0781 6.89062 40.9375 10.5469\n",
"Q45.7969 14.2031 45.7969 21.1875\n",
"Q45.7969 27.6406 41.2812 31.2656\n",
"Q36.7656 34.9062 28.7188 34.9062\n",
"L20.2188 34.9062\n",
"L20.2188 43.0156\n",
"L29.1094 43.0156\n",
"Q36.375 43.0156 40.2344 45.9219\n",
"Q44.0938 48.8281 44.0938 54.2969\n",
"Q44.0938 59.9062 40.1094 62.9062\n",
"Q36.1406 65.9219 28.7188 65.9219\n",
"Q24.6562 65.9219 20.0156 65.0312\n",
"Q15.375 64.1562 9.8125 62.3125\n",
"L9.8125 71.0938\n",
"Q15.4375 72.6562 20.3438 73.4375\n",
"Q25.25 74.2188 29.5938 74.2188\n",
"Q40.8281 74.2188 47.3594 69.1094\n",
"Q53.9062 64.0156 53.9062 55.3281\n",
"Q53.9062 49.2656 50.4375 45.0938\n",
"Q46.9688 40.9219 40.5781 39.3125\" id=\"BitstreamVeraSans-Roman-33\"/>\n",
" </defs>\n",
" <g transform=\"translate(7.2296875 14.621875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-33\"/>\n",
" <use x=\"63.623046875\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"127.24609375\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" <use x=\"190.869140625\" xlink:href=\"#BitstreamVeraSans-Roman-30\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"patch_9\">\n",
" <path d=\"\n",
"M35.2531 10.982\n",
"L370.053 10.982\" style=\"fill:none;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_10\">\n",
" <path d=\"\n",
"M370.053 234.182\n",
"L370.053 10.982\" style=\"fill:none;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_11\">\n",
" <path d=\"\n",
"M35.2531 234.182\n",
"L370.053 234.182\" style=\"fill:none;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_12\">\n",
" <path d=\"\n",
"M35.2531 234.182\n",
"L35.2531 10.982\" style=\"fill:none;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_13\">\n",
" <path d=\"\n",
"M272.298 38.1958\n",
"L364.053 38.1958\n",
"L364.053 16.982\n",
"L272.298 16.982\n",
"L272.298 38.1958\n",
"z\n",
"\" style=\"fill:#ffffff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"patch_14\">\n",
" <path d=\"\n",
"M277.098 30.9002\n",
"L301.098 30.9002\n",
"L301.098 22.5002\n",
"L277.098 22.5002\n",
"z\n",
"\" style=\"fill:#0000ff;stroke:#000000;\"/>\n",
" </g>\n",
" <g id=\"text_15\">\n",
" <!-- Load (g) -->\n",
" <defs>\n",
" <path d=\"\n",
"M8.01562 75.875\n",
"L15.8281 75.875\n",
"Q23.1406 64.3594 26.7812 53.3125\n",
"Q30.4219 42.2812 30.4219 31.3906\n",
"Q30.4219 20.4531 26.7812 9.375\n",
"Q23.1406 -1.70312 15.8281 -13.1875\n",
"L8.01562 -13.1875\n",
"Q14.5 -2 17.7031 9.0625\n",
"Q20.9062 20.125 20.9062 31.3906\n",
"Q20.9062 42.6719 17.7031 53.6562\n",
"Q14.5 64.6562 8.01562 75.875\" id=\"BitstreamVeraSans-Roman-29\"/>\n",
" <path d=\"\n",
"M45.4062 46.3906\n",
"L45.4062 75.9844\n",
"L54.3906 75.9844\n",
"L54.3906 0\n",
"L45.4062 0\n",
"L45.4062 8.20312\n",
"Q42.5781 3.32812 38.25 0.953125\n",
"Q33.9375 -1.42188 27.875 -1.42188\n",
"Q17.9688 -1.42188 11.7344 6.48438\n",
"Q5.51562 14.4062 5.51562 27.2969\n",
"Q5.51562 40.1875 11.7344 48.0938\n",
"Q17.9688 56 27.875 56\n",
"Q33.9375 56 38.25 53.625\n",
"Q42.5781 51.2656 45.4062 46.3906\n",
"M14.7969 27.2969\n",
"Q14.7969 17.3906 18.875 11.75\n",
"Q22.9531 6.10938 30.0781 6.10938\n",
"Q37.2031 6.10938 41.2969 11.75\n",
"Q45.4062 17.3906 45.4062 27.2969\n",
"Q45.4062 37.2031 41.2969 42.8438\n",
"Q37.2031 48.4844 30.0781 48.4844\n",
"Q22.9531 48.4844 18.875 42.8438\n",
"Q14.7969 37.2031 14.7969 27.2969\" id=\"BitstreamVeraSans-Roman-64\"/>\n",
" <path d=\"\n",
"M45.4062 27.9844\n",
"Q45.4062 37.75 41.375 43.1094\n",
"Q37.3594 48.4844 30.0781 48.4844\n",
"Q22.8594 48.4844 18.8281 43.1094\n",
"Q14.7969 37.75 14.7969 27.9844\n",
"Q14.7969 18.2656 18.8281 12.8906\n",
"Q22.8594 7.51562 30.0781 7.51562\n",
"Q37.3594 7.51562 41.375 12.8906\n",
"Q45.4062 18.2656 45.4062 27.9844\n",
"M54.3906 6.78125\n",
"Q54.3906 -7.17188 48.1875 -13.9844\n",
"Q42 -20.7969 29.2031 -20.7969\n",
"Q24.4688 -20.7969 20.2656 -20.0938\n",
"Q16.0625 -19.3906 12.1094 -17.9219\n",
"L12.1094 -9.1875\n",
"Q16.0625 -11.3281 19.9219 -12.3438\n",
"Q23.7812 -13.375 27.7812 -13.375\n",
"Q36.625 -13.375 41.0156 -8.76562\n",
"Q45.4062 -4.15625 45.4062 5.17188\n",
"L45.4062 9.625\n",
"Q42.625 4.78125 38.2812 2.39062\n",
"Q33.9375 0 27.875 0\n",
"Q17.8281 0 11.6719 7.65625\n",
"Q5.51562 15.3281 5.51562 27.9844\n",
"Q5.51562 40.6719 11.6719 48.3281\n",
"Q17.8281 56 27.875 56\n",
"Q33.9375 56 38.2812 53.6094\n",
"Q42.625 51.2188 45.4062 46.3906\n",
"L45.4062 54.6875\n",
"L54.3906 54.6875\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-67\"/>\n",
" <path d=\"\n",
"M9.8125 72.9062\n",
"L19.6719 72.9062\n",
"L19.6719 8.29688\n",
"L55.1719 8.29688\n",
"L55.1719 0\n",
"L9.8125 0\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-4c\"/>\n",
" <path d=\"\n",
"M31 75.875\n",
"Q24.4688 64.6562 21.2812 53.6562\n",
"Q18.1094 42.6719 18.1094 31.3906\n",
"Q18.1094 20.125 21.3125 9.0625\n",
"Q24.5156 -2 31 -13.1875\n",
"L23.1875 -13.1875\n",
"Q15.875 -1.70312 12.2344 9.375\n",
"Q8.59375 20.4531 8.59375 31.3906\n",
"Q8.59375 42.2812 12.2031 53.3125\n",
"Q15.8281 64.3594 23.1875 75.875\n",
"z\n",
"\" id=\"BitstreamVeraSans-Roman-28\"/>\n",
" </defs>\n",
" <g transform=\"translate(310.698125 30.90015625)scale(0.12 -0.12)\">\n",
" <use xlink:href=\"#BitstreamVeraSans-Roman-4c\"/>\n",
" <use x=\"53.962890625\" xlink:href=\"#BitstreamVeraSans-Roman-6f\"/>\n",
" <use x=\"115.14453125\" xlink:href=\"#BitstreamVeraSans-Roman-61\"/>\n",
" <use x=\"176.423828125\" xlink:href=\"#BitstreamVeraSans-Roman-64\"/>\n",
" <use x=\"239.900390625\" xlink:href=\"#BitstreamVeraSans-Roman-20\"/>\n",
" <use x=\"271.6875\" xlink:href=\"#BitstreamVeraSans-Roman-28\"/>\n",
" <use x=\"310.701171875\" xlink:href=\"#BitstreamVeraSans-Roman-67\"/>\n",
" <use x=\"374.177734375\" xlink:href=\"#BitstreamVeraSans-Roman-29\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"pedc73a1d37\">\n",
" <rect height=\"223.2\" width=\"334.8\" x=\"35.253125\" y=\"10.98203125\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
]
}
],
"prompt_number": 20
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## You can *query* against the rows (or columns) with the `xs` (cross-section) method"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"allloads.xs('Zn', level='Parameter')"
],
"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>Watersheds</th>\n",
" <th>1E</th>\n",
" <th>1N</th>\n",
" <th>1S</th>\n",
" <th>2</th>\n",
" <th>3W</th>\n",
" <th>4N</th>\n",
" <th>4S</th>\n",
" <th>5</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Land Use</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Airfield</th>\n",
" <td> 51.100</td>\n",
" <td> 2.30</td>\n",
" <td> 306.9000</td>\n",
" <td> 0.094</td>\n",
" <td> 0.354</td>\n",
" <td> 0.010</td>\n",
" <td> 0.002772</td>\n",
" <td> 0.003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Open Space</th>\n",
" <td> 0.127</td>\n",
" <td> 3.45</td>\n",
" <td> 0.0264</td>\n",
" <td> 2.800</td>\n",
" <td> 1.270</td>\n",
" <td> 3.864</td>\n",
" <td> 0.264000</td>\n",
" <td> 0.600</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"output_type": "pyout",
"prompt_number": 21,
"text": [
"Watersheds 1E 1N 1S 2 3W 4N 4S 5\n",
"Land Use \n",
"Airfield 51.100 2.30 306.9000 0.094 0.354 0.010 0.002772 0.003\n",
"Open Space 0.127 3.45 0.0264 2.800 1.270 3.864 0.264000 0.600"
]
}
],
"prompt_number": 21
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment