{
 "metadata": {
  "name": "",
  "signature": "sha256:ca0f00132de7ae9c8ef76dfc7f5c8051f310d01f010677297806ee2bd2cf79e0"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# itable examples\n",
      "\n",
      "These tables are created using the itable package [https://github.com/mgymrek/itable](https://github.com/mgymrek/itable).\n",
      "\n",
      "These examples are originally described in [this post](http://melissagymrek.com/python/2014/01/12/ipython-tables.html) before I had created the separate ```itable``` package. Usage is identical except for the change in the package name."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import pandas as pd\n",
      "import itable"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 16
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Create an example data frame\n",
      "df = pd.DataFrame({\"x\":[1,2,3], \"y\":[6,4,3], \"z\":[\"testing\",\"pretty\",\"tables\"], \"f\":[0.023432, 0.234321,0.5555]})"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Display a simple table\n",
      "itable.PrettyTable(df)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<table style=\"\"><tr style=\"\"><td style=\"\">f</td><td style=\"\">x</td><td style=\"\">y</td><td style=\"\">z</td></tr><tr style=\"\"><td style=\"\">0.023432</td><td style=\"\">1</td><td style=\"\">6</td><td style=\"\">testing</td></tr><tr style=\"\"><td style=\"\">0.234321</td><td style=\"\">2</td><td style=\"\">4</td><td style=\"\">pretty</td></tr><tr style=\"\"><td style=\"\">0.5555</td><td style=\"\">3</td><td style=\"\">3</td><td style=\"\">tables</td></tr></table>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 18,
       "text": [
        "<itable.itable.PrettyTable at 0x3211dd0>"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Give it a theme and center the table\n",
      "itable.PrettyTable(df, tstyle=itable.TableStyle(theme=\"theme1\"), center=True)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<center><table style=\"color: black;border: 1px solid black;\"><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font-weight: bold;background-color: lightgray;\">f</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">x</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">y</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">z</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.023432</td><td style=\"color: black;border: 1px solid black;\">1</td><td style=\"color: black;border: 1px solid black;\">6</td><td style=\"color: black;border: 1px solid black;\">testing</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.234321</td><td style=\"color: black;border: 1px solid black;\">2</td><td style=\"color: black;border: 1px solid black;\">4</td><td style=\"color: black;border: 1px solid black;\">pretty</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.5555</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">tables</td></tr></table></center>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 19,
       "text": [
        "<itable.itable.PrettyTable at 0x7f5cb0064590>"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Set cell style using a CellStyle object\n",
      "pt = itable.PrettyTable(df, tstyle=itable.TableStyle(theme=\"theme1\"), center=True)\n",
      "cs = itable.CellStyle()\n",
      "cs.set(\"background-color\", \"red\")\n",
      "cs.set(\"color\", \"white\")\n",
      "pt.set_cell_style(style=cs)\n",
      "pt"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<center><table style=\"color: black;border: 1px solid black;\"><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font-weight: bold;background-color: lightgray;\">f</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">x</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">y</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">z</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: white;background-color: red;\">0.023432</td><td style=\"color: white;background-color: red;\">1</td><td style=\"color: white;background-color: red;\">6</td><td style=\"color: white;background-color: red;\">testing</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: white;background-color: red;\">0.234321</td><td style=\"color: white;background-color: red;\">2</td><td style=\"color: white;background-color: red;\">4</td><td style=\"color: white;background-color: red;\">pretty</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: white;background-color: red;\">0.5555</td><td style=\"color: white;background-color: red;\">3</td><td style=\"color: white;background-color: red;\">3</td><td style=\"color: white;background-color: red;\">tables</td></tr></table></center>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 20,
       "text": [
        "<itable.itable.PrettyTable at 0x329d9d0>"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Only for a subset of rows/columns\n",
      "pt = itable.PrettyTable(df, tstyle=itable.TableStyle(theme=\"theme1\"), center=True)\n",
      "cs = itable.CellStyle()\n",
      "cs.set(\"background-color\", \"red\")\n",
      "cs.set(\"color\", \"white\")\n",
      "pt.set_cell_style(style=cs, rows=[1,2], cols=[2])\n",
      "pt"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<center><table style=\"color: black;border: 1px solid black;\"><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font-weight: bold;background-color: lightgray;\">f</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">x</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">y</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">z</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.023432</td><td style=\"color: black;border: 1px solid black;\">1</td><td style=\"color: black;border: 1px solid black;\">6</td><td style=\"color: black;border: 1px solid black;\">testing</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.234321</td><td style=\"color: black;border: 1px solid black;\">2</td><td style=\"color: white;background-color: red;\">4</td><td style=\"color: black;border: 1px solid black;\">pretty</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.5555</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: white;background-color: red;\">3</td><td style=\"color: black;border: 1px solid black;\">tables</td></tr></table></center>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 21,
       "text": [
        "<itable.itable.PrettyTable at 0x7f5cb0070650>"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Set styles using keywords (these are all CSS properties, just replace \"-\" with \"_\")\n",
      "pt = itable.PrettyTable(df, tstyle=itable.TableStyle(theme=\"theme1\"), center=True)\n",
      "pt.set_cell_style(font_weight=\"bold\", color=\"purple\", background_color=\"yellow\", rows=[1], cols=[2,3])\n",
      "pt"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<center><table style=\"color: black;border: 1px solid black;\"><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font-weight: bold;background-color: lightgray;\">f</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">x</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">y</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">z</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.023432</td><td style=\"color: black;border: 1px solid black;\">1</td><td style=\"color: black;border: 1px solid black;\">6</td><td style=\"color: black;border: 1px solid black;\">testing</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.234321</td><td style=\"color: black;border: 1px solid black;\">2</td><td style=\"color: purple;font-weight: bold;background-color: yellow;\">4</td><td style=\"color: purple;font-weight: bold;background-color: yellow;\">pretty</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;border: 1px solid black;\">0.5555</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">tables</td></tr></table></center>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 22,
       "text": [
        "<itable.itable.PrettyTable at 0x7f5cb0064fd0>"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Set the header style. corner sets the corner cell\n",
      "# \"indices\" applies the style only to certain indices\n",
      "pt = itable.PrettyTable(df, tstyle=itable.TableStyle(theme=\"theme1\"), center=True, header_row=True)\n",
      "pt.set_row_header_style(color=\"blue\")\n",
      "pt.set_col_header_style(background_color=\"white\", font_weight=\"bold\", indices=[2])\n",
      "pt.set_corner_style(background_color=\"red\")\n",
      "pt"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<center><table style=\"color: black;border: 1px solid black;\"><tr style=\"color: black;border: 1px solid black;\"><td style=\"background-color: red;\"></td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">f</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">x</td><td style=\"font-weight: bold;background-color: white;\">y</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">z</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: blue;\">0</td><td style=\"color: black;border: 1px solid black;\">0.023432</td><td style=\"color: black;border: 1px solid black;\">1</td><td style=\"color: black;border: 1px solid black;\">6</td><td style=\"color: black;border: 1px solid black;\">testing</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: blue;\">1</td><td style=\"color: black;border: 1px solid black;\">0.234321</td><td style=\"color: black;border: 1px solid black;\">2</td><td style=\"color: black;border: 1px solid black;\">4</td><td style=\"color: black;border: 1px solid black;\">pretty</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: blue;\">2</td><td style=\"color: black;border: 1px solid black;\">0.5555</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">tables</td></tr></table></center>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 23,
       "text": [
        "<itable.itable.PrettyTable at 0x7f5cb0068dd0>"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Update current styles\n",
      "pt = itable.PrettyTable(df, tstyle=itable.TableStyle(theme=\"theme1\"), center=True, header_row=True)\n",
      "pt.set_cell_style(font_weight=\"bold\", color=\"purple\", background_color=\"yellow\", rows=[1], cols=[2,3])\n",
      "pt.update_cell_style(background_color=\"pink\", rows=[1], cols=[3])\n",
      "pt.update_row_header_style(background_color=\"blue\", indices=[0])\n",
      "pt.update_col_header_style(color=\"red\")\n",
      "pt.update_corner_style(background_color=\"purple\")\n",
      "pt"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<center><table style=\"color: black;border: 1px solid black;\"><tr style=\"color: black;border: 1px solid black;\"><td style=\"background-color: purple;\"></td><td style=\"color: red;font-weight: bold;background-color: lightgray;\">f</td><td style=\"color: red;font-weight: bold;background-color: lightgray;\">x</td><td style=\"color: red;font-weight: bold;background-color: lightgray;\">y</td><td style=\"color: red;font-weight: bold;background-color: lightgray;\">z</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font_weight: bold;background-color: blue;\">0</td><td style=\"color: black;border: 1px solid black;\">0.023432</td><td style=\"color: black;border: 1px solid black;\">1</td><td style=\"color: black;border: 1px solid black;\">6</td><td style=\"color: black;border: 1px solid black;\">testing</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font_weight: bold;background-color: lightgray;\">1</td><td style=\"color: black;border: 1px solid black;\">0.234321</td><td style=\"color: black;border: 1px solid black;\">2</td><td style=\"color: purple;font-weight: bold;background-color: yellow;\">4</td><td style=\"color: purple;font-weight: bold;background-color: pink;\">pretty</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font_weight: bold;background-color: lightgray;\">2</td><td style=\"color: black;border: 1px solid black;\">0.5555</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">3</td><td style=\"color: black;border: 1px solid black;\">tables</td></tr></table></center>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 24,
       "text": [
        "<itable.itable.PrettyTable at 0x7f5cb00701d0>"
       ]
      }
     ],
     "prompt_number": 24
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Set cell formats\n",
      "df = pd.DataFrame({\"FloatColumn\": [0.0324234, 0.23432111, 0.555555], \"SciNotColumn\":[1e10, 4.232e-6, 53e-8]})\n",
      "pt = itable.PrettyTable(df, tstyle=itable.TableStyle(theme=\"theme1\"), center=True)\n",
      "pt.set_cell_style(cols=[0], format_function=lambda x: \"%.3f\"%x)\n",
      "def SciNot(x):\n",
      "    xx = \"%.2E\"%x\n",
      "    base, exp = xx.split(\"E\")\n",
      "    return \"%s &times; 10<sup>%s</sup>\"%(base, int(exp))\n",
      "pt.set_cell_style(cols=[1], format_function=SciNot)\n",
      "pt"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<center><table style=\"color: black;border: 1px solid black;\"><tr style=\"color: black;border: 1px solid black;\"><td style=\"color: black;font-weight: bold;background-color: lightgray;\">FloatColumn</td><td style=\"color: black;font-weight: bold;background-color: lightgray;\">SciNotColumn</td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"\">0.032</td><td style=\"\">1.00 &times; 10<sup>10</sup></td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"\">0.234</td><td style=\"\">4.23 &times; 10<sup>-6</sup></td></tr><tr style=\"color: black;border: 1px solid black;\"><td style=\"\">0.556</td><td style=\"\">5.30 &times; 10<sup>-7</sup></td></tr></table></center>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 25,
       "text": [
        "<itable.itable.PrettyTable at 0x7f5cb0060b90>"
       ]
      }
     ],
     "prompt_number": 25
    }
   ],
   "metadata": {}
  }
 ]
}