{
"cells": [
{
"cell_type": "code",
"execution_count": 195,
"metadata": {
"nbsphinx": "hidden"
},
"outputs": [],
"source": [
"from datascience import *\n",
"import pandas as pd\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('fivethirtyeight')\n",
"import math\n",
"from scipy import stats\n",
"import numpy as np\n",
"import warnings\n",
"warnings.simplefilter(\"ignore\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data 8 `datascience` Reference\n",
"\n",
"This notebook serves as an interactive, Data 8-friendly reference for the `datascience` library."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `Table` Functions and Methods"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `Table()`\n",
"Create an empty table, usually to extend with data"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": []
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_table = Table()\n",
"new_table"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"datascience.tables.Table"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(new_table)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `Table.read_table()`\n",
"\n",
"```python\n",
"Table.read_table(filename)\n",
"```\n",
"\n",
"Creates a table by reading the CSV file named `filename` (a string)."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 8/5/2015 8:29 Civic Center BART (7th at Market) 72 8/5/2015 8:36 Townsend at 7th 65 269 Subscriber 94518 \n",
" \n",
" \n",
" 459672 408 9/18/2014 17:11 Harry Bridges Plaza (Ferry Building) 50 9/18/2014 17:17 Embarcadero at Sansome 60 429 Subscriber 94111 \n",
" \n",
" \n",
" 903647 723 8/25/2015 7:26 San Francisco Caltrain 2 (330 Townsend) 69 8/25/2015 7:38 Market at 10th 67 631 Subscriber 94025 \n",
" \n",
" \n",
" 452829 409 9/15/2014 8:29 Steuart at Market 74 9/15/2014 8:36 Market at 4th 76 428 Subscriber 94925 \n",
" \n",
" \n",
" 491023 224 10/9/2014 16:13 Santa Clara at Almaden 4 10/9/2014 16:17 San Jose Diridon Caltrain Station 2 144 Subscriber 94117 \n",
" \n",
" \n",
" 723352 519 4/13/2015 17:04 Howard at 2nd 63 4/13/2015 17:12 San Francisco Caltrain (Townsend at 4th) 70 629 Subscriber 94061 \n",
" \n",
" \n",
" 524499 431 10/31/2014 16:36 Townsend at 7th 65 10/31/2014 16:43 Civic Center BART (7th at Market) 72 630 Subscriber 94706 \n",
" \n",
" \n",
" 518524 389 10/28/2014 8:48 Market at Sansome 77 10/28/2014 8:54 2nd at South Park 64 458 Subscriber 94610 \n",
" \n",
" \n",
" 710070 11460 4/2/2015 18:13 Powell Street BART 39 4/2/2015 21:24 Powell Street BART 39 375 Subscriber 94107 \n",
" \n",
" \n",
" 793149 616 6/4/2015 5:26 Embarcadero at Bryant 54 6/4/2015 5:36 Embarcadero at Sansome 60 289 Subscriber 94105 \n",
" \n",
" \n",
"
\n",
"... (99990 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"876419 | 413 | 8/5/2015 8:29 | Civic Center BART (7th at Market) | 72 | 8/5/2015 8:36 | Townsend at 7th | 65 | 269 | Subscriber | 94518\n",
"459672 | 408 | 9/18/2014 17:11 | Harry Bridges Plaza (Ferry Building) | 50 | 9/18/2014 17:17 | Embarcadero at Sansome | 60 | 429 | Subscriber | 94111\n",
"903647 | 723 | 8/25/2015 7:26 | San Francisco Caltrain 2 (330 Townsend) | 69 | 8/25/2015 7:38 | Market at 10th | 67 | 631 | Subscriber | 94025\n",
"452829 | 409 | 9/15/2014 8:29 | Steuart at Market | 74 | 9/15/2014 8:36 | Market at 4th | 76 | 428 | Subscriber | 94925\n",
"491023 | 224 | 10/9/2014 16:13 | Santa Clara at Almaden | 4 | 10/9/2014 16:17 | San Jose Diridon Caltrain Station | 2 | 144 | Subscriber | 94117\n",
"723352 | 519 | 4/13/2015 17:04 | Howard at 2nd | 63 | 4/13/2015 17:12 | San Francisco Caltrain (Townsend at 4th) | 70 | 629 | Subscriber | 94061\n",
"524499 | 431 | 10/31/2014 16:36 | Townsend at 7th | 65 | 10/31/2014 16:43 | Civic Center BART (7th at Market) | 72 | 630 | Subscriber | 94706\n",
"518524 | 389 | 10/28/2014 8:48 | Market at Sansome | 77 | 10/28/2014 8:54 | 2nd at South Park | 64 | 458 | Subscriber | 94610\n",
"710070 | 11460 | 4/2/2015 18:13 | Powell Street BART | 39 | 4/2/2015 21:24 | Powell Street BART | 39 | 375 | Subscriber | 94107\n",
"793149 | 616 | 6/4/2015 5:26 | Embarcadero at Bryant | 54 | 6/4/2015 5:36 | Embarcadero at Sansome | 60 | 289 | Subscriber | 94105\n",
"... (99990 rows omitted)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips = Table.read_table('https://raw.githubusercontent.com/data-8/textbook/gh-pages/data/trip.csv')\n",
"trips"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.with_column`\n",
"\n",
"\n",
"```python\n",
"tbl = Table()\n",
"tbl.with_column(name, values) \n",
"tbl.with_columns(n1, v1, n2, v2,...)\n",
"```\n",
"\n",
"\n",
"\n",
"Creates a new table by adding a column with name `name` and values `values` to another table. `name` should be a string and `values` should have as many entries as there are rows in the original table. If `values` is a single value, then every row of that column has the value `values`. \n",
"\n",
"\n",
"\n",
"In the examples below, we start with adding a column to the existing table `trips` with `values` being an array we construct from existing tables. \n",
""
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code Difference in terminal \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 8/5/2015 8:29 Civic Center BART (7th at Market) 72 8/5/2015 8:36 Townsend at 7th 65 269 Subscriber 94518 7 \n",
" \n",
" \n",
" 459672 408 9/18/2014 17:11 Harry Bridges Plaza (Ferry Building) 50 9/18/2014 17:17 Embarcadero at Sansome 60 429 Subscriber 94111 10 \n",
" \n",
" \n",
" 903647 723 8/25/2015 7:26 San Francisco Caltrain 2 (330 Townsend) 69 8/25/2015 7:38 Market at 10th 67 631 Subscriber 94025 2 \n",
" \n",
" \n",
" 452829 409 9/15/2014 8:29 Steuart at Market 74 9/15/2014 8:36 Market at 4th 76 428 Subscriber 94925 2 \n",
" \n",
" \n",
" 491023 224 10/9/2014 16:13 Santa Clara at Almaden 4 10/9/2014 16:17 San Jose Diridon Caltrain Station 2 144 Subscriber 94117 2 \n",
" \n",
" \n",
" 723352 519 4/13/2015 17:04 Howard at 2nd 63 4/13/2015 17:12 San Francisco Caltrain (Townsend at 4th) 70 629 Subscriber 94061 7 \n",
" \n",
" \n",
" 524499 431 10/31/2014 16:36 Townsend at 7th 65 10/31/2014 16:43 Civic Center BART (7th at Market) 72 630 Subscriber 94706 7 \n",
" \n",
" \n",
" 518524 389 10/28/2014 8:48 Market at Sansome 77 10/28/2014 8:54 2nd at South Park 64 458 Subscriber 94610 13 \n",
" \n",
" \n",
" 710070 11460 4/2/2015 18:13 Powell Street BART 39 4/2/2015 21:24 Powell Street BART 39 375 Subscriber 94107 0 \n",
" \n",
" \n",
" 793149 616 6/4/2015 5:26 Embarcadero at Bryant 54 6/4/2015 5:36 Embarcadero at Sansome 60 289 Subscriber 94105 6 \n",
" \n",
" \n",
"
\n",
"... (99990 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code | Difference in terminal\n",
"876419 | 413 | 8/5/2015 8:29 | Civic Center BART (7th at Market) | 72 | 8/5/2015 8:36 | Townsend at 7th | 65 | 269 | Subscriber | 94518 | 7\n",
"459672 | 408 | 9/18/2014 17:11 | Harry Bridges Plaza (Ferry Building) | 50 | 9/18/2014 17:17 | Embarcadero at Sansome | 60 | 429 | Subscriber | 94111 | 10\n",
"903647 | 723 | 8/25/2015 7:26 | San Francisco Caltrain 2 (330 Townsend) | 69 | 8/25/2015 7:38 | Market at 10th | 67 | 631 | Subscriber | 94025 | 2\n",
"452829 | 409 | 9/15/2014 8:29 | Steuart at Market | 74 | 9/15/2014 8:36 | Market at 4th | 76 | 428 | Subscriber | 94925 | 2\n",
"491023 | 224 | 10/9/2014 16:13 | Santa Clara at Almaden | 4 | 10/9/2014 16:17 | San Jose Diridon Caltrain Station | 2 | 144 | Subscriber | 94117 | 2\n",
"723352 | 519 | 4/13/2015 17:04 | Howard at 2nd | 63 | 4/13/2015 17:12 | San Francisco Caltrain (Townsend at 4th) | 70 | 629 | Subscriber | 94061 | 7\n",
"524499 | 431 | 10/31/2014 16:36 | Townsend at 7th | 65 | 10/31/2014 16:43 | Civic Center BART (7th at Market) | 72 | 630 | Subscriber | 94706 | 7\n",
"518524 | 389 | 10/28/2014 8:48 | Market at Sansome | 77 | 10/28/2014 8:54 | 2nd at South Park | 64 | 458 | Subscriber | 94610 | 13\n",
"710070 | 11460 | 4/2/2015 18:13 | Powell Street BART | 39 | 4/2/2015 21:24 | Powell Street BART | 39 | 375 | Subscriber | 94107 | 0\n",
"793149 | 616 | 6/4/2015 5:26 | Embarcadero at Bryant | 54 | 6/4/2015 5:36 | Embarcadero at Sansome | 60 | 289 | Subscriber | 94105 | 6\n",
"... (99990 rows omitted)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.with_column(\n",
" \"Difference in terminal\", abs(trips.column(\"Start Terminal\") - trips.column(\"End Terminal\"))\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also create a new table by adding two new columns with column name followed by the array values."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Cookie Quantity \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 \n",
" \n",
" \n",
" Chocolate chip 15 \n",
" \n",
" \n",
" Red velvet 15 \n",
" \n",
" \n",
" Oatmeal raisin 10 \n",
" \n",
" \n",
" Peanut butter 5 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Cookie | Quantity\n",
"Sugar cookies | 10\n",
"Chocolate chip | 15\n",
"Red velvet | 15\n",
"Oatmeal raisin | 10\n",
"Peanut butter | 5"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies = Table()\n",
"cookies = cookies.with_columns(\n",
" \"Cookie\", make_array(\"Sugar cookies\", \"Chocolate chip\", \"Red velvet\", \"Oatmeal raisin\", \"Peanut butter\"),\n",
" \"Quantity\", make_array(10, 15, 15, 10, 5)\n",
")\n",
"cookies"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Cookie Quantity Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Cookie | Quantity | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prices = make_array(1.00, 1.50, 1.75, 1.25, 1.00)\n",
"cookies = cookies.with_column(\"Price ($)\", prices)\n",
"cookies"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the last examples, we add a new column `Delicious` with one value \"yes,\" and we see every column has the same value."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Cookie Quantity Price ($) Delicious \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 yes \n",
" \n",
" \n",
" Chocolate chip 15 1.5 yes \n",
" \n",
" \n",
" Red velvet 15 1.75 yes \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 yes \n",
" \n",
" \n",
" Peanut butter 5 1 yes \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Cookie | Quantity | Price ($) | Delicious\n",
"Sugar cookies | 10 | 1 | yes\n",
"Chocolate chip | 15 | 1.5 | yes\n",
"Red velvet | 15 | 1.75 | yes\n",
"Oatmeal raisin | 10 | 1.25 | yes\n",
"Peanut butter | 5 | 1 | yes"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.with_column(\"Delicious\", \"yes\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.column()`\n",
"\n",
"```python\n",
"tbl.column(column_name_or_index)\n",
"```\n",
"\n",
"\n",
"\n",
"\n",
"Outputs an array of values of the column `column_name_or_index`. `column_name_or_index` is a string of the column name or number which is the index of the column. \n",
"\n",
"\n",
"\n",
"In the examples below, we start with an array of the `Cookie` column from the table `cookies` first by the column name then by using the index of the column.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Sugar cookies', 'Chocolate chip', 'Red velvet', 'Oatmeal raisin',\n",
" 'Peanut butter'], dtype='\n",
" \n",
" \n",
" Trip ID Duration Bike # Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 269 94518 \n",
" \n",
" \n",
" 459672 408 429 94111 \n",
" \n",
" \n",
" 903647 723 631 94025 \n",
" \n",
" \n",
" 452829 409 428 94925 \n",
" \n",
" \n",
" 491023 224 144 94117 \n",
" \n",
" \n",
" 723352 519 629 94061 \n",
" \n",
" \n",
" 524499 431 630 94706 \n",
" \n",
" \n",
" 518524 389 458 94610 \n",
" \n",
" \n",
" 710070 11460 375 94107 \n",
" \n",
" \n",
" 793149 616 289 94105 \n",
" \n",
" \n",
"\n",
"... (99990 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Bike # | Zip Code\n",
"876419 | 413 | 269 | 94518\n",
"459672 | 408 | 429 | 94111\n",
"903647 | 723 | 631 | 94025\n",
"452829 | 409 | 428 | 94925\n",
"491023 | 224 | 144 | 94117\n",
"723352 | 519 | 629 | 94061\n",
"524499 | 431 | 630 | 94706\n",
"518524 | 389 | 458 | 94610\n",
"710070 | 11460 | 375 | 94107\n",
"793149 | 616 | 289 | 94105\n",
"... (99990 rows omitted)"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.select(\"Trip ID\", \"Duration\", \"Bike #\", \"Zip Code\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, we can use indexes to select columns. Remember to start indexing at 0."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Bike # Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 269 94518 \n",
" \n",
" \n",
" 459672 408 429 94111 \n",
" \n",
" \n",
" 903647 723 631 94025 \n",
" \n",
" \n",
" 452829 409 428 94925 \n",
" \n",
" \n",
" 491023 224 144 94117 \n",
" \n",
" \n",
"
\n",
"... (99995 rows omitted)
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"trips.select(0, 1, 8, 10).show(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.drop()`\n",
"\n",
"```python\n",
"tbl.drop(col1, col2, ...)\n",
"```\n",
"\n",
"Creates a copy of a table _without_ the specified columns. Each column is the column name as a string or integer index."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Cookie Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 1 \n",
" \n",
" \n",
" Chocolate chip 1.5 \n",
" \n",
" \n",
" Red velvet 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 1.25 \n",
" \n",
" \n",
" Peanut butter 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Cookie | Price ($)\n",
"Sugar cookies | 1\n",
"Chocolate chip | 1.5\n",
"Red velvet | 1.75\n",
"Oatmeal raisin | 1.25\n",
"Peanut butter | 1"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.drop(\"Quantity\")"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Station End Terminal Bike # Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 8/5/2015 8:29 Civic Center BART (7th at Market) 72 Townsend at 7th 65 269 94518 \n",
" \n",
" \n",
" 459672 408 9/18/2014 17:11 Harry Bridges Plaza (Ferry Building) 50 Embarcadero at Sansome 60 429 94111 \n",
" \n",
" \n",
" 903647 723 8/25/2015 7:26 San Francisco Caltrain 2 (330 Townsend) 69 Market at 10th 67 631 94025 \n",
" \n",
" \n",
" 452829 409 9/15/2014 8:29 Steuart at Market 74 Market at 4th 76 428 94925 \n",
" \n",
" \n",
" 491023 224 10/9/2014 16:13 Santa Clara at Almaden 4 San Jose Diridon Caltrain Station 2 144 94117 \n",
" \n",
" \n",
" 723352 519 4/13/2015 17:04 Howard at 2nd 63 San Francisco Caltrain (Townsend at 4th) 70 629 94061 \n",
" \n",
" \n",
" 524499 431 10/31/2014 16:36 Townsend at 7th 65 Civic Center BART (7th at Market) 72 630 94706 \n",
" \n",
" \n",
" 518524 389 10/28/2014 8:48 Market at Sansome 77 2nd at South Park 64 458 94610 \n",
" \n",
" \n",
" 710070 11460 4/2/2015 18:13 Powell Street BART 39 Powell Street BART 39 375 94107 \n",
" \n",
" \n",
" 793149 616 6/4/2015 5:26 Embarcadero at Bryant 54 Embarcadero at Sansome 60 289 94105 \n",
" \n",
" \n",
"
\n",
"... (99990 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Station | End Terminal | Bike # | Zip Code\n",
"876419 | 413 | 8/5/2015 8:29 | Civic Center BART (7th at Market) | 72 | Townsend at 7th | 65 | 269 | 94518\n",
"459672 | 408 | 9/18/2014 17:11 | Harry Bridges Plaza (Ferry Building) | 50 | Embarcadero at Sansome | 60 | 429 | 94111\n",
"903647 | 723 | 8/25/2015 7:26 | San Francisco Caltrain 2 (330 Townsend) | 69 | Market at 10th | 67 | 631 | 94025\n",
"452829 | 409 | 9/15/2014 8:29 | Steuart at Market | 74 | Market at 4th | 76 | 428 | 94925\n",
"491023 | 224 | 10/9/2014 16:13 | Santa Clara at Almaden | 4 | San Jose Diridon Caltrain Station | 2 | 144 | 94117\n",
"723352 | 519 | 4/13/2015 17:04 | Howard at 2nd | 63 | San Francisco Caltrain (Townsend at 4th) | 70 | 629 | 94061\n",
"524499 | 431 | 10/31/2014 16:36 | Townsend at 7th | 65 | Civic Center BART (7th at Market) | 72 | 630 | 94706\n",
"518524 | 389 | 10/28/2014 8:48 | Market at Sansome | 77 | 2nd at South Park | 64 | 458 | 94610\n",
"710070 | 11460 | 4/2/2015 18:13 | Powell Street BART | 39 | Powell Street BART | 39 | 375 | 94107\n",
"793149 | 616 | 6/4/2015 5:26 | Embarcadero at Bryant | 54 | Embarcadero at Sansome | 60 | 289 | 94105\n",
"... (99990 rows omitted)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.drop(\"End Date\", \"Subscriber Type\")"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Terminal End Date End Terminal \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 8/5/2015 8:29 72 8/5/2015 8:36 65 \n",
" \n",
" \n",
" 459672 408 9/18/2014 17:11 50 9/18/2014 17:17 60 \n",
" \n",
" \n",
" 903647 723 8/25/2015 7:26 69 8/25/2015 7:38 67 \n",
" \n",
" \n",
" 452829 409 9/15/2014 8:29 74 9/15/2014 8:36 76 \n",
" \n",
" \n",
" 491023 224 10/9/2014 16:13 4 10/9/2014 16:17 2 \n",
" \n",
" \n",
" 723352 519 4/13/2015 17:04 63 4/13/2015 17:12 70 \n",
" \n",
" \n",
" 524499 431 10/31/2014 16:36 65 10/31/2014 16:43 72 \n",
" \n",
" \n",
" 518524 389 10/28/2014 8:48 77 10/28/2014 8:54 64 \n",
" \n",
" \n",
" 710070 11460 4/2/2015 18:13 39 4/2/2015 21:24 39 \n",
" \n",
" \n",
" 793149 616 6/4/2015 5:26 54 6/4/2015 5:36 60 \n",
" \n",
" \n",
"
\n",
"... (99990 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Terminal | End Date | End Terminal\n",
"876419 | 413 | 8/5/2015 8:29 | 72 | 8/5/2015 8:36 | 65\n",
"459672 | 408 | 9/18/2014 17:11 | 50 | 9/18/2014 17:17 | 60\n",
"903647 | 723 | 8/25/2015 7:26 | 69 | 8/25/2015 7:38 | 67\n",
"452829 | 409 | 9/15/2014 8:29 | 74 | 9/15/2014 8:36 | 76\n",
"491023 | 224 | 10/9/2014 16:13 | 4 | 10/9/2014 16:17 | 2\n",
"723352 | 519 | 4/13/2015 17:04 | 63 | 4/13/2015 17:12 | 70\n",
"524499 | 431 | 10/31/2014 16:36 | 65 | 10/31/2014 16:43 | 72\n",
"518524 | 389 | 10/28/2014 8:48 | 77 | 10/28/2014 8:54 | 64\n",
"710070 | 11460 | 4/2/2015 18:13 | 39 | 4/2/2015 21:24 | 39\n",
"793149 | 616 | 6/4/2015 5:26 | 54 | 6/4/2015 5:36 | 60\n",
"... (99990 rows omitted)"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.drop(3, 6, 8, 9, 10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.relabel()`\n",
"\n",
"```python\n",
"tbl.relabel(old_label, new_label)\n",
"```\n",
"\n",
"Modifies the table by changing the label of the column named `old_label` to `new_label`. `old_label` can be a string column name or an integer index."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Cookie Quantity Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Cookie | Quantity | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Cookie Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Cookie | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.relabel(\"Quantity\", \"Amount remaining\")"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.relabel(0, \"Type\")"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.show()`\n",
"\n",
"```python\n",
"tbl.show(n)\n",
"```\n",
"\n",
"Displays the first `n` rows of a table. If no `n` is provided, displays all rows."
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 8/5/2015 8:29 Civic Center BART (7th at Market) 72 8/5/2015 8:36 Townsend at 7th 65 269 Subscriber 94518 \n",
" \n",
" \n",
" 459672 408 9/18/2014 17:11 Harry Bridges Plaza (Ferry Building) 50 9/18/2014 17:17 Embarcadero at Sansome 60 429 Subscriber 94111 \n",
" \n",
" \n",
" 903647 723 8/25/2015 7:26 San Francisco Caltrain 2 (330 Townsend) 69 8/25/2015 7:38 Market at 10th 67 631 Subscriber 94025 \n",
" \n",
" \n",
" 452829 409 9/15/2014 8:29 Steuart at Market 74 9/15/2014 8:36 Market at 4th 76 428 Subscriber 94925 \n",
" \n",
" \n",
" 491023 224 10/9/2014 16:13 Santa Clara at Almaden 4 10/9/2014 16:17 San Jose Diridon Caltrain Station 2 144 Subscriber 94117 \n",
" \n",
" \n",
"
\n",
"... (99995 rows omitted)
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"trips.show(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.sort()`\n",
"\n",
"```python\n",
"tbl.sort(column_name_or_index, descending=False)\n",
"```\n",
"\n",
"Sorts the rows in the table by the values in the column `column_name_or_index` in ascending order by default. Set `descending=True` to sort in descending order. `column_name_or_index` can be a string column label or an integer index."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Peanut butter | 5 | 1\n",
"Oatmeal raisin | 10 | 1.25\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.sort(\"Price ($)\")"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Red velvet | 15 | 1.75\n",
"Chocolate chip | 15 | 1.5\n",
"Oatmeal raisin | 10 | 1.25\n",
"Sugar cookies | 10 | 1\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# sort in descending order\n",
"cookies.sort(\"Amount remaining\", descending = True)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Chocolate chip | 15 | 1.5\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1\n",
"Red velvet | 15 | 1.75\n",
"Sugar cookies | 10 | 1"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# alphabetical order\n",
"cookies.sort(0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.where()`\n",
"\n",
"```python\n",
"tbl.where(column, predicate)\n",
"```\n",
"\n",
"Filters the table for rows where the `predicate` is true. `predicate` should be one of the provided `are.` functions. `column` can be a string column label or an integer index. A list of available predicates can be found [below](#Table.where-Predicates)."
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.where(\"Amount remaining\", are.above(10))"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Chocolate chip | 15 | 1.5"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.where(0, are.equal_to(\"Chocolate chip\"))"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# if predicate is a value, look for rows where the column == the value\n",
"# equivalent to cookies.where(1, are.eual_to(15))\n",
"cookies.where(1, 15)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.where(\"Price ($)\", are.below(1.25))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.take()`\n",
"\n",
"```python\n",
"tbl.take(row_index, ...)\n",
"```\n",
"\n",
"Returns a copy of the table with only the specified rows included. Rows are specified by their integer index, so `0` for the first, `1` for the second, etc."
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
" Oatmeal raisin 10 1.25 \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75\n",
"Oatmeal raisin | 10 | 1.25\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.take(0)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Peanut butter 5 1 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Peanut butter | 5 | 1"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.take(cookies.num_rows - 1)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Type Amount remaining Price ($) \n",
" \n",
" \n",
" \n",
" \n",
" Sugar cookies 10 1 \n",
" \n",
" \n",
" Chocolate chip 15 1.5 \n",
" \n",
" \n",
" Red velvet 15 1.75 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Type | Amount remaining | Price ($)\n",
"Sugar cookies | 10 | 1\n",
"Chocolate chip | 15 | 1.5\n",
"Red velvet | 15 | 1.75"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cookies.take(0, 1, 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `Table` Visualizations"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Actor Total Gross Number of Movies Average per Movie #1 Movie Gross \n",
" \n",
" \n",
" \n",
" \n",
" Harrison Ford 4871.7 41 118.8 Star Wars: The Force Awakens 936.7 \n",
" \n",
" \n",
" Samuel L. Jackson 4772.8 69 69.2 The Avengers 623.4 \n",
" \n",
" \n",
" Morgan Freeman 4468.3 61 73.3 The Dark Knight 534.9 \n",
" \n",
" \n",
" Tom Hanks 4340.8 44 98.7 Toy Story 3 415 \n",
" \n",
" \n",
" Robert Downey, Jr. 3947.3 53 74.5 The Avengers 623.4 \n",
" \n",
" \n",
" Eddie Murphy 3810.4 38 100.3 Shrek 2 441.2 \n",
" \n",
" \n",
" Tom Cruise 3587.2 36 99.6 War of the Worlds 234.3 \n",
" \n",
" \n",
" Johnny Depp 3368.6 45 74.9 Dead Man's Chest 423.3 \n",
" \n",
" \n",
" Michael Caine 3351.5 58 57.8 The Dark Knight 534.9 \n",
" \n",
" \n",
" Scarlett Johansson 3341.2 37 90.3 The Avengers 623.4 \n",
" \n",
" \n",
"
\n",
"... (40 rows omitted)
"
],
"text/plain": [
"Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross\n",
"Harrison Ford | 4871.7 | 41 | 118.8 | Star Wars: The Force Awakens | 936.7\n",
"Samuel L. Jackson | 4772.8 | 69 | 69.2 | The Avengers | 623.4\n",
"Morgan Freeman | 4468.3 | 61 | 73.3 | The Dark Knight | 534.9\n",
"Tom Hanks | 4340.8 | 44 | 98.7 | Toy Story 3 | 415\n",
"Robert Downey, Jr. | 3947.3 | 53 | 74.5 | The Avengers | 623.4\n",
"Eddie Murphy | 3810.4 | 38 | 100.3 | Shrek 2 | 441.2\n",
"Tom Cruise | 3587.2 | 36 | 99.6 | War of the Worlds | 234.3\n",
"Johnny Depp | 3368.6 | 45 | 74.9 | Dead Man's Chest | 423.3\n",
"Michael Caine | 3351.5 | 58 | 57.8 | The Dark Knight | 534.9\n",
"Scarlett Johansson | 3341.2 | 37 | 90.3 | The Avengers | 623.4\n",
"... (40 rows omitted)"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"actors = Table().read_table(\"https://github.com/data-8/textbook/raw/gh-pages/data/actors.csv\")\n",
"actors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.scatter()`\n",
"\n",
"```python\n",
"tbl.scatter(x_column, y_column, fit_line=False)\n",
"```\n",
"\n",
"Creates a scatter plot with `x_column` on the horizontal axis and `y_column` on the vertical axis. These labels can be column names as strings or integer indices. Set `fit_line=True` to include a line of best fit for the data. You can find more examples in the [textbook](https://www.inferentialthinking.com/chapters/07/Visualization.html#Scatter-Plots-and-Line-Graphs)."
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAFWCAYAAACPYiGzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3de1RU5f4/8Pc4CpoCAziMIoIHQRQiMQqSyhuYF7zkpcA86s9lYmiJdBAlE9MQxUvhKbzkpbRUUNQy0zAT/Gqo1DnLNDUO5kpNkJHLIKCADvP7w9g6chtxLgz7/VqLtZy9n9nz2Q+4P/Nc9rMlKpVKAyIiEqVWpg6AiIhMh0mAiEjEmASIiESMSYCISMSYBIiIRIxJgIhIxJgEiIhEjEmAiEjEmARIkJOTY+oQzBbrrulYd02nj7pjEiAiEjEmASIiEWMSICISMSYBIiIRYxIgIhIxJgEiIhFjEiAiEjEmASIiEWtt6gCIWpL8gmLEJyWjqKQUdjZWWDBrAhw6ykwdFlG92BIg0qP4pGTkKotQVXUPucoixK/daeqQiBrEJECkR0UlpWglkQAAWkkkKFSVmjgiooYxCRDpkZ2NFao1GgBAtUYDOxsrE0dE1DAmASI9WjBrAroo7GBh0RqODnZYMGuCqUMiahAHhon0yKGjDImx4aYOg0hnbAkQEYkYkwARkYgxCRARiRiTABGRiDEJEBGJGGcHEZHoiXm5D7YEiEj0xLzcB5MAEYmemJf7YBIgItET83IfTAJEJHpiXu6DA8NEJHpiXu6DLQEiIhFjEiAiEjEmASIiEWMSICISMSYBIiIRYxIgIhIxJgEiIhFjEiAiEjEmASIiEWMSICISMSYBIiIRYxIgIhIxJgEiIhFjEiAiEjEmASIiEWMSICISMSYBIiIRYxIgIhIxJgEiIhFjEiAiEjEmASIiETNpEli9ejVkMhnmzp0rbAsPD4dMJtP6CQoK0npfZWUl5s6dC1dXVzg6OiI0NBTXr1/XKnPt2jWEhITA0dERrq6uiI6ORlVVlVHOi4jIXLQ21Qf//PPP2Lp1K7y8vGrtGzBgADZs2CC8trCw0NofExODgwcPYvPmzbC1tcWCBQsQEhKCY8eOQSqVQq1WIyQkBLa2tjh48CCKi4sRHh4OjUaDlStXGvzciIjMhUlaAiUlJZg+fTo++eQTyGSyWvstLS2hUCiEH1tbW633fvnll1iyZAkGDhwIHx8fbNiwAefPn0dGRgYA4OjRo7h48SI2bNgAHx8fDBw4EIsXL8a2bdtw69YtY50mEVGzZ5IkMGfOHIwePRr9+/evc//Jkyfh5uYGX19fzJ49Gzdv3hT2nTlzBnfv3sWgQYOEbU5OTvDw8MDp06cBAFlZWfDw8ICTk5NQJjAwEJWVlThz5oyBzoqIyPwYvTto69atuHz5slZ3z8OCgoIwcuRIuLi44OrVq4iLi8OoUaOQkZEBS0tLKJVKSKVS2Nvba71PLpdDqVQCAJRKJeRyudZ+e3t7SKVSoUxdcnJynvDszB/roOlYd03Humu6xurO3d29wf1GTQI5OTlYsmQJDh06VKufv8a4ceOEf3t5ecHHxwfe3t5IS0vDqFGj6j22RqOBRCIRXj/874fVtx1ovLJaupycHNHXQVOx7pqOddd0+qg7oyaBrKwsFBYWom/fvsI2tVqNzMxMbNmyBbm5ubC0tNR6T+fOneHo6IjLly8DABwcHKBWq1FYWIiOHTsK5QoKChAQECCUqekaqlFYWAi1Wl2rhUBEzUN+QTHik5JRVFIKOxsrLJg1AQ4da48Zkn4ZdUwgODgYmZmZOH78uPDTp08fjBs3DsePH6+zdVBYWIi8vDwoFAoAgI+PD9q0aYP09HShzPXr15GdnQ1/f38AgJ+fH7Kzs7Wmjaanp8PS0hI+Pj4GPksiaor4pGTkKotQVXUPucoixK/daeqQRMGoLYGaef8Pe+qpp2BrawtPT0+UlZVh+fLlGDVqFBQKBa5evYolS5ZALpdjxIgRAAAbGxtMmjQJsbGxkMvlwhRRLy8vDBgwAAAwaNAg9OrVC2+99Rbi4uJQXFyM2NhYTJ48GdbW1sY8ZSLSUVFJKVr93V3bSiJBoarUxBGJg8nuE6iLVCrFhQsXkJycjJKSEigUCrz88sv4/PPPYWVlJZSLj4+HVCrF1KlTUVFRgX79+mH9+vWQSqXCcVJSUhAVFYWhQ4eibdu2GD9+POLi4kx1akTUCDsbK+Qqi9BKIkG1RgM7G6vG30RPTKJSqTSmDoKaBw7QNR3rrulq6k5ZoEL82p0oVHFMQFdmNzBMRFQfh44yJMaGmzoM0eECckREIsYkQEQkYkwCREQixiRARCRiTAJERCLGJEBEJGJMAkREIsb7BIhMiIumkamxJUBkQlw0jUyNSYDIhLhoGpkakwCRCdnZWKFac3/5Li6aRqbAJEBkQgtmTUAXhR0sLFrD0cEOC2ZNMHVIJDIcGCYyIS6aRqbGlgARkYgxCRARiRiTABGRiDEJEBGJGJMAEZGIMQkQEYkYkwARkYgxCRARiRiTABGRiDEJEBGJGJMAEZGIMQkQEYkYkwARkYgxCRARiRiTABGRiDEJEBGJGJMAEZGIMQkQEYkYkwARkYgxCRARiRiTABGRiDEJEBGJGJMAEZGIMQkQEYkYkwARkYgxCRARiRiTABGRiDEJEBGJmE5J4PDhw0hJSRFe5+bmYsSIEejevTvCwsJw+/ZtgwVIRESGo1MSSEhIQG5urvD6vffeQ05ODsaMGYMffvgBK1asaNKHr169GjKZDHPnzhW2aTQaLFu2DD179kSnTp0QHByMixcvar1PpVIhLCwMzs7OcHZ2RlhYGFQqlVaZ8+fPY/jw4ejUqRN69eqFhIQEaDSaJsVJRNRS6ZQELl++jKeffhoAUFFRgbS0NCxduhSrVq3CokWL8M033zz2B//888/YunUrvLy8tLavWbMGSUlJSEhIwNGjRyGXyzFmzBiUlpYKZd58802cPXsWu3fvRmpqKs6ePYsZM2YI+2/duoUxY8bAwcEBR48exfLly/HJJ5/g008/few4iYhaMp2SQEVFBdq1awcAyMrKQlVVFYKCggAAPXr0wI0bNx7rQ0tKSjB9+nR88sknkMlkwnaNRoN169Zhzpw5GD16NDw9PbFu3TqUlZUhNTUVAJCdnY0jR44gMTER/v7+8PPzw8cff4y0tDTk5OQAAHbv3o07d+5g3bp18PT0xOjRoxEREYG1a9eyNUBE9BCdkkDXrl3xyy+/AAC+//579O7dW7h4FxQUoEOHDo/1oTUX+f79+2ttv3LlCvLz8zFo0CBhW7t27RAQEIDTp08DuJ+EOnToAH9/f6HMCy+8gPbt22uV6du3r5C4ACAwMBB5eXm4cuXKY8VKRNSStdal0KRJk/Dhhx/i+++/xy+//IKEhARh3y+//IIePXro/IFbt27F5cuXsWHDhlr78vPzAQByuVxru1wuR15eHgBAqVTC3t4eEolE2C+RSNCxY0colUqhjKOjY61j1Ozr1q1bnbHVtCTEjHXQdKy7pmPdNV1jdefu7t7gfp2SwDvvvAMbGxv88ssvCA0NxZQpU4R9BQUFCA0N1eUwyMnJwZIlS3Do0CFYWFjUW+7hCzxwv5vo0Yv+oxorU9MNVNd7azRWWS1dTk6O6OugqVh3Tce6azp91J1OSQAAJk+ejMmTJ9favnbtWp0/LCsrC4WFhejbt6+wTa1WIzMzE1u2bMGpU6cA3P+27uTkJJQpKCgQvsk7ODigoKBA66Kv0WhQWFioVaamVfDwMYDarQwiIjHTaUzgzz//xNmzZ4XXlZWVWL58OaZMmYJt27bp/GHBwcHIzMzE8ePHhZ8+ffpg3LhxOH78ONzc3KBQKJCeni68p6KiAidPnhTGAPz8/FBWVoasrCyhTFZWFsrLy7XKnDx5EhUVFUKZ9PR0dO7cGS4uLjrHS0TU0unUEvjXv/4FDw8PPPPMMwCApUuXYu3atXBzc8OBAwegVqsxderURo8jk8m0ZgMBwFNPPQVbW1t4enoCAMLDw7F69Wq4u7vDzc0Nq1atQvv27TF+/HgAgIeHB4KCghAZGYk1a9ZAo9EgMjISQ4YMEZpF48ePR0JCAmbOnImoqChcunQJiYmJiI6ObrA7iEjM8guKEZ+UjKKSUtjZWGHBrAlw6Chr/I1k1nRqCZw7dw4BAQEA7ne97NixA7GxsTh16hQiIyOxZcsWvQUUERGBmTNnYu7cuRg4cCBu3LiBvXv3wsrKSiizceNGPP300xg7dizGjRuHp59+Wmug2cbGBvv27UNeXh4GDhyIuXPnYtasWXj77bf1FidRSxOflIxcZRGqqu4hV1mE+LU7TR0SGYFOLYGSkhLY29sDAM6ePYuioiK8+uqrAIABAwbUOdNHV999953Wa4lEgpiYGMTExNT7HltbW3z22WcNHtfLywuHDh1qclxEYlNUUopWf7eUW0kkKFSVNvIOagl0agnI5XL8+eefAICMjAy4uLjA2dkZAHD79m20asV16IjMnZ2NFar/nkVXrdHAzsaqkXdQS6BTS2DIkCGIi4vDH3/8gS+++AL//Oc/hX2///47B1uJWoAFsyYgfu1OFKoejAlQy6dTEli0aBFKS0uxd+9eDBgwAFFRUcK+ffv2oV+/fgYLkIiMw6GjDImx4aYOg4xMpyRgbW1dbx/8w9M5iYjIvOh8sxgAlJaW4r///S+Ki4tha2uLZ599VmvWDhERmRedk8DKlSuRmJiIO3fuCEswPPXUU4iMjNTqHiIiIvOhUxLYuHEj4uPj8dprryEkJERYliElJQXx8fGwtbXFtGnTDB0rERHpmc5J4M0338TKlSu1tgcGBsLGxgafffYZkwARkRnSee2g4cOH17lv+PDhwj0ERERkXnRKAra2tvWuWZ2TkwNbW1u9BkVERMahUxIIDg5GXFwcvv76a63HM3777bdYunQpgoODDRYgEREZjs43i/3666+YOnUqLC0t0bFjRxQWFqKyshLPPvssFi1aZOg4iYjIAHRKAjY2Njh8+DAOHDiAzMxM4T6BF198EcHBwZBKpYaOk8gkuLwytXSNJoGqqips374dffv2xejRozF69GhjxEXULNQsr9xKIhGWV+bSCtSSNDomYGFhgZiYGOHxjERiwuWVqaXTaWDYzc0Nf/31l6FjIWp2uLwytXQ6JYF58+ZhxYoVuHTpkqHjIWpWFsyagC4KO1hYtIajgx2XV6YWR6eB4c2bN6O8vBwvvPAC3N3doVAotJ7VK5FIsHfvXoMFSWQqXF6ZWjqdkkBZWRmcnZ2Fp4mVl5cbNCgiIjIOnZLAkSNHDB0HERGZAB8OTEQkYg22BEpLSyGVSvHUU08J23bv3q1VpkOHDhg2bJhhoiMiIoOqNwmcOnUKw4cPx9q1axEaGgoAUKvVCAsLg0QiEdYQkkgk+P777+Hn52eciImISG/q7Q7atm0bnnvuOSEBPGzr1q3IysrC6dOnMXz4cGzbts2gQRIRkWHUmwROnTpVZwIAgK5du8Ld3R09evTA2LFjcfLkSYMFSEREhlNvEsjNzUWPHj20tkkkErz44otaD5dXKBTIzc01XIRERGQw9Y4JSKVSqNVqrW2tWrXCgQMHtLbdu3cPrVpxkhERkTmq9+rt4uKCM2fONHqAM2fOCDeRERGReak3CQwePBgbN25ESUlJvW9WqVTYuHEjhgwZYpDgiIjIsOpNAu+88w7u3r2LYcOG4ejRo1pdQ2q1Gj/++COGDx+OqqoqzJo1yyjBEhGRftU7JtCxY0fs3r0bEydOxPjx42FpaQmFQgEAyM/PR2VlJbp06YJdu3ZBLpcbLWAiItKfBu8YfuaZZ/DLL78gNTUV//d//4fc3FxoNBr4+/ujX79+QnIgIiLz1OgCcpaWlpg4cSImTpxojHiIiMiIOLeTiEjEmASIiESMSYCISMR0eqgMUUuVX1CM+KRkFJWUws7GCgtmTYBDR5mpwyIyGrYESNTik5KRqyxCVdU95CqLEL92p6lDIjIqJgEStaKSUrSSSAAArSQSFKpKTRwRkXHV2x302muv6XwQiUSCXbt26SUgImOys7FCrrIIrSQSVGs0sLOxavxNRC1IvUmguLgYkr+/IRG1VAtmTUD82p0oVD0YEyASk3qTwJEjR4wZB5FJOHSUITE23NRhEJkMxwSIiETssZJAeXk5fvvtN/znP/+p9aOLjRs3IiAgAF27dkXXrl0xePBgpKWlCfvDw8Mhk8m0foKCgrSOUVlZiblz58LV1RWOjo4IDQ3F9evXtcpcu3YNISEhcHR0hKurK6Kjo1FVVfU4p0pEJAo63SdQVVWFyMhI7Nq1q9bTxmoUFRU1ehxHR0csXrwY3bt3R3V1NXbu3ImJEyciIyMDTz/9NABgwIAB2LBhg/AeCwsLrWPExMTg4MGD2Lx5M2xtbbFgwQKEhITg2LFjwtPQQkJCYGtri4MHD6K4uBjh4eHQaDRYuXKlLqdLRCQaOiWB1atX4/Dhw1i9ejUiIiKwdOlSWFpaYufOnSguLsaSJUt0+rDg4GCt1wsXLsTmzZvx888/C0ng4SWrH1VSUoIvv/wSSUlJGDhwIABgw4YN8Pb2RkZGBgIDA3H06FFcvHgR586dg5OTEwBg8eLFmD17NhYuXAhra2udYiUiEgOduoP27duH6OhoYSXRgIAATJs2DUeOHIGHhwcyMzMf+4PVajX27NmD8vJy+Pn5CdtPnjwJNzc3+Pr6Yvbs2bh586aw78yZM7h79y4GDRokbHNycoKHhwdOnz4NAMjKyoKHh4eQAAAgMDAQlZWVOj0uk4hITHRqCVy7dg2enp6QSqVo06YN7ty5I+z7f//v/+Gdd97B0qVLdfrA8+fP45VXXkFFRQXat2+Pr776Cl5eXgCAoKAgjBw5Ei4uLrh69Sri4uIwatQoZGRkwNLSEkqlElKpFPb29lrHlMvlUCqVAAClUlnrITf29vaQSqVCmfrk5OTodA4tGeug6Vh3Tce6a7rG6s7d3b3B/TolATs7O5SXlwO4369//vx59O3bF8D9Lprbt2/rchghoOPHj6OkpAT79+9HeHg4Dhw4AE9PT4wbN04o5+XlBR8fH3h7eyMtLQ2jRo2q95gajUbrnob67m9o7L6HxiqrpcvJyRF9HTQV667pWHdNp4+60ykJ9OnTR/gGHxwcjPj4eFRWVqJ169ZITEzU6s5pjIWFBVxdXYXj/ve//8XatWvx6aef1irbuXNnODo64vLlywAABwcHqNVqFBYWomPHjkK5goICBAQECGVquoZqFBYWQq1W8zGYRESP0GlMICIiAs7OzgCAuXPn4rnnnsPChQsxf/58yOVyrFq1qskBVFdX1zt9s7CwEHl5ecJAsY+PD9q0aYP09HShzPXr15GdnQ1/f38AgJ+fH7Kzs7Wmjaanp8PS0hI+Pj5NjpOIqCXSqSXw/PPP4/nnnwcAyGQy7Nq1C2VlZbhz585jfbv+4IMP8Morr6BLly4oKytDamoqTpw4IRxv+fLlGDVqFBQKBa5evYolS5ZALpdjxIgRAAAbGxtMmjQJsbGxkMvlwhRRLy8vDBgwAAAwaNAg9OrVC2+99Rbi4uJQXFyM2NhYTJ48mTODiIgeoVMSWLNmDUJDQ7Wmbnbo0AEdOnSAUqnEzp07ERER0ehx8vPzERYWBqVSCWtra3h5eSE1NRWBgYG4c+cOLly4gOTkZJSUlEChUODll1/G559/DiurB4t6xcfHQyqVYurUqaioqEC/fv2wfv16SKVSAIBUKkVKSgqioqIwdOhQtG3bFuPHj0dcXNzj1g0RUYsnUalUmsYK2dnZ4YcffoCvr2+tfWfOnMGgQYN0ulmMmjcO0DUd667pWHdNp4+602lMQKOpP0+UlJTUuquXiIjMQ73dQSdPntS6CWzHjh3IyMjQKnPnzh0cPHgQPXr0MFiARERkOPUmgWPHjiEhIQHA/fn1W7ZsqVVGIpHA3d2da/IQEZmpepPA3LlzERkZCY1Gg86dO+PgwYN49tlntcpYWFjwwTNERGas3iQglUqFGTc3btyApaWl0YIiIiLj0GmKqKWlJSorK5GSkoITJ05ApVLB1tYWL730El5//XUmCCI9yC8oRnxSMopKHjzq0qGjzNRhUQun0+yggoICDBw4EBERETh27Bjy8vKQkZGB2bNnY+DAgSgsLDR0nEQtXnxSMnKVRaiquodcZRHi1+40dUgkAjq1BBYtWoQbN27g66+/Rv/+/YXtx44dw7Rp07Bo0aI61/4hIt0VlZSi1d9jbK0kEhSqSk0c0ZNhy8Y86NQSSEtLw6JFi7QSAAD0798f77//vtYjIonMWX5BMSIWr8Okd1cgYvE6KAtURvtsOxsrVP99T061RgM7G6tG3tG8sWVjHnRKAqWlpVoPaXlY165dUVpq3t9YiGqY8sK1YNYEdFHYwcKiNRwd7LBg1gSjfbYhtLSWTUulU3dQ9+7dhTV+HrV37150795d74ERmYIpL1wOHWVIjA032ucZmp2NFXKVRWglkbSIlk1LpVMSmDlzJt555x0UFhbitddeg0KhgFKpxJ49e5CWlsbxAGoxeOHSnwWzJiB+7U4Uqh6MCVDzo1MS+Oc//4mysjKsWLECP/zwAyQSCTQaDWxtbbFs2TK88cYbho6TyCh44dKfltayaal0WkW0xt27d3HhwgWoVCrIZDJ4enqiTZs2hoyPjIirOdam6wwX1l3Tse6azqCriPbu3Rvnzp3T2tamTRv07t0b/fv3R+/evZkAqMXjDBdq6ertDrp69Wq9j30kEgtzmuHCefnUFDpNESUSK3Oau89WCzVFg0mAK4SS2JnT3H1zarVQ89Hg7KBly5bBzs6u0YNIJBKsX79eb0ERNRfmNMOF01upKRpMAufOndPp0ZFsMRCZHqe3UlM0mAS2b99e58Pliaj5MadWCzUfHBgmIhIxJgEiIhFjEiAiErF6xwSKi4uNGQcREZmATgvIERHpW80dzlf/yoOzU2fe4Wwi7A4iMiJTPrmsuam5w/nuPTXvcDYhJoEm4H9kaiou7fAA73BuHpgEmoD/kampeOF7wJzWZWrJOCbQBPyP/ICxV64095UyubTDAzV3OF+5Vtns12VqydgSaAJ+g3nA2K0ic2+FmdOCdIZWc4fziuhJWLMo3KySeUvClkATcI2WB4zdKjL3VhiXdqDmhkmgCfgf+QFjd2+wO0V35t51RsbB7iB6Isbu3jB1d4o5zQwz964zMg62BOiJGLtVZOpWWM2FtZVEIlxYm2ur0Ny7zsg42BIgegzmdGHlBAbSBZMA0WMwpwurqbvOSH8M2Q3J7iCix2BOM8NM3XVG+mPIbkgmAaLHwAsrmYIhuyHZHURE1MwZshuSSYCIqJkz5PgOu4OIiJo5Q3ZDMglQi8a7ZokaZtTuoI0bNyIgIABdu3ZF165dMXjwYKSlpQn7NRoNli1bhp49e6JTp04IDg7GxYsXtY6hUqkQFhYGZ2dnODs7IywsDCqV9nSp8+fPY/jw4ejUqRN69eqFhIQEaP7uTyNx4V2zRA0zahJwdHTE4sWLcezYMaSnp6Nfv36YOHEifvvtNwDAmjVrkJSUhISEBBw9ehRyuRxjxoxBaemDkfA333wTZ8+exe7du5GamoqzZ89ixowZwv5bt25hzJgxcHBwwNGjR7F8+XJ88skn+PTTT415qtRMmNPNXUSmYNQkEBwcjMGDB8PV1RVubm5YuHAhOnTogJ9//hkajQbr1q3DnDlzMHr0aHh6emLdunUoKytDamoqACA7OxtHjhxBYmIi/P394efnh48//hhpaWnIyckBAOzevRt37tzBunXr4OnpidGjRyMiIgJr165la0CEzOnmLiJTMNnsILVajT179qC8vBx+fn64cuUK8vPzMWjQIKFMu3btEBAQgNOnTwMAsrKy0KFDB/j7+wtlXnjhBbRv316rTN++fdGuXTuhTGBgIPLy8nDlyhUjnR01F7xrlqhhRh8YPn/+PF555RVUVFSgffv2+Oqrr+Dl5SVcxOVyuVZ5uVyOvLw8AIBSqYS9vT0kfzfvAUAikaBjx45QKpVCGUdHx1rHqNnXrVu3emOraU2IWUusg1kTgoR/lxTfREnxTYN8TkusO2Nh3TVdY3Xn7u7e4H6jJwF3d3ccP34cJSUl2L9/P8LDw3HgwAFh/8MXeOD+YPGjF/1HNVamphuorvc+GpuY5eTkiL4Omop113Ssu6bTR90ZvTvIwsICrq6u6NOnDxYtWgRvb2+sXbsWCoUCAIRv9DUKCgqEb/IODg4oKCjQ6tvXaDQoLCzUKlPXMYDarQwiIrEz+R3D1dXVqKqqgouLCxQKBdLT04V9FRUVOHnypDAG4Ofnh7KyMmRlZQllsrKyUF5erlXm5MmTqKioEMqkp6ejc+fOcHFxMdJZERGZB6N2B33wwQd45ZVX0KVLF2HWz4kTJ7Br1y5IJBKEh4dj9erVcHd3h5ubG1atWoX27dtj/PjxAAAPDw8EBQUhMjISa9asgUajQWRkJIYMGSI0icaPH4+EhATMnDkTUVFRuHTpEhITExEdHd1odxARNV+88c8wjJoE8vPzERYWBqVSCWtra3h5eSE1NRWBgYEAgIiICNy5cwdz586FSqWCr68v9u7dCyurB9P6Nm7ciHnz5mHs2LEAgGHDhmHFihXCfhsbG+zbtw9RUVEYOHAgZDIZZs2ahbffftuYp0pEemZOT3UzJxKVSsXJ8wSAA3RPgnXXdLrW3aR3V6Cq6p7w2sKiNb78KNqQoTV7ZjkwTETUFLzxzzCYBIjILPDGP8PgKqJEZBb4VDfDYBKgx2JuMzTMLV4iY2N3ED0Wc1ua2dziJTI2JgF6LOa2NLO5xUtkbEwC9FjMbYaGucVLZGxMAvRYzG2GhrnFS2RsHBimx2JuMzTMLV4iY2NLgIhIxNgSIFF7dApp2IRh+GznIU4pJdFgEmiBODded48uSjZ17mq4OHVqEYuU8e+AdMHuoBaIc+N19+gU0tKyOw1OKc0vKEbE4nWY9O4KRCxeB2WByugx64p/B6QLJoEWiHPjdffoFNIOHdeL8tQAABasSURBVNo1OKXUnC6s/DsgXTAJtECcG6+7R6eQbl0Z1eCUUnO6sPLvgHTBMYEWaMGsCYhfuxOFqgd9wVS3uqaQNjQGYGdjJYwhNPcLK/8OSBd8qAwJ+GCUxikLVLUurA4dZay7J8C6azp91B1bAkSPgTefUUvDMQEiIhFjEiAiEjF2BxEZEG/YouaOLQESFWPf7GVO9xWQOLElQKLy6DIR76/+Au3aWhrsm7o53VdA4sSWAInKoxflU2d+N+g3dd6wRc0dkwCJyqMXZUBj0G/qfKgNNXfsDmqBOBhZv0fvorW1bo/iW+VNvgO4pq6v/pUHZ6fOter6Se4r4O+RjIF3DLdAEYvXaS1t0EVhp9OFSIx3btZ3B7Cuaur6zu3baPfUUzrX9eMc+3F/j+ZGjH93+sI7hqlOHIzU3ZPeAWzIuubvkYyBSaAFMqdFzp6UqbtMauoa0P/Ar5h+j2Q6HBhugcQ0GGnqefg1dd2mtVTvdS2m3yOZDlsCLZCYFjkzdZdJTV0bol9bTL9HMh0mgRbI1F0kxsQuE6Inw+6gFsjUXSTGxC4ToifDlkALZOouEmNilwnRk2ESaIHMuYukuXdlNff4iB4Xu4NaIHPuImnuXVnNPT6ix8WWQAvUnLpIHvebc3Pvymru8RE9LrYEyKAe95tzc191s7nHR/S4mATIoB73m3Nz78pq7vERPS52B5FePdr909bCAhWVd3UepG5OXVl1ae7xET0uJgHSq0ef3GVn0x5dFHbCKp1hocMQsXhds5ldw9k+JHbsDiK9erT753ZFFRJjw/HlR9FYsygcnyUfalazazjbh8SOSYD0qrGB0+Y2u6a5xUNkbEZNAh999BEGDhyIrl27onv37ggJCcGFCxe0yoSHh0Mmk2n9BAUFaZWprKzE3Llz4erqCkdHR4SGhuL69etaZa5du4aQkBA4OjrC1dUV0dHRqKqqMvg5il1Y6DD8+dcNnL14GX/+dQMzJgzX2t/cZtcYO578gmJELF6HSe+uQMTidVAWqAz6eUSNMWoSOHHiBKZNm4a0tDTs378frVu3xquvvori4mKtcgMGDEB2drbws3v3bq39MTEx+Pbbb7F582YcPHgQpaWlCAkJgVqtBgCo1WqEhISgrKwMBw8exObNm7F//34sWLDAaOcqVp8lH0I3p054ppcrujl1wmfJB7X2N7fZNcaOh91P1NwYdWB47969Wq83bNgAZ2dnnDp1CsOGDRO2W1paQqFQ1HmMkpISfPnll0hKSsLAgQOF43h7eyMjIwOBgYE4evQoLl68iHPnzsHJyQkAsHjxYsyePRsLFy6EtbW1gc6wZXiSwdLGulea2+waY8fD7idqbkw6JlBWVobq6mrIZNoXmJMnT8LNzQ2+vr6YPXs2bt68Kew7c+YM7t69i0GDBgnbnJyc4OHhgdOnTwMAsrKy4OHhISQAAAgMDERlZSXOnDlj4LMyf0/ybbW5dfc0N6wfam5MOkV0/vz58Pb2hp+fn7AtKCgII0eOhIuLC65evYq4uDiMGjUKGRkZsLS0hFKphFQqhb29vdax5HI5lEolAECpVEIul2vtt7e3h1QqFcrUJScnR49nZ55ycnJw9a883L2nFrZduVapc91MGO6PDTsPQ1V6GzZWT2HCcH/R1Ksu5ynm+mkI66DpGqu7xh52ZLIk8N577+HUqVP4/vvvIZVKhe3jxo0T/u3l5QUfHx94e3sjLS0No0aNqvd4Go0Gkr+b2QC0/v2w+rYDjVdWS1fzdCxnp85aq5A6OtjpXDfuAF54/lnDBtoM6fpkMbHWT0MM8VQ2sdBH3ZmkOygmJgZ79uzB/v370a1btwbLdu7cGY6Ojrh8+TIAwMHBAWq1GoWFhVrlCgoKhG//Dg4Otb7xFxYWQq1W12ohUG3NbfBWn/Q9O6fmeNErvuRsHzJLRk8C8+bNQ2pqKvbv348ePXo0Wr6wsBB5eXnCQLGPjw/atGmD9PR0ocz169eRnZ0Nf39/AICfnx+ys7O1po2mp6fD0tISPj4+ej6jlqdmsLTmBq+HB4XNfYqjvmfn1Bzv7j01Z/uQWTJqEoiKisKOHTuwadMmyGQy5OfnIz8/H2VlZQDuDxS///77yMrKwpUrV3D8+HGEhoZCLpdjxIgRAAAbGxtMmjQJsbGxyMjIwK+//ooZM2bAy8sLAwYMAAAMGjQIvXr1wltvvYVff/0VGRkZiI2NxeTJkzkz6AmZ+xRHfc/O4WwfMndGHRPYtGkTAGD06NFa2+fNm4eYmBhIpVJcuHABycnJKCkpgUKhwMsvv4zPP/8cVlYPZlHEx8dDKpVi6tSpqKioQL9+/bB+/XphbEEqlSIlJQVRUVEYOnQo2rZti/HjxyMuLs54J9tCmftFT99PXas5HsDZPmSeJCqVSmPqIKh50GWQKWLxulqDxmsWNZ95/41RFqgQv3ansKDdky4YV3O8K9fy4OzUmQvQNQEHhptOH3XHJEACXf6gGruIinVVTl7Imo5113T6qDsuJU2PpbE7bB9dSjp+7c5mdYcwEWnjKqKkV+Y+ZkAkNkwCpFdcFoHIvDAJkF615BvNiFoijgmQXjW3VUKJqGFsCRARiRiTABGRiDEJEBGJGJMAEZGIMQkQEYkYkwARkYgxCRARiRiTABGRiHEVUSIiEWNLgIhIxJgEiIhEjEmAiEjEmASIiESMSYCISMSYBETko48+wsCBA9G1a1d0794dISEhuHDhglYZjUaDZcuWoWfPnujUqROCg4Nx8eJFE0XcfK1evRoymQxz584VtrHu6nfjxg289dZb6N69OxQKBfz9/XHixAlhP+uubmq1GnFxcXjmmWegUCjwzDPPIC4uDvfu3RPKPGndMQmIyIkTJzBt2jSkpaVh//79aN26NV599VUUFxcLZdasWYOkpCQkJCTg6NGjkMvlGDNmDEpL+ZjIGj///DO2bt0KLy8vre2su7qpVCoMGTIEGo0Gu3btwunTp7FixQrI5XKhDOuubomJidi0aRMSEhKQlZWF5cuXY+PGjfjoo4+EMk9ad7xPQMTKysrg7OyM7du3Y9iwYdBoNOjZsyemT5+OqKgoAMCdO3fg7u6ODz/8EFOnTjVxxKZXUlKC/v37Y82aNVixYgU8PT2xcuVK1l0DlixZgp9++glpaWl17mfd1S8kJAS2trZYv369sO2tt95CcXExUlJS9FJ3bAmIWFlZGaqrqyGTyQAAV65cQX5+PgYNGiSUadeuHQICAnD69GlThdmszJkzB6NHj0b//v21trPu6vfdd9/B19cXU6dOhZubG1566SV89tln0Pz9LGrWXf1eeOEFnDhxAv/73/8AAL///juOHz+OwYMHA9BP3fHxkiI2f/58eHt7w8/PDwCQn58PAFrN9JrXeXl5Ro+vudm6dSsuX76MDRs21NrHuqvfn3/+ic2bN2PmzJmYM2cOzp07h3nz5gEAwsLCWHcNmDNnDsrKyuDv7w+pVIp79+4hKioKb775JgD9/N0xCYjUe++9h1OnTuH777+HVCrV2ieRSLReazSaWtvEJicnB0uWLMGhQ4dgYWFRbznWXW3V1dXo06cPFi1aBADo3bs3Ll++jE2bNiEsLEwox7qrbe/evUhOTsamTZvQs2dPnDt3DvPnz4ezszMmT54slHuSumN3kAjFxMRgz5492L9/P7p16yZsVygUAAClUqlVvqCgoNY3DbHJyspCYWEh+vbtC3t7e9jb2+Onn37Cpk2bYG9vDzs7OwCsu7ooFAp4eHhobevRowf++usvYT/AuqtLbGws3n77bYwbNw5eXl4IDQ3FrFmz8PHHHwPQT90xCYjMvHnzkJqaiv3796NHjx5a+1xcXKBQKJCeni5sq6iowMmTJ+Hv72/sUJuV4OBgZGZm4vjx48JPnz59MG7cOBw/fhxubm6su3q88MILuHTpkta2S5cuoWvXrgD4d9eQ27dv12qpS6VSVFdXA9BP3Unnz5//gd4ipmYtKioKycnJ+OKLL+Dk5ITy8nKUl5cDACwsLCCRSKBWq/Hxxx/Dzc0NarUaCxYsQH5+PhITE2FpaWniMzCdtm3bQi6Xa/3s3r0bzs7OmDhxIuuuAU5OTkhISECrVq3QqVMnHDt2DHFxcYiMjISvry/rrgHZ2dlISUmBm5sb2rRpg+PHj+PDDz/E2LFjERgYqJe64xRREamZBfSoefPmISYmBsD9vsTly5fjiy++gEqlgq+vL1atWgVPT09jhmoWgoODhSmiAOuuIWlpaViyZAkuXboEJycnTJ8+HTNmzBD6rVl3dSstLcXSpUtx4MABFBQUQKFQYNy4cYiOjkbbtm0BPHndMQkQEYkYxwSIiESMSYCISMSYBIiIRIxJgIhIxJgEiIhEjEmAiEjEmARI77Zv3w6ZTAZnZ2eoVCqtfffu3YNMJsOyZcuMHteyZcsgk8m0HsjRHFVXV2P+/Pnw8PCAra0t3njjjXrLent7QyaTCQuKPSo4OBgymQxDhw41VLjw9vZGeHi4wY5PhsUF5Mhgbt26hcTERHzwwQemDsWsfPPNN1i/fj3i4uLg5+cnrEtUHysrK3z33XcoLS2FlZWVsP3q1avIzMzU2mYIX331FaytrQ36GWQ4bAmQwQwaNAifffaZsNytGFRWVj7xMbKzswEAM2fOhJ+fH9zc3BosP2DAALRp0wb79+/X2p6SkgJnZ2d4e3s/cUwN6d27N/7xj38Y9DPIcJgEyGBqnnS0atWqBsvVdNM8Kjw8XOsCduXKFchkMmzZsgWLFy9Gjx494OTkhLCwMNy+fRuXL1/G2LFj0aVLF/Tp0wc7duyo8/Oys7MxYsQIdO7cGR4eHli6dKmwIFeNwsJCvPvuu+jVqxccHBzw/PPP44svvtAqU9Pt9dNPP2HKlClwdnZGYGBgg+d65MgRDB48GJ06dYKzszPeeOMN5OTkCPu9vb2xfPlyAICdnR1kMhm2b9/e4DHbtWuHkSNHIiUlRWt7SkoKQkJC6lxS+MaNG5gxYwZcXV3h4OCAgIAArff/5z//gUwmw6FDh2q9991330X37t1x9+5dIeZHu4P+/PNPTJ8+Hd27d4eDgwNeeuklfPvtt1plLl26hIkTJwqL7z399NOYMmVKs++ua2mYBMhgOnXqhOnTp2Pr1q24evWq3o770UcfIS8vD+vWrUNMTAz27t2LyMhI/POf/8Qrr7yCr776Cl5eXpg1a1adD9yeOHEiBgwYgO3bt2P8+PFYuXIlEhIShP23bt3CkCFDcPjwYcyfPx+7du3C0KFD8e6779b5QJmwsDC4uLhg27ZtDXZ9HTlyBK+//jrat2+PLVu2YPXq1bh48SKGDh2K3NxcAPe7VmrGAH744Qf88MMPGDJkSKN1EhoaihMnTuD69esA7j8H+dKlSwgNDa1Vtry8HMHBwThy5AhiY2Oxfft2eHl5YcaMGUKi8/X1hbu7e63EUlVVhX379mHs2LFo06ZNnbH89ddfCAoKwm+//Yb4+Hjs3LkTvXv3xuTJk3Hw4EGhXEhICPLy8rB69Wrs2bMHixYtgqWlZa2ETIbFMQEyqDlz5uDzzz9HQkICkpKS9HLMf/zjH8IzVwMDA3Hy5EmkpKRgw4YNCAkJAQD06dMHhw4dwjfffINevXppvX/KlCmIjIwEcL/LqrS0FElJSQgPD4dMJsP69etx7do1ZGZmonv37gDud7mUlJQgISEB06ZNQ+vWD/7rjBo1CkuWLGk07ri4OHTr1g2pqanC+59//nk899xz+PTTTxEfH4/evXvD0dFR2Kerl156CV26dMGuXbsQGRmJ5ORk+Pv7w9XVtVbZ7du3448//sC3336Ll19+GQAwePBgKJVKxMXFYdKkSZBKpQgJCcGqVatQUlICGxsbAMDhw4dRXFxcZ3KpsXz5cmg0Gnz33XfCeEZgYCCuX7+O+Ph4DB8+HIWFhfjjjz+wY8cODB8+XHjva6+9pvM5k36wJUAGZWtri7fffhvJycla3R5Poub5qjVqnovwcFeMTCaDXC4Xvhk/bMyYMVqvx40bh7KyMqHV8OOPP8LX1xcuLi64d++e8BMYGIiioiL8/vvvWu8fMWJEozGXl5fj119/xdixY7USSLdu3eDv74+ffvqp0WM0RCKRICQkBCkpKaiqqsLevXvrvVBnZmbC0dFRSAA1Xn/9dRQUFAjn9/rrr6OyshLffPONUCYlJQXu7u7w9fWtN5Yff/wRgwcPhrW1da36++2333Dr1i3Y2dmhW7duWLx4MbZu3Yo//vjjic6fmo5JgAxu5syZsLW1RXx8vF6O9+j4QU23RF3b6xqoret5rACEZ7LevHkTmZmZ6Nixo9bPlClTAABFRUVa7+/UqVOjMatUKmg0GuFJUA9TKBQoLi5u9BiNCQ0Nxe+//46EhATcvn27VrKrUVxcXG8cNfsBwNnZGQEBAUhOThbO4fDhw0Jrqz43b95EcnJyrfpbuHAhgPv1J5FI8PXXX8PHxweLFy+Gr68vevfujc2bNzf5/Klp2B1EBtehQwdERkbi/fffx+zZs2vtr1kXvaqqSuv5vY9ebPXl5s2baN++vdZrAOjcuTOA+wOycrlcGKB91KOzdXR5lqtMJoNEIqlzplR+fn6j00B14ebmhueeew4ff/wxRo4cWe/zI2xtbWs96asmDgBasYSEhCAiIgJXr17F0aNHUVVV1WiXjZ2dHfr27Ys5c+bUub+mnrt164YNGzZAo9Hg3Llz2LhxI/71r3/B2dm5VmuPDIctATKKN998E46OjoiLi6u1r+YxgxcuXBC2qVQqZGVlGSSWffv2ab3es2cPOnToIIwdBAYG4n//+x+cnJzQp0+fWj9NmXffvn17+Pj44JtvvoFarRa2X716FVlZWXjxxRef7KT+Nnv2bAwdOhTTp0+vt8yLL76I69ev49SpU1rbU1NTIZfLtZ4H/Oqrr6Jt27bYvXs3UlJSEBAQABcXlwZjCAwMxPnz59GzZ8866+/Rp11JJBI888wzWLp0KQDUOZhPhsOWABmFpaUloqOjERERUWtfUFAQrK2tERERgZiYGFRWVuLf//631rd1fdq6dSuqq6vx7LPP4scff8S2bdswf/584ZvzzJkzsW/fPgwbNgwzZ86Em5sbbt++jZycHGRmZmLnzp1N+twFCxbg9ddfR0hICKZNm4by8nIsW7YM1tbWePvtt/VybqNGjcKoUaMaLPPGG29g/fr1mDRpEhYuXAhHR0fs2rUL6enpSExM1HqmrbW1NYYNG4ZNmzbhxo0bWLNmTaMxvPfeewgMDMTw4cMxffp04c7xixcv4s8//0RSUhJ+++03zJ8/H2PHjoWrqyvUajV27NiB1q1bo1+/fk9cD6Q7JgEymokTJ+Lf//53rUFAmUyGlJQUvPfee5g6dSocHR0RHR2NjIwMnDhxQu9x7NixA9HR0Vi5ciWsra0RFRWF6OhoYb+NjQ0OHz6MhIQEJCYmIi8vDzY2NnB3d8fIkSOb/LlBQUHYtWsXEhISMHXqVFhYWODFF1/EkiVLhC4SY2jfvj2+++47xMbG4oMPPkBZWRnc3Ny0Zlc9LCQkBHv37kXbtm0xevToRo/ftWtXpKenY/ny5fjwww9RUFAAOzs79OrVCxMmTABwf/zByckJSUlJyM3NhaWlJTw9PZGSkgIfHx+9nzPVj4+XJCISMY4JEBGJGJMAEZGIMQkQEYkYkwARkYgxCRARiRiTABGRiDEJEBGJGJMAEZGIMQkQEYnY/wf82tZImhr52wAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"actors.scatter('Number of Movies', 'Total Gross')"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAFWCAYAAABjO4bgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd1RU59bA4d+ABUUUQYoNG9g7BhUrNkQU7IVocr0qRk2i5GrQ6LUr0ajR+10s0RQTRbAG1NhBo6KiJmqMJagJdpCmgtLn+8MwV/owMJRhP2u5VjjnZc6eHdic2ec971HExsYqEUIIoXP0ijsAIYQQ2iEFXgghdJQUeCGE0FFS4IUQQkdJgRdCCB0lBV4IIXSUFHghhNBRUuCFEEJHSYEvI0JDQ4s7hFJLcqc5yZ3mCiN3UuCFEEJHSYEXQggdJQVeCCF0lBR4IYTQUVLghRBCR0mBF0IIHSUFXgghdJQUeCGE0FHlijuAkiY8Mobl3r5EP3+JSTUj5k4bg3kN4+IOSwgh8k3O4DNZ7u3L44hokpJSeBwRzfL1O4o7JCGE0IgU+Eyin79ET6EAQE+hICr2ZTFHJIQQmpECn4lJNSPSlG+eQ56mVGJSzaiYIxJCCM1Igc9k7rQx1LYwoUKFctQyN2HutDHFHZIQQmhELrJmYl7DmLXzpxR3GEIIUWByBi+EEDpKCrwQQugoKfBCCKGjpMALIYSOkgIvhBA6Sgq8EELoKCnwQgiho6TACyGEjpICL4QQOkoKvBBC6Cgp8EIIoaOkwAshhI6SAi+EEDpKCrwQQugoKfBCCKGjpMALIYSOkgIvhBA6Sgq8EELoKCnwQgiho6TACyGEjpICL4QQOqpYC/zq1asxNjZm1qxZqm1KpRIvLy+aNm2KpaUlzs7O3Lx5M8P3xcbG4u7ujpWVFVZWVri7uxMbG1vU4QshRIlWbAX+4sWLbN26lRYtWmTYvm7dOry9vVmxYgWBgYGYmZkxZMgQXr58qRozceJErl27xq5du9i9ezfXrl1j8uTJRf0WhBCiRCuWAv/8+XMmTZrE//3f/2FsbKzarlQq2bBhAzNmzMDV1ZXmzZuzYcMG4uLi2L17NwC3b9/m+PHjrF27lo4dO2JnZ8eXX37JkSNHCA0NLY63I4QQJVKxFPj0At6jR48M28PCwggPD6dXr16qbZUqVcLe3p4LFy4AEBISQpUqVejYsaNqTKdOnTA0NFSNEUIIAeWK+oBbt27l3r17bNq0Kcu+8PBwAMzMzDJsNzMz48mTJwBERERgamqKQqFQ7VcoFNSoUYOIiIgcjytn95KDgpDcaU5yp7m8cmdjY5Pr/iIt8KGhoSxevJhDhw5RoUKFHMe9XbzhTesmc0HPLPOYzPJKhK4LDQ0t8znQlOROc5I7zRVG7oq0RRMSEkJUVBSdO3fG1NQUU1NTzp49y5YtWzA1NcXExAQgy5l4ZGSk6qze3NycyMhIlEqlar9SqSQqKirLmb8QQpRlRVrgnZ2dCQ4O5vTp06p/7dq1Y9iwYZw+fRpra2ssLCwICgpSfU9CQgLnzp1T9dzt7OyIi4sjJCRENSYkJIT4+PgMfXkhhCjrirRFY2xsnGHWDEDlypWpXr06zZs3B2DKlCmsXr0aGxsbrK2tWbVqFYaGhgwfPhyAJk2a0KdPHzw8PFi3bh1KpRIPDw8cHR3lo6AQQrylyC+y5mX69Om8fv2aWbNmERsbi62tLXv37sXIyEg1ZvPmzXh6ejJ06FAAnJycWLlyZXGFLIQQJZIiNjZWmfcwUdrJxS7NSe40J7nTXKm7yCqEEKLoSIEXQggdJQVeCCF0lBR4IYTQUVLghRBCR0mBF0IIHSUFXgghdJQUeCGE0FFS4IUQQkdJgRdCCB0lBV4IIXSUFHghhNBRUuCFEEJHSYEXQggdJQVeCCF0lBR4IYTQUVLghRBCR0mBF0IIHSUFXgghdJQUeCGE0FFS4IUQQkdJgRdCCB0lBV4IIXSU2gX+8ePHfPbZZ/Ts2ZM2bdpw48YNANavX8+lS5e0FqAQQgjNqFXgb968ib29PX5+flhaWvLgwQOSkpIAePDgARs3btRqkEIIIfJPrQI/b948mjRpwtWrV9m2bRtKpVK1r2PHjly8eFFrAQohhNBMOXUGnT9/ni1btlClShVSU1Mz7DMzMyMiIkIrwQkhhNCcWmfweno5D4uKisLAwKDQAhJCCFE41Crw7du3Z/v27dnu+/HHH+nYsWOhBiWEEKLg1GrRzJo1i8GDBzNkyBCGDx+OQqHg1KlTbNy4kQMHDvDTTz9pO04hhBD5pNYZfNeuXdm+fTthYWF8+OGHKJVKFi5cyLlz59i+fTsdOnTQdpxCCCHySa0zeABHR0ccHR25d+8ez549w8TEBBsbG23GJoQQogDULvDpGjZsSMOGDbURixBCiEKUY4HfsWMHjo6OmJiYsGPHjjxfaMyYMYUamBBCiILJscBPnTqV48ePY2JiwtSpU3N9EYVCIQVeCCFKmBwL/NWrV7G0tFT9txBCiNIlxwJvZWWV7X8LIYQoHdSaJjl27FgOHDhAcnKytuMRQghRSNQq8KGhoYwbN44mTZowc+ZMWVxMCCFKAbUK/IULFwgKCmLkyJHs378fR0dH2rdvz8qVK/nrr7+0HKIQQghNqP3Aj7Zt2/L5559z48YNfH19ad++PevWraN9+/Y4OTlpM0YhhBAayPcj+/T19enXrx9btmzhhx9+oGbNmly4cEEbsQkhhCiAfN/J+ueff+Ln58euXbv4888/sbS05MMPP9RGbEIIIQpArQIfGxvL3r178fPz4+LFi1SuXBlnZ2dWrVpFz549USgU2o5TCCFEPqlV4Bs3bkxqairdu3dn/fr1uLi4ULlyZW3HJoQQogDUKvDz5s1j5MiRqjtbhRBClHxqXWT9+OOPC6W4b968GXt7e+rWrUvdunXp27cvR44cUe1XKpV4eXnRtGlTLC0tcXZ25ubNmxleIzY2Fnd3d6ysrLCyssLd3Z3Y2NgCxyaEELpG7Vk0v//+O++99x6NGjXC1NQUa2tr/vGPf3Djxg21D1arVi0WLVrEqVOnCAoKonv37rz77rtcv34dgHXr1uHt7c2KFSsIDAzEzMyMIUOG8PLlS9VrTJw4kWvXrrFr1y52797NtWvXmDx5cj7eshBClA2K2NhYZV6DfvnlF5ydnTEwMMDJyQkLCwvCw8M5fPgwCQkJ/PTTT7Rt21ajAOrXr8+CBQv4xz/+QdOmTZk0aRIzZ84E4PXr19jY2LBkyRLGjx/P7du36dixI4cPH6ZTp04AnDt3DicnJy5evCgPIMlFaGio5EdDkjvNSe40Vxi5U6sHv2jRIpo1a4a/vz9GRkaq7S9fvmTw4MEsWrSIffv25evAqamp/Pjjj8THx2NnZ0dYWBjh4eH06tVLNaZSpUrY29tz4cIFxo8fT0hICFWqVMnwkO9OnTphaGjIhQsX5AdJCCHeolaBv3TpEhs3bsxQ3AGMjIyYPn16nuvFv+3333+nX79+JCQkYGhoyLZt22jRooXqZikzM7MM483MzHjy5AkAERERmJqaZpiWqVAoqFGjBhEREbkeNzQ0VO0YdZXkQHOSO81J7jSXV+7yOqlVq8DnNc89P/PgbWxsOH36NM+fPycgIIApU6Zw4MCBHF9LqVRmKeiZZR6T03HLMvmorDnJneYkd5orjNypdZHV1taWNWvWZLjYCRAfH8+6devo0KGD2gesUKECDRs2pF27dixYsIBWrVqxfv16LCwsALKciUdGRqrO6s3NzYmMjESp/N9lA6VSSVRUVJYzfyGEKOvUOoOfP38+AwcOpFWrVjg6OmJpaUl4eDhHjx4lISEhwxl4fqWlpZGUlES9evWwsLAgKCiI9u3bA5CQkMC5c+dYvHgxAHZ2dsTFxRESEqLqw4eEhBAfH5+hLy+EEELNAm9ra8uxY8dYuXIlgYGBxMTEUL16dbp3786sWbNo0aKFWgdbuHAh/fr1o3bt2sTFxbF7927OnDnDzp07USgUTJkyhdWrV2NjY4O1tTWrVq3C0NCQ4cOHA9CkSRP69OmDh4cH69atQ6lU4uHhgaOjo3wMFEKITNRebKxly5Z8//33BTpYeHg47u7uREREULVqVVq0aMHu3bvp3bs3ANOnT+f169fMmjWL2NhYbG1t2bt3b4aLu5s3b8bT05OhQ4cC4OTkxMqVKwsUlxBC6CK15sGL0k8udmlOcqc5yZ3mtDoPftmyZWq/iEKh4LPPPitQIEIIIQpXjgV+1apVKBSKDDNWciIFXgghSp4cC7yhoSF6enq4uLgwevRounbtWpRxCSGEKKAc58H/8ccfrFy5kocPHzJ48GBat27NsmXLuHfvXlHGJ4QQQkM5FvjKlSszevRofvzxR65evcr48eM5cOAAtra29O3bl6+//lqW6RVCiBJMrTtZa9eujYeHB+fOnSMoKIhWrVrh6enJRx99pO34hBBCaChfD92+fPkyvr6++Pv7U758eVq3bq2tuIQQQhRQngX+/v377Ny5Ez8/P+7cuUOnTp2YP38+gwcPplq1akURoxBCCA3kWOC///57fH19uXDhAvXr12fEiBGMHj2a+vXrF2F4QgghNJVjgZ8+fTpGRkaMHj1a9fSk06dPc/r06WzHjxs3TjsRCiGE0EiuLZqXL1/i4+ODj49Pri+iUCikwAshRAmTY4G/evVqUcYhhBCikOVY4K2srIoyDiGEEIVMrXnwQgghSh8p8EIIoaOkwAshhI6SAi+EEDpKrQL//PlzEhMTtR2LEEKIQpRngU9JSaFhw4YEBgYWRTxCCCEKSZ4Fvly5cpibm6Ovr18U8QghhCgkarVoRo4cyffff6/tWIQQQhQitZYLtrKyYvfu3Tg4ODBgwAAsLCxQKBQZxshSBUIIUbKoVeBnzpwJwOPHj7ly5UqW/bIWjRBClDxqFXhZl0YIIUoftVs0QgghSpd8PbLv+vXrBAcHEx0dzfjx47GwsODevXuYmZlhZGSkrRiFEEJoQK0Cn5iYiLu7O/v370epVKJQKOjfvz8WFhbMnz8fa2trFi5cqOVQhRBC5Ida0ySXLFnCyZMn2bRpE6GhoSiVStW+vn37cuLECa0FKIQQQjNqncHv2bOHefPmMWLECFJTUzPsq1evHvfv39dKcEIIITSn1hl8dHQ0jRs3znZfWloaSUlJhRqUEEKIglOrwNerV4+LFy9mu+/y5ctYW1sXalBCCCEKTq0CP3r0aNauXcvOnTtVZ+sKhYKff/6Z9evXM3bsWK0GKYQQIv/U6sFPnz6d69evM3nyZD7++GMAnJycSEhIYNiwYUyePFmrQQohhMg/tQq8vr4+33zzDRMnTuTEiRNERkZiYmJC79696dq1q7ZjFEIIoYF83ehkb2+Pvb29tmIRQghRiPJV4H/++WcuXrzIkydPqFmzJnZ2dnTr1k1bsQkhhCgAtQp8TEwM77//PqdPn0ZPTw9jY2NiY2NRKpV07dqVrVu3Ur16dW3HKoQQIh/UmkXj6enJr7/+yldffcXTp0+5e/cuT58+ZePGjVy5cgVPT09txymEECKf1DqDP3z4MPPnz2fEiBGqbeXLl2fkyJHExMSwbNkyrQUohBBCM2qdwevp6dGoUaNs99nY2KCnp9bLCCGEKEJqVeYBAwawd+/ebPft2bMHZ2fnQg1KCCFEwanVounfvz+fffYZI0eOxNXVFXNzcyIiIvjxxx+5efMmn3/+OadOnVKN79Gjh9YCFkIIoR61Cvz7778PwKNHjzh27FiW/e+99x6Aaq346OjoQgxRCCGEJtQq8Pv379d2HEIIIQqZWgVeliMQQojSR6a/CCGEjirSAr9mzRocHByoW7cujRo1YtSoUdy4cSPDGKVSiZeXF02bNsXS0hJnZ2du3ryZYUxsbCzu7u5YWVlhZWWFu7s7sbGxRflWhBCixCvSAn/mzBkmTJjAkSNHCAgIoFy5cgwePJiYmBjVmHXr1uHt7c2KFSsIDAzEzMyMIUOG8PLlS9WYiRMncu3aNXbt2sXu3bu5du2aLFkshBCZ5GuxsYLKPJd+06ZNWFlZcf78eZycnFAqlWzYsIEZM2bg6uoKwIYNG7CxsWH37t2MHz+e27dvc/z4cQ4fPkzHjh0B+PLLL3FyciI0NBQbG5uifEtCCFFiFWsPPi4ujrS0NIyNjQEICwsjPDycXr16qcZUqlQJe3t7Lly4AEBISAhVqlRRFXeATp06YWhoqBojhBAin2fwaWlp3Lp1i+joaNq1a4ehoWGBDj579mxatWqFnZ0dAOHh4QCYmZllGGdmZsaTJ08AiIiIwNTUFIVCodqvUCioUaMGEREROR4rNDS0QLHqAsmB5iR3mpPcaS6v3OXVsVC7wG/evJkVK1aobmIKDAykbdu2uLm50b17dz744AN1XwqAzz77jPPnz3P48GH09fUz7Hu7eMP/bqDKaX92YzIr660baV9pTnKnOcmd5gojd2q1aLZu3crs2bNxdnbm22+/RalUqvZ17tyZgICAfB10zpw57Nmzh4CAAOrXr6/abmFhAZDlTDwyMlJ1Vm9ubk5kZGSGGJRKJVFRUVnO/IUQoixTq8B7e3vz4Ycfsm7dOgYOHJhhX+PGjblz547aB/T09GT37t0EBATQuHHjDPvq1auHhYUFQUFBqm0JCQmcO3dO1XO3s7MjLi6OkJAQ1ZiQkBDi4+Mz9OWFEKKsU6tFExYWluHC59sqV67M8+fP1TrYzJkz8fPzY9u2bRgbG6t67oaGhlSpUgWFQsGUKVNYvXo1NjY2WFtbs2rVKgwNDRk+fDgATZo0oU+fPnh4eLBu3TqUSiUeHh44OjrKR0EhhHiLWgXe1NSU+/fvZ7vvzp071KxZU62DbdmyBUA1BTKdp6cnc+bMAWD69Om8fv2aWbNmERsbi62tLXv37sXIyEg1fvPmzXh6ejJ06FAAnJycWLlypVoxCCFEWaH2csErV66kW7du1K1bF3hzoTMqKor169ervR68OnebKhQK5syZoyr42alevTpfffWVWscUQoiySq0e/Lx586hYsSKdO3fG1dUVhULB7NmzsbOzQ19fn08//VTbcQohhMgntQq8iYkJQUFBeHh4kJKSQoMGDUhJSWHSpEkcPXqUatWqaTtOIYQQ+aT2PHgjIyM+/fRTOVsXQohSQpYLFkIIHaXWGfygQYNy3Kenp0fVqlVp27Yt48aNw9zcvNCCE0IIoTm1CrxSqeTu3bs8ffqUevXqqR66HRYWhqWlJWZmZhw7doz169dz8OBBmjZtqu24hRBC5EGtFs20adOoWLEiJ0+e5MqVKxw9epQrV64QFBRExYoV8fT05PLly9SoUYMlS5ZoO+YikZiUzOFTl0hOTinuUIQQQiNqFfilS5cye/Zs2rRpk2F727Zt8fT0ZNmyZdSuXZuPPvqI4OBgrQRa1A6fusToj5bTvO8k5q76lt//CCvukIQQIl/UKvB3797F1NQ02301atTg3r17ADRo0IBXr14VXnTFyMf/zXo4z6Kf4/39froM96DHqJls8jlIVMyLYo5OCCHyplaBt7Ky4vvvv89233fffYeVlRUAUVFRmJiYFF50xSQ8MobjZ3/Jsv3qzXt4fv41TXtPZJzHSg6dvCgtHCFEiaXWRdZPP/0Ud3d37O3tcXFxwczMjGfPnhEQEMDNmzdVa8ycOnUKW1tbrQZcFJJTUnlvaB/2HD7Di5dZP5Ekp6Sw/8R59p84j5lJNUYO7M4YFwdaNq5f9MEKIUQOFLGxscq8h0FQUBBeXl5cuXKF5ORkypcvT7t27ZgzZw49e/YE3iztq6+vT/ny5bUZc5F5nZDIT0EX8fEPJPDc1Qxr0GenddMGuLn2YsSAbphWr6qVmMIjY1ju7Uv085eYVDNi7rQxmNcwzvP75MELmpPcaU5yp7nCyJ3aBT5dWloaUVFRmJqaoqdXdu6TevQ0kp0Hf8bHP4jQvx7lOrZ8uXI49rDFzcWBvl3bU7584T3bfPqiDTyOiEZPoSBNqaS2hQlr50/J8/vkF01zkjvNSe40Vxi5y3fl0dPTK5NPTqptWQOPCUOZ8c8hXLr2Bz4BQbm2cA6cuMCBExeoUb0qIwf2wM21cFo40c9fovf3own1FAqiYl8W+DWFELpJ7QKflJTEsWPHuHPnDgkJCRn2KRSKMrNGjUKh4J02TXinTROWzxqvauEEnb9GWlpalvGRMS9Y/8N+1v+wn9ZNGzDGxYERA7pRw0SzBdpMqhllOIM3qWaU9zcJIcoktVo0T548oX///ty/fx+FQqHqRb/9kOv0h3GXVY/Do9h58BQ+/kH88WfuLZxy5fRx7G6Lm2sv+uWzhRMRGcvy9TuIipUefFGR3GlOcqe5Invo9vz586lRowbXr19HqVRy4sQJrly5wr/+9S8aNmzIlStXChSELqhlYcqMfw7lwo//4fi2z/nnCEeqGlXOdmxKSioHA0N4d/rnNOszkTkrv+G323+qdRwlSvK41iuEEICaLZpz586xZMkS1aP59PT0qFevHnPnziUtLQ1PT0927Nih1UBLC4VCQYfWjenQujHLPx3PT0Eh+PgHEXjuao4tnA3bDrBh2wFaNW2AWx4tnHmrthL8y+8kJ6dSvrw+rxMS+cprhrbflhCiFFLrDD46OhpLS0v09PQwNDTM8Oi97t27c/bsWa0FWJoZVKzA0P5d2b3h31w/somFM8bSuEHtHMf/dutP5qz8hqZ9JuI2/XMOBF4gKTk5w5gLV2+RmJiMUqkkMTGZ81duafttCCFKKbUKfK1atYiKigKgfv36BAYGqvZdvnyZihUraic6HfJ2C+fE9hVMGOlINSPDbMempKTyU1AIY2esoFmfScxe8TXXbqW3cJSQfu1DoXjztRBCZEOtFk23bt04e/YsAwcOZPz48cycOZPffvuN8uXLc+LECcaPH6/tOHWGQqHAtpUNtq1sWDZrPIdOXsTHP4gTwVeybeFExbxg4/aDbNx+kJZN6mNSzYikpBiUSiXl9PXp1LZZMbwLIURpoFaBnzdvHjExMQBMmDCBlJQU9u3bR1RUFNOnTy8zUyQLm0HFCgxx7MIQxy48iYhm54FT+AQEcfvew2zHX7/9F/Dmj4R5DWMaN6jD/I/HFmHEQojSRK1pks+fP8fAwEBaMUVAqVTy6+938PEPYtdPp3n+Mj7X8abVqzLcqRturg60btogw9TVt8l0Nc1J7jQnudNckUyTTElJoWHDhhn67kJ7FAoF7VvasGquO7cDv+a7VTPp1619jstCRMW8YJPPQXqMmknXEZ/g/cN+nkXFZjtWCFG25Fngy5Urh7m5Ofr6+kURj3iLQcUKDO5nz07vedw49hWLPd6jaaO6OY7//Y8w5n7xLc36TmLMx17sP3E+yywcIUTZoVaLZsGCBdy9e5dt27YVRUwiF2+3cHYfOkPsi7hcx5sYGzFiQHe6tmvEwH49cmzhiJxJm0FzkjvNFdlqkl9//TVr1qzB3NycAQMGYGFhkaVQjBs3rkCBiPxLSEzi8KlL7AgI4tiZX7OdhfO25jb1cHN1YKRzd8xN817eQLwhRUpzkjvNFVmBr169eu4volCU+bVoitvTZ9HsOvgz2/2DuHX3Qa5j9fX16Nu1PW6uvejfw5YKOrJ+v7ZIkdKc5E5zRVbg79+/n+cLpT+2TxQvpVLJlRt3VbNw1GnhDB/QDTcXB9o0aygtnGxIkdKc5E5zxfLAD1F6JCYlc/jkRXwCgjh+5ldSpYWjESlSmpPcaa7IC/z169cJDg4mOjqa8ePHY2Fhwb179zAzM8PISNYlL8nOhfzCpZsP8PkxkJtqtHD6dGmPm6sD/Xt0oGKFst3CkSKlOcmd5oqswCcmJuLu7s7+/ftRKpUoFAoCAwNp27YtY8eOxdramoULFxYoEKFd6T8sSqWSqzfvsd0/kN0/nSbmee4tHOOqhliamWBmWo0GdSyZ96GbWuvP6xIpUpqT3GmuyNaDX7JkCSdPnmTTpk2EhoZmePh03759OXHiRIGCEEVHoVDQtnkjvpgziVsnvmbr6lk4du+Avn72PwqxL+K5dfcBp0Ous/fwGdxmeBEeGVPEUQshNKHWWjR79uxh3rx5jBgxgtTU1Az76tWrp9ZFWFHyVKxQHte+nXHt25nwyBh2HvyZHf5B3LiT/f/PuFcJXLoWSvO+k960cFx60r/nO2W+hSNESaVWgY+OjqZx48bZ7ktLSyMpKalQgxJFz6JGdT5635URA7oxc9lmfg8N43F4FIlJWe+ETU1N48jPlzjy8yWMq1ZhxIA3a+G0bd5IZuEIUYKo1aKpV68eFy9ezHbf5cuXsba2LtSgRPHxWu9HYnIKjRvUoes7Leli25y6NWuQU92OfRHHZt9DOIz5FPuhM/i/737k6TO5J0KIkkCtAj969GjWrl3Lzp07VWfrCoWCn3/+mfXr1zN2rCxZqyuin79E7+9qXk5fH5PqVfntyFfcDvyGpTP/QXPrnO93uHn3Af9e8z0t+rkz6sNl+B8NzvYTgBCiaKg1iyY1NZVJkyaxb98+KlasSGJiIpUqVSIhIYFhw4axefPmoohVFIC6V+SnL9rA44ho9BQK0pRKapmbsG7BFNX+9Fk4PgFB7P7pNNGxL3N9PeOqVRju1BU3VwfatbAulS0cmQmiOcmd5op8HnxwcDCBgYE8e/YMExMTevfuTdeuXQsUgCga6T8s4ZExLPf2Jfr5S0yqGTF32pgM0x4jImNZvn4HUbHZ739bUnIyR36+jI9/EEdPXyY1NfcbqZo2qoubiwMjB3bH0sykUN+fNqmbO5GVFHjNyZ2sQm3pPyyZz9BrW5iwdv6UvF8gDxFRsez66TTbfwzkRmhYrmP19PTo06Xt32vhdMCgYoUCH1+btJ07XSYFXnNFNg++e/furF+/noiIiAIdTBS/t3vsegoFUXm0WNRlbmrMtHGDOLt7Daf8VjHZzRkT4+zvbk5LS+Po6V/4x8xVNO09kZnLvuKX6xnvryiJtJU7IbRFrQJvbm7OggULaNGiBSNGjGDPnj0kJCRoOzahBSbVjEj7u5CmKZWYVCvcJSYUCgVtmjVkxS1GmycAACAASURBVOwJ3DqxhW1rPRngYEe5ctk/MCb2RRxb/A7Ty82TTkOms+6bfTyJKJmzcLSdOyEKm9otmmfPnrFr1y527tzJ1atXMTIywsXFhZEjR9K9e3dtxykKKP3jXn567IXpWXoLxz+Q3//Iu4XT274tbq4OOPV8p9hbOMWdu9JMWjSaK7Ye/O3bt/Hz82PXrl08evSIWrVqcf369QIFIrSrJP2iXbv1Jz7+gez66TRRMS9yHVvNyPDvWTi9aN+yeGbhlKTclTaSO80V60XWhIQEAgICWLRoEU+ePJEHfpRwJfEXLSk5maOnf1HNwklJSc11fOMGtXFzdWDUwJ7UNC+6WTglMXelheROc8VS4E+dOoWfnx8HDhwgLi4OW1tbRo0axcSJEwsUiNAudX9YimsqYHoLxycgiOu3/8p1rJ6eHr06t8HN1YEBDnZab+FIkdKc5E5zRTaL5saNGyxcuJCWLVsyZMgQzp49y+TJk7l48SLHjh3LV3E/e/Yso0ePplmzZhgbG7N9+/YM+5VKJV5eXjRt2hRLS0ucnZ25efNmhjGxsbG4u7tjZWWFlZUV7u7uxMbGqh2DyNlyb18eR0STlJTC44holq/fUSTHNTM1Zuq4QZzZtYafd65mytiBmFavmu3YtLQ0jp/9lX9+uoYmvSbwyZJNXLr2R4mfhSNEUVNrsbEuXbpQtWpVBg8ezKhRo7C3t9f4gPHx8TRv3pwxY8bwwQcfZNm/bt06vL298fb2xsbGhpUrVzJkyBAuXryoeqjIxIkTefjwIbt27UKhUPDxxx8zefJk/Pz8NI5LvJHXVMCiOMNv3bQBrZs2YJHHOI6d+RUf/0CO/Jx9C+f5y3i+2XWEb3YdUbVwRjr3oJaFaaHGJERppFaB//bbb3FycqJixYoFPmC/fv3o168fAFOnTs2wT6lUsmHDBmbMmIGrqysAGzZswMbGht27dzN+/Hhu377N8ePHOXz4MB07dgTgyy+/xMnJST4OFgKTakYZbubJPBVw3qqtBP/yO8nJqZQvr8/rhES+8ppRKMfO7o+Hs4Mdzg52REY/V7Vwfrv1Z7bf/8efj1i4dhuL/+OjVgtH7kwVuk6tFs3gwYNzLO5nzpxh2rRphRJMWFgY4eHh9OrVS7WtUqVK2Nvbc+HCBQBCQkKoUqWKqrgDdOrUCUNDQ9UYobm508ZQ28KEChXKUcvchLnTxmTYf+HqLRITk1Eqlbx+ncTBoAuM+2Ql0xdtICKyYG2y3NpDNUyqMWXsQE7vXK1q4dRQo4VT134sbZw+wO1jL8KfZXxQibbbUeGRMUxftKHQ8iNEfql1Bp/ZvXv32LFjB35+fjx48IDKlSvj7e1d4GDCw8MBMDMzy7DdzMyMJ0+eABAREYGpqWmG6XIKhYIaNWrkeqdtaGhogeMr7dTNwbQxfVT//TzmGc9jnqm+fv06gRdxr1AqlaSkplFOT0FMzHOio2PxXL6Rz6YM0zi++w+fkPxWGybsQWK2MVfSh38O6cZ7g+w5++ttDgRd4vSlm9muhZOcnELYowjCHkXwc8hvvD+kJwN6tMfctJraxwPNfn6WbdjDs+gXKBSKQslPaSW/e5rLK3d5dSzULvDPnz9n3759+Pr6EhISAkDLli3x8PBg2LDC/aHNPNc5/TmwOe3PbkxmZb11U1jtKyPDyryIewUoACXlypXH0NAQgBT0CnQMqzo1s6xkmdfrNWvWlIlurkRGP2f3oTP4+AdyLYcWTtyrBLy3H2bDjqM4dGpNqlJBhYoGlC+nn+vxNM1dKnpUqVJF9XVB81MaSdtUc4WRu1wLfFpaGsePH8fX15dDhw6RkJBAzZo1mThxIlu2bMHLy4suXboUKIC3WVhYAG/O0uvUqaPaHhkZqTqrNzc3JzIyMkNBVyqVREVFZTnzF4XPun5tklJSSE5OIS4+AQODN/3tNKUSgwoVmL5og8Y97bnTxmS5U1RdNUyq8cG7znzwrjO/3f6THQEn+WbnYRISs65Hn5aWxongKwCUL1+OmuYmtLCpx2dTR6t9PHXkdT1DCG3LscDPmzePXbt28ezZMwwMDBg4cCBjxoyhZ8+evHjxQitrwNerVw8LCwuCgoJo37498OaGqnPnzrF48WIA7OzsiIuLIyQkRNWHDwkJIT4+PkNfXmhHTXMTlLyZYZOQmMTjiCgqVCiHSTUjXickqgpaek87P6stmtcwLpTVGVs1aUCrWQ2YNm4QHy9cz++h94mIjFGtI/O25OQU7j+K4P6jCEL/fPT3jVQ9qG1Zo8BxFOQPlhCFIccC7+3tjUKhoG/fvmzYsAETk//dOViQ28Xj4uK4d+8e8OZM6uHDh1y7do3q1atTt25dpkyZwurVq7GxscHa2ppVq1ZhaGjI8OHDAWjSpAl9+vTBw8ODdevWoVQq8fDwwNHRUT4KFoG3i5alWXU2e81QnaWP+2RlsU+xfFttyxrs2TgfgKiYF3y76yjrt+3P8SEld8Ies/g/21nyfz44dG6Dm4sDzr3sND5+Yf3BEkJTORb4sWPH4u/vz9GjR+nQoQPDhg1j9OjR2NraFuiAv/76K4MGDVJ97eXlhZeXF2PGjGHDhg1Mnz6d169fM2vWLGJjY7G1tWXv3r2qOfAAmzdvxtPTk6FDhwLg5OTEypUrCxSXUE9uRSuvlkT6rBVNz/Azy88fDNPqVXnw5Bm2rRoTH/+ah+GRRETGkpCY9YHxSqWSwOArBAZfoWqVyvTu3JIp7w3hndaNS+UTqUTZletSBQkJCezfv58dO3Zw6tQplEol1tbWDBw4kLVr17J///5C7cEL7SmKi115rbY47pOVJCWlqL6uUKEcP6z5VOPj5fcBHJmPn5KaijJNyY07Obdw3taoXk3cXBwYNagndQqhhVMWyEVWzWn9IquBgQEjRoxgxIgRPH36FF9fX/z8/Pjyyy8BWLRoERMmTMDV1RUDA4MCBSJKv7xaEoV90fFxRBQ3Q++TlJxChfLlgNwLdObj338cQf06lrRp1pCEpGQSEhJITErhyo272X7/3bAnLPk/H5b+dwc9O7X+u4XTkcqVCn4DoBDaoNFqkr/88gs7duxg7969REdHU7VqVcLCcl/jWxSvknAmld/11PNqwbzj+hHRsS9VBdvU2IgQ//9T+/hPIqIztFzSP1H8/kcYOwKC8DtwimfRz3N9T1WrVGaIYxfcXB2wa9NEWjiZlISfu9Kq2J/JmpyczKFDh/D19cXHx6dAgQjtKo2/aHm1YEZOW8aNO2EkJ6dQvlw5mtvUY6f3XI1fv5a5CesW/O/1k5NTOBF8ha+2B3D60i2SU1JyeTVp4WSnNP7clRRab9HkpXz58ri4uODi4lKgIITITl4Ln709ZTNNqcz3GvGZpzG6j3bKMo+/f48ONKpVDVMzS3YfOo2Pf5BaLZweHVvh5urAwF6dpIUjik2BzuBF6VEaz6TyOsPO3HJxH+3EV76HVAXafYwTX+04pPa0zJw+MWTO3Y3QMHYEnMTvwCkionJfX8bIsJKqhdOxbdMy18IpjT93JUWxt2hE6VEaf9Hy27PPXKDv/PWQpOQU1cqX7VtaY1Ktao4FP6dZPjnlLiUllRPBv+LjH8ShkxdJSs69hdPQKr2F04O6NcvGXdel8eeupJACL9RWFn7RMhfony9cw7CyAQqF4s3ql4mJ2Nu2zLGnn9MnBnVyFx37ku92H8X7h/15PmcWoKaZCZ9MHMa7g3sVSQunuJZGLgs/d9pSZE90EqI0MKlmpJrLnqZUoqevB+ktEYWCtDRy7em7j3bir4dPuXbzHn89fMrkMQPUP7axEWGPImjf0gZ72xbUq22R66MEnzyLZpbXZpr0+icfLfDm3C83tfpEquJ6Ulc6WTq5eEiBFzojc4Hu0NKaV38vb/zqdQI1qlfN8Acg8zz8r3wPUb+OJa2bNaR+HUu+8v0pX8dPvyhsZFiJpo3q0rtLO3Z6z2VwP/u/5+ln9TL+NT/sO4HTP+ZiO+hDvvhqFw+ePMt2bEHkdcFa24r7D0xZVaBZNEKUJOkFOr3FcvevR1SvVoWUlFTK6evTvkUjqhsb5bj4V0GLYOYbqWpUr0q/brb062ZLzPOXjP7Ii5t37v+93HJW9+4/Ydl/d7Dc25fudumzcDpiWLngNxEW98qWxfkHpiw/uUsKvNAZmYvI64QkWjdrqNqfBrneaWtQoQK/XA9VXZRt19ya6Ys2cP/hE6zq1MyzMOS2emT1akb8sOZTlq/fwV8Pw3kW/ZyIyNhsb6RSKpWcunCNUxeuYWRYicH97Onf8x2OnLpEzIu4Il+KuTAU5x+Ywl4DqTSRAi90RuYiUqVKpTe9eDWLylvtelC+mQ7ZqH5tklNSsy0M2Z0Z5lY4Mi/lkJKSSuC5K/j4B/FTUEi2s3DSWzg/7DtBJYOK1LYwxdLcpNiWYtZUcf6BKe72VHGSAi90RuYismj6WL7y/UntovI6MYmWjRuovr52816uhaGgZ4blyulnaOHsPXwWH/8gLl/P/jFtrxMSuRP2mDthj7l15z6d2jVjUO9OhdLC0bbi/ANT3O2p4iTTJMsIma6Wt8zTJEP/ekhycgoJCYkYGFTEvn0LNn8+QzW+sFfHTHfr7gPVWjhPMz0oPDN9fT0a1LVk0fRxDOhlV+JupCoJP3f5vZ+ipCj2pQqE0CWZPwFUqlj+77NpBShBL9OcM22dGTZtVJdFHu/x74/eJejcVXwCAjkQGEJyNi2c1NQ07vz1mHc9VlC/jgVjXBwYPagn9WqbF0osuqC421PFSc7gy4iScCZV2qSfocfHx2NoaJjlDD2vpRIKulrm22JfxP3dwgnk0m/Zt3De1u2dlri5OuDSp7NWWjjqxi4/d5qTO1mF2uQXLf/SWzavX72iUuXKWdbCyWm8ug8gye/4dLfvPeS9T74g9K+HpKXl/utbpbIBrv3scXNxoHP7Zuhl/hiiIXVjl587zcmdrEJo0dxpY6htYUL5cvrUMjfJ8yJtfmdraDq7o0nDOrRp1gBLs+oYVzWkUsUK6Oll33uPe5XA9h8Dcf7nv2k/cBorNu4k7FGEWsfRRuyiaEkPXogcpPdu1T2Tym9PviA9/NeJSbRq8r85/ijAsZttri2cvx6G47XeF6/1vnR9pyVuLg649O1ElcqV1D6uurGnt3DUvYdAaIf+7NmzFxZ3EEL7oqOjMTU1Le4wSiV1c2fb0oarN++SlJyCuakxc6eNybX/nd/xbzt1/hov4l+jSF8L38yEz6aN5r1hfRni2IUqlQ0IexRBXPzrbL///uMIDgaFsGn7T9y9/5hqVatQx7KG2rNw8op97hff8TgimsTEJBKSUrh68y79e7yj1muLNwrjd1Z68GWE9EI1VxJzp87Uv9TUVE6ev4aPfxAHAi+QmJSc62vWq23BGJeejB7Uk/p1LAoUX14XqEXe5CKrUFtJLFKlhS7kLvZFPPuOnMHHP4iL1/7Ic3xBWzj5vUAtspICL9SmC0WquOha7v748yE7Ak7iu/8kTyKicx1rWMkAl76dcXN1oIttc7Vn4aR/wgh7oF4PviwvCJYTKfBCbbpWpIqSrubu7RbOwaAQEhKTch1vVcucMS49GePSk/p1LNU6hrq503TKqC6TO1mFEBrT19end5d29O7SjtgX8fx49M1aOCFXb2c7/v7jCFZs3MmKjTvp0qEFbq4OuPbtrFELJzOZdqkdMg9eCIFxVUP+MbwfR3/w4qL///HJhKHUMjfJcfzZS78z7d//pXHPf/LB3P/wc8hvpKWlaXz8zE/jKksLgmmTtGjKCF1tMxSFspq71NRUTl34TTULJ68WTt1aZowZ5ICb6/9aOOrmrrQuCFYYcrr+ID14obayWqQKg+QOnr+M58cjwfgEBHLhSvYtnLfZ2zbHzdWBlg0taNu6ZRFEWHrldP1BevBCiCJRzciQ94f35f3hfQn98xG++9/MwnkUHpXt+ODLNwi+fAODiuUZ3K8Lbq4OdO3QotDWwtEl2rz+INkWQuSLTYPa/Pvjd7l2eCP7Ns1nxIBuGFSskO3YhMRkfPefxGXiAtoMmMJyb1/+fPC0iCMu2bR5/UFaNGWEtBk0J7nLW35bOJ3bv2nhDO5nj5FhwWfhlGY5XX+QHrxQmxQpzUnu8ufOX4/x3X+SHQFBObZw0lU2qMigPp1wc+1Ft3ekhfM2KfBCbVKkNCe500xqaio79h3h58t/EHD8fJ6zcOrUrMEYFwfGDOpJQ6uaRRRlySUFXqhNipTmJHeaS8/d85fx+B8NxicgiPO/3srz+zq3a8aYv1s4VatULoJISx4p8EJtUqQ0J7nTXHa5uxv2WLUWzsOnkbl+fyWDCgzq05l3XRzoZteyTLVwpMALtUmR0pzkTnO55S4tLY3TIdfZHhDE/uPneJ2Qdwtn9KCeuLk4lIkWjhR4oTYpUpqT3GlO3dy9iHvFj0eD2eEfxLlfb+Y5viy0cKTAC7VJkdKc5E5zmuTubthjduw/iW+Ami2c3p1wc3Wgu10rnWrhSIEXapMipTnJneYKkrt8t3As37Rwxrj0pFG9WhodsySRAi/UJkVKc5I7zRVW7l7EvcL/2Dl8/IM498uNPMd3atcUNxcHXPvZU83IsMDHLw5S4IXapEhpTnKnOW3k7t79J+z4+0aqh0/Ub+F0e6cl+vr6hRqLNkmBF2qTIqU5yZ3mtJm7tLQ0Tl/8HR//QALUaOHUtjD9u4XjgHX9kt/CkQIv1CZFSnOSO80VVe7SWzg7AoIIvpx3C6dj2ya4ufRisGPJbeFIgRdqkyKlOcmd5oojd38+eMqOgJPs2B/Eg8fPch1rULECg3p3VM3CKUktHCnwQm1SpDQnudNcceYuLS2NM5d+x8c/iIBj53iVkJjr+FrmJqoWjk2D2kUUZc6kwAu1SZHSnOROcyUldy/jX+N/LBgff/VaOHZtmuDm6sAQxy7F1sIpjNyV6rsCtmzZQuvWrbGwsKBHjx4EBwcXd0hCiBLIyLASYwf35qdvl3Llp/V4fjCSurXMchwfcvU2MxZvpEmvCUz0/JLA4CukpqYWYcSFo9QW+L179zJ79mz+9a9/8fPPP2NnZ8eIESN48OBBcYcmhCjB6texZM7U0Vz9aQP7v17MGBcHKhtUzHZsQmISuw+dZugHi2nlOJnF67YR+uejIo5Yc6W2RdO7d29atGjBf/7zH9W29u3b4+rqyoIFC4oxspKppHxULo0kd5orLbl7Gf+agONvbqQ6e+n3PMent3AG9+uCcVXttHDKbIsmKSmJK1eu0KtXrwzbe/XqxYULF4opKiFEaWVkWIl3XXtx8JslqhaOVS3zHMf/r4XzTyZ8uoYTZ38tkS2cUnkG/+TJE5o1a8bBgwfp0qWLavuKFSvYtWsXly5dyvI9oaGhRRmiEKKUS0tL49cbf7I/6DKB53/L80YqM5OqDOjRnoE9balfJ+c/DoUprzP8ckUShZYoFIoMXyuVyizb0pWGj4naVFo+KpdEkjvNlfbcNWnShNFD+hP36jUBx87jExDEmYvXsx37LPoFW/edZOu+k7zTujFjXBwY2r8LxlWraHTswshdqSzwpqam6OvrExERkWF7ZGQkZmY5XxkXQghNVKlcCTdXB9xcHfjrYfjfDxU/Sdij8GzHX7z2Bxev/cGcld/g3MsONxcHHDq3KfIbqUplD75ChQq0bduWoKCgDNuDgoLo2LFjMUUlhCgL6texYPaUUfx60JsD3yzBzdUBw0oG2Y5NTEpm7+GzDJ+6lJaOk1m49gdu33tYZLHqz549e2GRHa0QGRkZ4eXlhaWlJQYGBnzxxRcEBwfz3//+l2rVqhV3eCVOdHQ0pqamxR1GqSS505wu506hUGBVyxznXh2Z/O4ArOvV5kXcK+4/jsh2fFz8a87/eostvoc4fuYXUlLTaFDXEoOKFbIdXxi5K5UtGoChQ4cSHR3NF198QXh4OM2aNWPnzp1YWVkVd2hCiDLm7RZO2KMIfPefxMc/KMcWzqXfQrn0W6jWWzilchaNyL/SfrGrOEnuNFeWc5eWlsa5X27iExDEj0eCiX+dkOv4j953Zcm/3ld9XWbnwQshREmnp6dHlw4t8F78IbeDvmbD0o/o9k7LHMcP7mdf6DGU2haNEEKUFlUqV2KMiwNjXN60cPwOvGnh/PXwTQunScM6tG9pXejHlQIvhBBFqF5tcz6dPJJZ7iNULZzWTRvkeA9PQUiBF0KIYqBQKLC3bY69bXOtHUN68EIIoaOkwAshhI6SAi+EEDpKCrwQQugoKfBCCKGjpMALIYSOkgIvhBA6Sgq8EELoKCnwQgiho2Q1SSGE0FFyBi+EEDpKCrwQQugoKfBCCKGjpMALIYSOkgIvhBA6Sgq8jlizZg0ODg7UrVuXRo0aMWrUKG7cuJFhjFKpxMvLi6ZNm2JpaYmzszM3b94spohLrtWrV2NsbMysWbNU2yR3OXv69CkffPABjRo1wsLCgo4dO3LmzBnVfsld9lJTU1m6dCmtW7fGwsKC1q1bs3TpUlJSUlRjCpo7KfA64syZM0yYMIEjR44QEBBAuXLlGDx4MDExMaox69atw9vbmxUrVhAYGIiZmRlDhgzh5cuXxRh5yXLx4kW2bt1KixYtMmyX3GUvNjYWR0dHlEolO3fu5MKFC6xcuRIzMzPVGMld9tauXcuWLVtYsWIFISEhfP7552zevJk1a9aoxhQ0dzIPXkfFxcVhZWXF9u3bcXJyQqlU0rRpUyZNmsTMmTMBeP36NTY2NixZsoTx48cXc8TF7/nz5/To0YN169axcuVKmjdvzhdffCG5y8XixYs5e/YsR44cyXa/5C5no0aNonr16mzcuFG17YMPPiAmJgY/P79CyZ2cweuouLg40tLSMDY2BiAsLIzw8HB69eqlGlOpUiXs7e25cOFCcYVZosyYMQNXV1d69OiRYbvkLmcHDx7E1taW8ePHY21tTdeuXfnqq69QKt+cN0ructapUyfOnDnDH3/8AcCtW7c4ffo0ffv2BQond/JMVh01e/ZsWrVqhZ2dHQDh4W+e3v72R+f0r588eVLk8ZU0W7du5d69e2zatCnLPsldzv766y++/vprpk6dyowZM/jtt9/w9PQEwN3dXXKXixkzZhAXF0fHjh3R19cnJSWFmTNnMnHiRKBwfu6kwOugzz77jPPnz3P48GH09fUz7Mv85HalUqmVp7mXJqGhoSxevJhDhw5RoUKFHMdJ7rJKS0ujXbt2LFiwAIA2bdpw7949tmzZgru7u2qc5C6rvXv34uvry5YtW2jatCm//fYbs2fPxsrKivfee081riC5kxaNjpkzZw579uwhICCA+vXrq7ZbWFgAEBERkWF8ZGRkljOEsiYkJISoqCg6d+6MqakppqamnD17li1btmBqaoqJiQkgucuOhYUFTZo0ybCtcePGPHz4ULUfJHfZmT9/Ph9++CHDhg2jRYsWjB49mmnTpvHll18ChZM7KfA6xNPTk927dxMQEEDjxo0z7KtXrx4WFhYEBQWptiUkJHDu3Dk6duxY1KGWKM7OzgQHB3P69GnVv3bt2jFs2DBOnz6NtbW15C4HnTp14s6dOxm23blzh7p16wLyc5ebV69eZfmEra+vT1paGlA4udOfPXv2wkKLWBSbmTNn4uvry3fffUedOnWIj48nPj4egAoVKqBQKEhNTeXLL7/E2tqa1NRU5s6dS3h4OGvXrqVixYrF/A6Kj4GBAWZmZhn+7dq1CysrK959913JXS7q1KnDihUr0NPTw9LSklOnTrF06VI8PDywtbWV3OXi9u3b+Pn5YW1tTfny5Tl9+jRLlixh6NCh9O7du1ByJ9MkdUT6bJnMPD09mTNnDvCmd/f555/z3XffERsbi62tLatWraJ58+ZFGWqp4OzsrJomCZK73Bw5coTFixdz584d6tSpw6RJk5g8ebKqTyy5y97Lly9ZtmwZBw4cIDIyEgsLC4YNG8ann36KgYEBUPDcSYEXQggdJT14IYTQUVLghRBCR0mBF0IIHSUFXgghdJQUeCGE0FFS4IUQQkdJgRf5tn37doyNjbGysiI2NjbDvpSUFIyNjfHy8iryuLy8vDA2Ns7wwISSKC0tjdmzZ9OkSROqV6+Om5tbjmNbtWqFsbGxagGqzJydnTE2NqZ///7aCpdWrVoxZcoUrb2+0B5ZbExo7MWLF6xdu5aFCxcWdyilir+/Pxs3bmTp0qXY2dmp1rrJiZGREQcPHuTly5cYGRmptt+/f5/g4OAM27Rh27ZtVK1aVavHENohZ/BCY7169eKrr75SLWtaFiQmJhb4NW7fvg3A1KlTsbOzw9raOtfxPXv2pHz58gQEBGTY7ufnh5WVFa1atSpwTLlp06YNDRo00OoxhHZIgRcaS3/KzKpVq3Idl946yWzKlCkZilNYWBjGxsZ88803LFq0iMaNG1OnTh3c3d159eoV9+7dY+jQodSuXZt27drh4+OT7fFu377NwIEDqVmzJk2aNGHZsmWqBZzSRUVF8cknn9CsWTPMzc155513+O677zKMSW9FnT17lvfffx8rKyt69+6d63s9fvw4ffv2xdLSEisrK9zc3AgNDVXtb9WqFZ9//jkAJiYmGBsbs3379lxfs1KlSgwaNAg/P78M2/38/Bg1alS2S8c+ffqUyZMn07BhQ8zNzbG3t8/w/ZcvX8bY2JhDhw5l+d5PPvmERo0akZycrIo5c4vmr7/+YtKkSTRq1Ahzc3O6du3K/v37M4y5c+cO7777rmqxtpYtW/L++++X+BaaLpECLzRmaWnJpEmT2Lp1K/fv3y+0112zZg1Pnjxhw4YNzJkzh7179+Lh4cHYsWPp168f27Zto0WLFkybNi3bBxC/++679OzZk+3btzN8+HC++OILVqxYodr/4sULHB0dOXr0KLNnz2bnzp3079+fTz75JNsHfri7u1OvXj2+ttWRNQAABzBJREFU//77XNtRx48fZ+TIkRgaGvLNN9+wevVqbt68Sf/+/Xn8+DHwpt2R3nM/duwYx44dw9HRMc+cjB49mjNnzvDo0SPgzbNj79y5w+jRo7OMjY+Px9nZmePHjzN//ny2b99OixYtmDx5suqPmK2tLTY2Nln+aCQlJbFv3z6GDh1K+fLls43l4cOH9OnTh+vXr7N8+XJ27NhBmzZteO+99/jpp59U40aNGsWTJ09YvXo1e/bsYcGCBVSsWDHLH1uhPdKDFwUyY8YMvv32W1asWIG3t3ehvGaDBg1Uz6ns3bs3586dw8/Pj02bNjFq1CgA2rVrx6FDh/D396dZs2YZvv/999/Hw8MDeNNGevnyJd7e3kyZMgVjY2M2btzIgwcPCA4OplGjRsCbNsjz589ZsWIFEyZMoFy5//1quLi4sHjx4jzjXrp0KfXr12f37t2q73/nnXfo0KED//3vf1m+fDlt2rShVq1aqn3q6tq1K7Vr12bnzp14eHjg6+tLx44dadiwYZax27dv5+7du+zfv59u3boB0LdvXyIiIli6dCnjxo1DX1+fUaNGsWrVKp4/f061atUAOHr0KDExMdn+4Uj3+eefo1QqOXjwoOr6Qe/evXn06BHLly9nwIABREVFcffuXXx8fBgwYIDqe0eMGKH2exYFJ2fwokCqV6/Ohx9+iK+vb4ZWREGkP5MyXfra9m+3R4yNjTEzM1Od0b5tyJAhGb4eNmwYcXFxqrP9EydOYGtrS7169UhJSVH96927N9HR0dy6dSvD9w8cODDPmOPj47l69SpDhw7N8Mehfv36dOzYkbNnz+b5GrlRKBSMGjUKPz8/kpKS2Lt3b45FODg4mFq1aqmKe7qRI0cSGRmpen8jR44kMTERf39/1Rg/Pz9sbGywtbXNMZYTJ07Qt29fqlatmiV/169f58WLF5iYmFC/fn0WLVrE1q1buXv3boHev9CMFHhRYFOnTqV69eosX768UF4vc78+vVWQ3fbsLnpm9wxLQPUcy2fPnhEcHEyNGjUy/Hv//fcBiI6OzvD9lpaWecYcGxuLUqlUPYXnbRYWFsTExOT5GnkZPXo0t27dYsWKFbx69SrLH7J0MTExOcaRvh/AysoKe3t7fH19Ve/h6NGjqk9JOXn27Bm+vr5Z8vfvf/8beJM/hULBjz/+SNu2bVm0aBG2tra0adOGr7/+WuP3L/JPWjSiwKpUqYKHhwfz5s3j448/zrI/fW3rpKSkDM88zVxIC8uzZ88wNDTM8DVAzZo1gTcXN83MzFQXOzPLPKtFnedfGhsbo1Aosp1RFB4enudUSHVYW1vToUMHvvzySwYNGpTjMwCqV6+e5SlL6XEAGWIZNWoU06dP5/79+wQGBpKUlJRnG8XExITOnTszY8aMbPen57l+/fps2rQJpVLJb7/9xubNm/nXv/6FlZVVlk9pQjvkDF4UiokTJ1KrVi2WLl2aZV/649tu3Lih2hYbG0tISIhWYtm3b1+Gr/fs2UOVKlVUvfrevXvzxx9/UKdOHdq1a5flnybzyg0NDWnbti3+/v6kpqaqtt+/f5+QkBC6dOlSsDf1t48//pj+/fszadKkHMd06dKFR48ecf78+Qzbd+/ejZmZWYZnqA4ePBgDAwN27dqFn58f9vb21KtXL9cYevfuze+//07Tpk2zzV/mJw0pFApat27NsmXLALK9MC60Q87gRaGoWLEin376KdOnT8+yr0+fPlStWpXp06czZ84cEhMT+c9//pPhLLswbd26lbS0NNq3b8+JEyf4/vvvmT17tuqMd+rUqezbtw8nJyemTp2KtbU1r169IjQ0lODgYHbs2KHRcefOncvIkSMZNWoUEyZMID4+Hi8vL6pWrcqHH35YKO/NxcUFFxeXXMe4ubmxceNGxo0bx7//v707dFEYjMM4/gRRQdjEOLSIBk12waJFQQSLiGnB/0BeZKCIFodlCmvmwRZsFssM/gmC1aQLRqtgOJCTO/C4kwsvz6cOtncL3/DbxjsYQNM0eJ4H3/dhWdbTPqCKoqBarWK5XCIIAszn85drMAwD5XIZtVoN3W738Ufz4XDA8XiEbdvY7/fo9/toNptIp9O43W5wHAehUAilUunPz4F+hoGnt+l0OlgsFl9eqMXjcbiuC8MwoOs6NE2DEALb7Ra73e7t63AcB0IIzGYzKIqCXq8HIcTjuKqq2Gw2ME0TlmXhfD5DVVVks1nU6/VfX7dSqcDzPJimCV3XEQ6HUSwWMR6PH2OL/xCLxbBerzEcDjEajXC9XpHJZJ6+Qvqs1WphtVohGo2i0Wi8PH8qlYLv+5hOp5hMJrhcLkgkEsjlcmi32wA+5v3JZBK2beN0OiESiSCfz8N1XRQKhbffM32PW/YREUmKM3giIkkx8EREkmLgiYgkxcATEUmKgScikhQDT0QkKQaeiEhSDDwRkaQYeCIiSd0BSnwtf0nvPrUAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"actors.scatter(2, 3, fit_line=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.plot()`\n",
"\n",
"```python\n",
"tbl.plot(x_column, y_column)\n",
"```\n",
"\n",
"Plot a line graph with `x_column` on the horizontal axis and `y_column` on the vertical axis. Sorts the table in ascending order by values in `x_column` first. `x_column` and `y_column` can be column names as strings or integer indices."
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Year Total Gross Number of Movies #1 Movie \n",
" \n",
" \n",
" \n",
" \n",
" 2015 11128.5 702 Star Wars: The Force Awakens \n",
" \n",
" \n",
" 2014 10360.8 702 American Sniper \n",
" \n",
" \n",
" 2013 10923.6 688 Catching Fire \n",
" \n",
" \n",
"
\n",
"... (33 rows omitted)
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"movies_by_year = Table.read_table('https://github.com/data-8/textbook/raw/gh-pages/data/movies_by_year.csv')\n",
"movies_by_year.show(3)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"movies_by_year.plot('Year', 'Number of Movies')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.barh()`\n",
"\n",
"```python\n",
"tbl.barh(categories) \n",
"tbl.barh(categories, values)\n",
"```\n",
"\n",
"Plots a horizontal bar chart broken down by `categories` as the bars. If `values` is unspecified, one bar for each column of the table (except `categories`) is plotted. `categories` and `values` can be column names as strings or integer indices."
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtYAAAEJCAYAAACwkGChAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXhMd+P+8XciRGLpaEQ2IgRJCNGHKKqJpVoSe6UhdFUqam2tD6otra2oWsq3tLW1jaVEUVvUEmKptVUiStDatbFEkWV+f/iZxzSLJCZGuF/X5brMOZ9zzj1TLndOP3M+NklJSUZEREREROS+2Fo7gIiIiIjIo0DFWkRERETEAlSsRUREREQsQMVaRERERMQCVKxFRERERCxAxVpERERExAJUrEVERERELEDFWkRERETEAlSs5ZGWkJBg7Qj3RfmtpyBnB+W3toKeX0TyRsVaRERERMQCVKxFRERERCxAxVpERERExAJUrEVERERELMDO2gFERETk0ZaamkpycrK1Y4jcNzs7O4oVK5b1/geYRURERB4zqampXL16FYPBgI2NjbXjiNyX5ORkbt68ib29fab7NRVERERE8k1ycrJKtTwyHB0duXHjRpb7VaxFREQkX6lUy6PiXn+WNRVEcmz73kPWjpBrly9f5tK1VGvHyDPlt56CnB3AvpDR2hFERB47KtaSY5NmL7V2hFxLTk7O9ksGDzvlt56CnB3gjfaNrR1BROSxo6kgIiIiIvJQWbBgAR4eHrk6ZvTo0dSrVy+fEuWM7liLiIjIA3fq9AX+PHfxgV3Pw6U05dydc33c/v37adSoEYGBgaxZsyYfkuWfEydOEBAQwE8//cRTTz1l7Ti50q5dO55//vlcHdOrVy/eeuutfEqUMyrWIiIi8sD9ee7iA51i2K9L2zwV67lz59KlSxeioqKIj4/Hx8cnH9I9fFJSUihcuLDVru/g4ICDg0OujilevHg+pck5TQURERERycQ///zDokWLePXVV2nVqhXz5s0z23/ixAkMBgNLliwhJCQEV1dXnn32WX799Vd+++03nn/+edzd3WnWrBmJiYlmx3711Vc89dRTODs789RTTzFnzhyz/QaDgejoaLNt1atXZ8qUKWZjvv76a1599VXc3d0JCAggKirKtD8gIACARo0aYTAYCA0NzfR9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8mLp0qVMmDCBuLg4li5dSlBQEMOGDaNq1apmYx0cHExTUcSyVKxFREREMlG/fn0mT56MnZ0dbm5uFC5cOMOY+3koQnp6OjY2NmzYsCHDue+su5EZJyenTNewqF+/PvXr12f06NGULl2azZs306pVK/bt20fx4sVN4/7++29Kly6d59ySNc2xFhEREcmEo6MjFStWxNPTM9NSnRM1atRg06ZNWe4zGo2cO3eOihUrmv1yd3fP9pzx8fHZXtfX15dRo0Zx8eJFjh49atp+48YNjh8/TkBAQJ7ej2RPxVpEREQkn7z77rssW7aMUaNGcfjwYQ4dOsS0adO4fv06lSpV4qWXXqJHjx5ER0eTmJjI3r17mTJlCsuXL8/ynI0bNyY+Pp6//vrLtG39+vVMmzaNxMRE0tPTSUpKYsaMGZQoUcLsWde7du3C3t6ep59+Ol/f9+NKxVpEREQknzz//PPMnz+fdevWERQURGhoKFu2bDGtfDht2jQ6derEe++9R2BgIOHh4WzduhVPT88sz1mtWjVq1arFkiVLTNs8PT3ZvXs3ISEhTJw4ka5duxIXF8f8+fPNVglcsmQJYWFhODo65t+bfow9Nkuay/3TkuYPnvJbT0HODspvbQU9vyVltfzzw77y4sNu/fr1DB48mB07dlCoUCGzfVktaX7x4kUCAwP56aef8PLyeoBpHy2P5ZLmYnk3nTpb/JzpdmXuPUhERB45xiKuuV4JUf7nueee48033+TPP//M9u723U6cOMGECRNUqvORirXkWH7eWRYREZHc6d69e6bbhwwZkun2WrVqUatWrfyM9NjTHGsREREREQtQsRYRERERsQAVaxERERERC1CxFhERkXxlNOoBZPJouNefZRVrERERyTfFihUjKSlJ5VoeCdevX892uXk9FURERETyjZ2dHSVKlODKlSvWjiJy3+zs7LC3t896/wPMIiIiIo8hOzu7LBfUEHmUqFhLjm3fe8jaEXLt8uXLXLqWau0Yeab81lOQs4PyW1t+5/dwKU05d+d8O7+I5I2KteTYpNlLrR0h15KTkylWrJi1Y+SZ8ltPQc4Oym9t+Z2/X5e2KtYiDyF9eVFERERExAJUrEVERERELEDFWkRERETEAlSsRUREREQsQMVaRERERMQCVKxFRERERCxAxVpERERExAJUrEVERERELEDFWkRERETE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QefOnXP8hcS7TZ06FYDGjRvTr1+/DMXazs6OsWPHMm/ePHx9fYmIiMj2fCNGjGDatGk0aNCAmJgY5s+fb5oDXbhwYWbPnk1iYiINGjRg9OjRvPfee2bHu7u7M2TIEEaNGkXlypVNi8L06tWLIkWKULduXby9vTl16lSOPicRERERsQybpKQkPZJBcsTx1ECLn/OmU2fSHPXlxawov/UU5Oyg/NZW0POLSN4UyDvWIiIiIiIPGxVrERERERELULEWEREREbEAFWsREREREQtQsRYRERERsQAVaxERERERC1CxFhERERGxABVrERERERELULEWEREREbEAFWsREREREQtQsRYRERERsQA7aweQguOmU2eLnzPdrozFzykiIiJiDSrWkmNpjjWsHUFERETkoaWpICIiIiIiFqBiLSIiIiJiASrWIiIiIiIWoGItIiIiImIBKtYiIiIiIhagYi0iIiIiYgEq1iIiIiIiFmCTlJRktHYIEREREZGCTnesRUREREQsQMVaRERERMQCVKxFRERERCxAxVpERERExAJUrEVERERELEDFWrI0a9YsatSogYuLC8HBwWzbts3akXJk4sSJNGrUiHLlyuHt7U14eDi//fabtWPlyYQJEzAYDAwYMMDaUXLs7NmzdO/eHW9vb1xcXHj66aeJjY21dqwcSUtLY9SoUaY/9zVq1GDUqFGkpqZaO1qmtm7dSocOHfDz88NgMLBgwQKz/UajkdGjR+Pr64urqyuhoaEcOnTISmkzyi5/SkoKI0aMoH79+ri7u+Pj48Obb77JqVOnrJj4f+712d+tT58+GAwGpkyZ8gATiog1qFhLpr7//nsGDx7Mu+++y+bNm6lTpw5hYWEPzT9q2YmNjaVLly6sWbOG5cuXY2dnR5s2bfj777+tHS1Xdu3axZw5c6hWrZq1o+RYUlISL7zwAkajkYULF7Jjxw7GjRuHs7OztaPlyKeffsqsWbMYO3YsO3fuZMyYMXzxxRdMnDjR2tEylZycTNWqVRkzZgwODg4Z9k+ePJlp06YxduxYNmzYgLOzM23btuXq1atWSJtRdvmvX7/O/v376d+/P5s2beKbb77hzz//pH379g/FDzr3+uzviI6OZs+ePbi5uT3AdCJiLXqOtWSqSZMmVKtWjc8++8y07T//+Q+tW7dmxIgRVkyWe9euXcPT05MFCxbQ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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cookies.barh(\"Type\")"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAEcCAYAAAC4b6z9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3dd1hW9eP/8SeIO/U2RWS5EMFBaIqCmaBmmbiVcHy0ciXmTtM+ZfY1zb3KmaNcqbnNHLkFxZUzU5QUt6EmqJgp4/eHP+5PdyACiofbXo/r4rq4z3xxCu8X73Puc2xiYmKSEBERkX81W6MDiIiIiPFUCERERESFQERERFQIREREBBUCERERQYVAREREUCEQERERVAhEREQEFQJ5Dp0+fdroCE9E+Y1jzdlB+Y1m7flVCERERESFQERERFQIREREBBUCERERQYVAREREUCEQERERVAhEREQEFQIREREB7IwOINnbnkMnjI6QYbGxsdy4E290jExTfuNYc3aA3DmSjI4gVkyFQNI0YfZKoyNkWFxcHPnz5zc6RqYpv3GsOTtAx1Z1jY4gVkynDERERESFQERERFQIREREBBUCERERQYVAREREUCEQERERVAhEREQEFQIRERFBhUBERERQIRARERFUCLK1ESNG4Ofn98j5oaGhmEwmbty48QxTiYjI8yhbFILr16/zwQcf4OXlRbFixXB3d6dJkyZs27bN6GjZWo0aNYiIiODFF180OoqIiFi5bPFwo/bt2/Pnn38yefJkSpcuzfXr19m1axd//PGH0dFITEwkKSmJHDlyGB0lhVy5cuHg4GB0DBEReQ4YPkIQExNDeHg4n332Gf7+/pQoUYKXX36Znj170rJlS/NyXl5efPXVVxbrBgYGMmDAAPPr6OhoWrduTfHixalUqRILFizAz8+PESNGmJeZPHkyNWvWxMnJifLly9OzZ09iYmLM8xcuXIizszM//fQTfn5+2NvbExERkWr2K1eu0KVLF0qXLo2joyO1atVi586d5vnffPMNVapUwd7enipVqjB37lyL9S9cuEC7du1wcXHBxcWF//znP1y6dOmRx+rChQv4+PjQrVs34uPjUz1lsHfvXho2bIijoyPly5enX79+3Lp1yzx/165dvPbaazg7O1OiRAnq1avHr7/++sh9iojIv4Ph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v3GsOTtA7hzP7aNp5BlQIZA0+VYpb3SEDLP2B4wov3GsOTs8zC+SWTplICIiIioEIiIiokIgIiIiqBCIiIgIKgQiIiKCCoGIiIigQiAiIiLoPgTyGHsOnTA6QobFxsZy40680TEyTfmNY83ZQfmNltX5nR2K4upkn2XbVyGQNE2YvdLoCBkWFxdH/vz5jY6RacpvHGvODspvtKzO37dT8ywtBDplICIiIioEIiIiokIgIiIiqBCIiIgIKgQiIiKCCoGIiIigQiAiIiKoEIiIiAgqBCIiIoIKgYiIiJBNC4HJZGL16tWGZli4cCHOzs6GZniUkJAQgoODn3gZERGRZM+8EERHRzNw4EAqV65MsWLFKF++PK1ateKnn3561lGeOi8vL7766iujYwAwcuRIZsyYYXQMERGxEs/04Ubnzp2jQYMGvPDCCwwZMoRKlSqRmJjIjh076NevH7/88suzjPNcK1SokNERRETEijzTEYL+/fuTlJTEtm3baN68Oe7u7nh4eNC1a1fCwsIslr158yZvv/02Tk5OeHt7s2TJEov5x48fp2nTphQvXpxSpUoREhJCbGysxTLfffcdNWvWpFixYri7uxMSEmKed+HCBdq1a4eLiwsuLi785z//4dKlS4/MfvbsWdq0aUO5cuVwcnKidu3abNiwwTw/MDCQCxcuMHjwYEwmEyaTyTxv7969NGzYEEdHR8qXL0+/fv24detWmsfq1KlTtG7dmhIlSuDs7Ez9+vU5fvy4xTLTpk2jfPnylCxZku7du3P37l3zvH+eMggMDKRv374MHDiQkiVLUrJkSQYPHkxiYmKaOURE5N/hmRWCmzdvsnnzZrp06cILL7yQYv7f30ABRo8eTcOGDQkLC6NFixb06NGD8+fPA3D37l1atWpF/vz52bJlCwsWLGDfvn306NHDvP4333xD3759adu2Lbt27WLp0qWUL18egKSkJNq1a8e1a9dYs2YNP/zwA1evXqVdu3YkJSWlmv/OnTvUr1+flStXEhYWRpMmTWjfvj2nTp0CYMGCBTg7O/Phhx8SERFBREQE8LC4tGjRgjfffJOwsDDmz5/PsWPHLLL+05UrV2jQoAE2NjasXLmSHTt20LlzZxISEszLhIeHc+LECVatWsU333zD2rVrmT59epr/DZYuXUpiYiKbNm1i4sSJzJ07l6lTp6a5joiI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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cookies.barh(\"Type\", \"Amount remaining\")"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAEcCAYAAAC4b6z9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3deXgNd///8Wci9u0QQRaxJBGxNJQgaBLcbTWWoCJKuZVSlCq1dVHuqsbSqlYoLYpIW7vY1VIEsa/1JWJJRC2xRqV1RyS/P/ycu6dZhCznSF+P63JdycxnZt7vM5ec15mZM2N1+/btVEREROQfzdrcBYiIiIj5KRCIiIiIAoGIiIgoEIiIiAgKBCIiIoICgYiIiKBAICIiIigQiIiICAoE8g8QHR1t7hJyjHqxTOrFMuWnXiD3+1EgEBEREQUCERERUSAQERERFAhEREQEBQIRERFBgUBERERQIBAREREUCERERASwMXcBYtn2HD5p7hKyLSEhgRt3k81dRo5QL5apcIFUc5cgkm0KBJKpL+esMHcJ2ZaYmEjx4sXNXUaOUC+WqVenFuYuQSTbdMpAREREFAhEREREgUBERERQIBAREREUCERERAQFAhEREUGBQERERFAgEBERERQIREREBAUCERERQYHAogUHB+Pt7Z3h/IiICAwGAzdu3MjDqkREJD+yiEBw/fp13nvvPerUqUP58uVxc3OjXbt2/PLLL+YuzaI1atSIqKgoypYta+5SRETkGWcRDzfq3r07f/75JyEhIVStWpXr16+za9cubt68ae7SSElJITU1lQIFCpi7lDQKFSpEhQoVzF2GiIjkA2Y/QnD79m0iIyMZO3Ysvr6+ODs78/zzzzNo0CBeffVV47g6deowbdo0k2Vbt27N8OHDjb/Hx8fTpUsXKlasSO3atVm4cCHe3t4EBwcbx4SEhNCkSRMcHBzw8PBg0KBB3L592zg/LCwMR0dHfv75Z7y9vbGzsyMqKird2i9fvkyfPn2oWrUq9vb2NGvWjB07dhjnf//999SrVw87Ozvq1avH/PnzTZaPi4ujW7duODk54eTkxOuvv85vv/2W4WsVFxeHl5cX/fr1Izk5Od1TBnv37sXf3x97e3s8PDwYOnQod+7cMc7ftWsX//rXv3B0dMTZ2ZmWLVvyf//3fxluU0RE/hnMHghKlChBiRIlWLduHffu3cvWuvr3709cXByrVq3ihx9+YPHixcTFxZmMsba2Jjg4mMjISL777jsOHjzIiBEjTMbcu3ePzz//nC+//JK9e/dSqVKlNNtKTEykdevWXLhwgYULF7J7926T9axevZrhw4fTv39/IiMj6devH++99x7r168HIDU1lW7dunHt2jVWrVrF6tWruXLlCt26dSM1Ne2z1aOiomjVqhUvvvgi33zzDTY2aQ/unDhxgo4dO/LKK6+wc+dOQkNDOX78OAMHDgQgOTmZrl270rhxY3bu3MnmzZvp16+fRR79EBGRvGX2UwY2NjZMnz6dwYMHM3/+fJ577jkaNWpE+/btadCgQZbXEx0dzZYtW9i0aRNeXl4AzJgxg+eee85k3IABA4w/V65cmU8++YSuXbsyc+ZMrK0f5qMHDx4wadIk6tatm+H2li5dSnx8PJs2bcLW1haAqlWrGueHhIQQFBRE3759AXB1deXIkSN89dVXvPLKK2zbto1ff/2Vw4cPU7lyZQBmz55NvXr12L59O35+fsZ1HTx4kMDAQAYMGMCwYcMyrOnrr7+mQ4cODBo0yDjtiy++wMfHh2vXrmFjY0NCQgKtWrUy1lq9evWMX1QeBp/8IL/0AerFUkVHR5u7hByjXixXdvpxc3PLdL7ZAwFAQEAAL7/8MpGRkezbt48tW7YQEhLC6NGjee+997K0jtOnT2NtbU29evWM05ycnLC3tzcZt337dr788ktOnz7NnTt3ePDgAUlJSVy9etU41sbGhjp16mS6vWPHjlGrVi1jGPi7qKgounXrZjLN29vbeIQgKioKe3t7YxgAqFKlCvb29pw6dcoYCC5dukRAQAAjRozgnXfeybSmo0ePcu7cOVasWGGc9uhow/nz52nYsCFdu3bl1VdfxdfXFx8fH9q3b4+Tk1OG6yxevHim23wWJCYm5os+QL1Yssf9sX1WREdHqxcLldv9mP2UwSNFihShefPmjBw5kp9//pnu3bszYcIEkpKSgIeH+v9+KD05Odn4c3qH2f/uwoULBAUFUb16debNm8e2bdsICQkBMG4HoHDhwo89jJ6V7VlZWWU4LTU1Nd35f1/O1taWBg0asGzZMpNrHdKTkpJCjx49iIiIMP7buXMnhw4dMgacGTNmsHnzZpo0acL69etp0KABW7ZseWwvIiKS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1KhRhISE0LhxYzp06MCqVauoXLnyY9f566+/4unpmeaJk9OnT6dbt258/PHHeHl5ERQUxK5du4zXJTg4OPD+++/z6aef4ubm9o+906SIiPyP1e3bt5/o5PiFCxeYP38+YWFhxMfHU79+fXr27Mmrr76qr6/lQ0EDPzN3CdmWn84jqhfLpF4sU37qBaBXpxa87Nf48QOfUpaOEPyVs7Mzo0ePZseOHXh7e3PgwAEGDhxIjRo1+PTTT41f6xMREZFnR5Yff/zI3r17mTt3LqtWraJgwYL07t2bgIAANmzYwIwZMzh79izff/99btQqIiIiuSRLgeDOnTv89NNPzJs3j1OnThmPBgQFBRmvmH/hhRfw9PRkyJAhuVqwiIiI5LwsBYIaNWqQnJxM27Zt+fzzz4131fs7d3d3Y0AQERGRZ0eWAsHQoUP597//jZ2dXabjPD09iYqKypHCREREJO9keFGhp6cnx48fB2DYsGGPDQMiIiLy7MowEFy4cIGkpKS8rEVERETM5Im/digiIiL5T6aB4K9P4BMREZH8K9OLCoODgylbtuxjV2JlZcXMmTNzrCgRERHJW5kGguPHjxufjJcZHUkQERF5tmUaCMLCwqhfv35e1SIWaEjvDuYuIdsSEhIoXbq0ucvIEerFMqkXy5SfegEoXOCJHj30xJ741sXyz9K4noe5S8i26Oho3NzczF1GjlAvlkm9WKb81As87Cc36VsGIiIiokAgIiIimZwyuHXrVl7WISIiImakIwQiIiKiQCAiIiIKBCIiIoICgYiIiKD7EMhj7Dl80twlZFtCQgI37iabu4wcoV4sU37qJbdvfiOWS4FAMvXlnBXmLiHbEhMTKV68uLnLyBHqxTLlp156dWph7hLETHTKQERERBQIRERERIFAREREUCAQERERFAhEREQEBQIRERFBgUBERERQIBAREREUCERERAQFAhEREUGBQERERFAgyHH9+/cnKCgoV9bdunVrhg8fnqWxYWFhODo65kodIiKS/5glEFy6dInBgwdTs2ZN7Ozs8PDw4J133uG33357ovXExsZiMBg4fPhwLlVqWRYuXMjHH3+cpbEdO3bkyJEjuVyRiIjkF3keCGJiYmjevDknT57km2++4dChQ8yaNYtTp07RokULYmNj87oks7t//36WxpUpU4aSJUtmaWzRokWxs7PLTlki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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cookies.barh(0, 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.hist()`\n",
"\n",
"```python\n",
"tbl.hist(column)\n",
"tbl.hist(column, bins=...)\n",
"```\n",
"\n",
"Plot a histogram of the values in `column`. Defaults to 10 bins of equal width. If `bins` is specified, it can be a number of bins to use (e.g. `bins=25` will produce a histogram with 25 bins) or an array of values to use as bins (e.g. `bins=make_array(1, 3, 4)` will produce 2 bins: $[1, 3)$ and $[3, 4)$). `column` can be column names as strings or integer indices."
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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BkONiIh0BkONiIh0BkONiIh0BkONiIh0huBQ69+/P+Li4iptP378OPr376+RooiIiGpDcKj98ccfkMvllbbL5XLlF4fWRGRkJGxtbWFmZgYXFxckJydX2b+4uBhffPEFbG1tYWpqir59+2Lr1q013i8REemeGn1JaFVvCLl58ybatGlTo53HxMQgJCQEX375JQYNGoTIyEh4enoiJSUFFhYWFa7j5+eHBw8eYOPGjejevTuys7NRVFRUo/0SEZFuqjLU9uzZg7179yo/r1u3Djt37lTrl5+fj+vXr2PUqFE12nlERAR8fHwwdepUAEB4eDh++uknREVFYdmyZWr9T58+jTNnzuDSpUswNjYGAHTp0qVG+yQiIt1V5eVHuVwOmUwGmUwGACgoKFB+fvknKysLzZs3x9SpU7FhwwbBOy4uLkZqaipcXV1Vlru6uuLcuXMVrnP06FEMGDAAERERsLGxwVtvvYXg4GAUFhYK3i8REemuKs/UAgICEBAQAACwtbXF6tWrMWbMGI3sOCcnB6WlpTAxMVFZbmJigqysrArXycjIQEpKClq2bIldu3ahoKAAwcHByMzMxK5duyrdV3p6eq3rLJQXV3kv8XUpKS3RSB113UahvLBO46krOAaaw7HUnKYylhKJpNI2wffULl++rJFiXvXqfTqFQlHpvbuysjKIRCJs374db7zxBoDyS5YeHh7IysqCqalphetVNQDVufb7XRgaGtZ6fU1prte8znXI5fI6b8PI0AgSSdO+5Juenl6nnyn6H46l5nAsy9VooggAPH36FPfv30deXh4UCoVau5OTk6DtGBsbQ09PT+2s7PHjx2pnby+ZmZmhY8eOykADgB49egAA7t+/X2moERFR0yA41PLy8rBo0SIcOnQIpaWlau0vz7Byc3MFbU9fXx92dnaIj4+Hu7u7cnl8fDzGjx9f4TqDBg3C4cOHUVhYCCMjIwDArVu3AKDS2ZJERNR0CA61uXPn4siRIwgICICTkxPEYnGddx4UFITAwEDY29vD0dERUVFRyMzMxLRp0wAAgYGBAIBt27YBACZNmoTw8HAEBQUhJCQEBQUFCAkJwYQJEyo9uyMioqZDcKj9+OOPCAwMxBdffKGxnXt4eCA3Nxfh4eGQyWTo3bs3pFIpLC0tAZRfUvwrIyMjfP/99wgODoarqyvEYjHc3NwqnP5P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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"actors.hist(3)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"actors.hist(\"Gross\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `Table.interactive_plots()`\n",
"\n",
"```python\n",
"Table.interactive_plots()\n",
"```\n",
"\n",
"This function will change from static plots like the ones above to interactive plots made with [plotly](https://plot.ly). If a plotting method has a plotly version, that method will be used instead."
]
},
{
"cell_type": "code",
"execution_count": 193,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"marker": {
"color": "rgb(0,30,66)",
"size": 5
},
"mode": "markers",
"name": "Gross",
"textfont": {
"color": "rgb(0,30,66)"
},
"textposition": "bottom center",
"type": "scatter",
"x": [
4871.7,
4772.8,
4468.3,
4340.8,
3947.3,
3810.4,
3587.2,
3368.6,
3351.5,
3341.2,
3294,
3279.3,
3189.4,
3175,
3162.9,
3150.4,
3149.1,
3123.9,
3107.3,
3081.3,
3031.7,
2942.7,
2890.6,
2885.4,
2827,
2822,
2815.8,
2815.8,
2802.6,
2735.3,
2726.3,
2715.3,
2681.9,
2681.3,
2680.9,
2661,
2634.4,
2605.1,
2602.3,
2580.6,
2557.7,
2549.8,
2545.2,
2522.1,
2518.3,
2500.3,
2463.7,
2462.6,
2457.8,
2416.5
],
"y": [
936.7,
623.4,
534.9,
415,
623.4,
441.2,
234.3,
423.3,
534.9,
623.4,
534.9,
250.9,
293.5,
623.4,
936.7,
377.8,
306.2,
424.7,
228.4,
279.3,
441.2,
474.5,
936.7,
459,
279.3,
381,
423.3,
424.7,
377.8,
183.4,
424.7,
381,
381,
250.7,
202.4,
169.7,
381,
257.8,
250.9,
459,
350.1,
245.4,
260,
279.3,
658.7,
623.4,
424.7,
336,
623.4,
448.1
]
}
],
"layout": {
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"scatter": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"xaxis": {
"title": {
"text": "Total Gross"
}
},
"yaxis": {
"title": {
"text": "Gross"
}
}
}
},
"text/html": [
"\n",
" \n",
" \n",
"
\n",
" \n",
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Table.interactive_plots()\n",
"actors.scatter(\"Total Gross\", \"Gross\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `Table.static_plots()`\n",
"\n",
"```python\n",
"Table.static_plots()\n",
"```\n",
"\n",
"This function turns off plotly plots."
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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wsLC6N27N4888ojr5Q9VVVWEh4cD8Mtf/tL1/s7ly5cDZxbauvfee+nbty/h4eHcdNNNLFq0qMEVCy9m06ZNHD58mF/84hduyf1c99xzD4GBga7fR4wYwejRo9myZQs333wzYWFhvPbaa8CZd6f+7Gc/49prr8VsNnPTTTfx4osvuh3v5MmTzJo1i+joaMLCwrBarYwdO9a1qiLAr3/9a2666SbCw8Pp2bMnw4cPZ9u2bZccn7QeasGLIfzmN79hzpw5TJgwgQULFvDll1+ycOFCPvjgA3Jzc2nfvj1/+tOfSExMZMqUKdxzzz0Arrf4fPHFFwwcOJDJkycTEBDAwYMHycjI4PDhw2RnZ19SXXbv3k27du0YOnToJX3u0KFDPPXUUzz++ON069aN0NBQqqurufvuuykoKGDevHlce+21bN26lccff5wTJ06QlpYGQGpqKnv27GHevHlcc801lJaW8t577/Hf//4XgFdffZWFCxcyZ84cbrrpJiorK/n444/rvX9YjEUJXlq906dPk56ezm233ebWsr3mmmsYM2YM69ev58EHHyQmJgY482Luut0848ePd/3Z6XS6XlWXkpJCRkaG2+JVF3P06FEsFgtXXHGF2/aamhq39df9/PzcXihRUlJCXl4effr0cW37wx/+wN///nfWrFnjernFbbfdRllZGStWrODhhx+mU6dO7N+/n0mTJnHfffe5PnvuCy/279/PgAEDmDVrlmvbqFGjGh2TtE7qopFW7+DBg5w4ccL1UuWzhg4dSlhYGO++++5Fj+FwOJg3bx433HADYWFhhIaG8thjj1FTU8O///3vS6rPuUn8XHfddRehoaGunw0bNrjtt1qtbskd4N1338Xf358xY8a4bZ8wYQKVlZV88MEHAAwcOJBXXnmFFStWcODAAWpra93KDxw4kL/97W/MnTuX3bt3U1lZeUkxSeukBC+tnsPhAHD1sZ8rLCysUd0QycnJ/O53v+ORRx7hzTffJDc3l1/+8pcAl9wPf/XVV2O32/n666/dtq9YsYLc3FzWrl3b4OfOvqTiXA6HA7PZXG9ANiwsDMAV2/Lly7nvvvt4+eWXGTp0KFarlSeffNL1so4HHniA9PR08vLyGDNmDNdccw0PPPCA20suxHiU4KXVOztf/uzLps9VXFzseoXd+ZSVlbFjxw5mzZrF1KlTufnmmxkwYADt27e/rPoMGTKEU6dO8c4777htt1qtDBgwgOuuu67BzzX0/s/g4GBKSkrqtcjPvmLubGwdO3Zk4cKFfPjhhxw4cIBHH32UF154geeeew6ANm3a8NBDD/HOO+/wr3/9i1/96lfk5eXx0EMPXVaM0joowUur17dvXzp37lzv4aPdu3dTXFzsmvPu7++PyWRyewUdQGVlJU6nk7Ztvx2ScjqdvPHGG5dVn/Hjx9OtWzeefPLJ7zyIefPNN3Pq1Cneeustt+0bNmygQ4cODBgwoN5nevbsycyZM4mMjOTQoUP19nfp0oUJEybwgx/8oMH9YhwaZJVWz9/fn7S0NObMmcMjjzzCuHHj+PLLL/nFL35BVFSUq2++TZs2WK1Wtm7dypAhQ+jYsSNdu3bFYrHQr18/VqxYQUhICJ06deKVV16p96Lmxmrfvj2vvfYa48eP55ZbbnE96NS2bVvsdjubN28GcJsmeT6JiYnExMTw6KOP8tVXX2G1Wnn77bfZsGEDc+fOdT0oNXToUMaOHUtUVBRXXnklu3fv5tNPP+Xhhx8GYNq0aYSGhnLjjTcSGhpKYWEhmzZtcr3RS4xJCV4M4eGHHyYwMJAXXniBnJwcgoKCGDlyJAsXLqRDhw6ucsuWLWPu3Ln88Ic/5PTp08yfP5+UlBTWrl3LrFmzSElJ4corr+Tuu+/mnnvuYfLkyZdVn/79+/Puu++SlZXFG2+8QXp6OrW1tXTt2pVBgwaxbds24uPjL3qctm3bsmnTJhYsWMCyZcs4ceIEPXv2JCMjg+TkZFe5wYMHs3HjRr744gtqamro2bMnS5YsYcqUKQAMGjSIN954g9dff53y8nLCw8OZPHmya5qlGJNe2SciYlDqgxcRMSgleBERg1KCFxExKCV4ERGDUoIXETEoJXgREYNSghcRMSgleBERg1KCFxExqP8HU0oi9XOmCvwAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Table.static_plots()\n",
"actors.scatter(\"Total Gross\", \"Gross\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced `Table` Functions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.apply()`\n",
"\n",
"```python\n",
"tbl.apply(function, column)\n",
"tbl.apply(function, col1, col2, ...)\n",
"```\n",
"\n",
"Applies the function `function` to each element of the column `column` and returns the values returned as an array. If `function` takes more than one argument, you can specify multiple columns to use for each argument _in order_."
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([41., 69., 61., 44., 53., 38., 36., 45., 58., 37., 38., 49., 60.,\n",
" 43., 7., 31., 24., 50., 39., 79., 34., 63., 23., 34., 37., 36.,\n",
" 17., 50., 39., 42., 35., 36., 17., 46., 40., 32., 17., 29., 39.,\n",
" 26., 25., 36., 27., 43., 25., 21., 40., 35., 23., 25.])"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"actors.apply(np.average, \"Number of Movies\")"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Actor Total Gross Number of Movies Average per Movie #1 Movie Gross \n",
" \n",
" \n",
" \n",
" \n",
" Harrison Ford 4871.7 41 118.8 Star Wars: The Force Awakens 936.7 \n",
" \n",
" \n",
" Samuel L. Jackson 4772.8 69 69.2 The Avengers 623.4 \n",
" \n",
" \n",
" Morgan Freeman 4468.3 61 73.3 The Dark Knight 534.9 \n",
" \n",
" \n",
" Tom Hanks 4340.8 44 98.7 Toy Story 3 415 \n",
" \n",
" \n",
" Robert Downey, Jr. 3947.3 53 74.5 The Avengers 623.4 \n",
" \n",
" \n",
" Eddie Murphy 3810.4 38 100.3 Shrek 2 441.2 \n",
" \n",
" \n",
" Tom Cruise 3587.2 36 99.6 War of the Worlds 234.3 \n",
" \n",
" \n",
" Johnny Depp 3368.6 45 74.9 Dead Man's Chest 423.3 \n",
" \n",
" \n",
" Michael Caine 3351.5 58 57.8 The Dark Knight 534.9 \n",
" \n",
" \n",
" Scarlett Johansson 3341.2 37 90.3 The Avengers 623.4 \n",
" \n",
" \n",
"
\n",
"... (40 rows omitted)
"
],
"text/plain": [
"Actor | Total Gross | Number of Movies | Average per Movie | #1 Movie | Gross\n",
"Harrison Ford | 4871.7 | 41 | 118.8 | Star Wars: The Force Awakens | 936.7\n",
"Samuel L. Jackson | 4772.8 | 69 | 69.2 | The Avengers | 623.4\n",
"Morgan Freeman | 4468.3 | 61 | 73.3 | The Dark Knight | 534.9\n",
"Tom Hanks | 4340.8 | 44 | 98.7 | Toy Story 3 | 415\n",
"Robert Downey, Jr. | 3947.3 | 53 | 74.5 | The Avengers | 623.4\n",
"Eddie Murphy | 3810.4 | 38 | 100.3 | Shrek 2 | 441.2\n",
"Tom Cruise | 3587.2 | 36 | 99.6 | War of the Worlds | 234.3\n",
"Johnny Depp | 3368.6 | 45 | 74.9 | Dead Man's Chest | 423.3\n",
"Michael Caine | 3351.5 | 58 | 57.8 | The Dark Knight | 534.9\n",
"Scarlett Johansson | 3341.2 | 37 | 90.3 | The Avengers | 623.4\n",
"... (40 rows omitted)"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"actors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The example below calculates the average gross for each movie by actor by applying a function that takes in the value of `Total Gross` and `Number of Movies` and returns their quotient."
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([118.82195122, 69.17101449, 73.25081967, 98.65454545,\n",
" 74.47735849, 100.27368421, 99.64444444, 74.85777778,\n",
" 57.78448276, 90.3027027 , 86.68421053, 66.9244898 ,\n",
" 53.15666667, 73.8372093 , 451.84285714, 101.62580645,\n",
" 131.2125 , 62.478 , 79.67435897, 39.00379747,\n",
" 89.16764706, 46.70952381, 125.67826087, 84.86470588,\n",
" 76.40540541, 78.38888889, 165.63529412, 56.316 ,\n",
" 71.86153846, 65.12619048, 77.89428571, 75.425 ,\n",
" 157.75882353, 58.28913043, 67.0225 , 83.15625 ,\n",
" 154.96470588, 89.83103448, 66.72564103, 99.25384615,\n",
" 102.308 , 70.82777778, 94.26666667, 58.65348837,\n",
" 100.732 , 119.06190476, 61.5925 , 70.36 ,\n",
" 106.86086957, 96.66 ])"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def average_gross(total_gross, num_movies):\n",
" return total_gross / num_movies\n",
"\n",
"actors.apply(average_gross, \"Total Gross\", \"Number of Movies\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.group()`\n",
"\n",
"```python\n",
"tbl.group(column_or_columns)\n",
"tbl.group(column_or_columns, func)\n",
"```\n",
"\n",
"Groups a table by values in `column_or_columns`. If `column_or_columns` is an array, groups by each unique combination of elements in those columns. If `func` is specified, it should be a function that takes in an array of values and returns a single value. If unspecified, this defaults to the count of rows in the set."
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Start Station count \n",
" \n",
" \n",
" \n",
" \n",
" 2nd at Folsom 2302 \n",
" \n",
" \n",
" 2nd at South Park 2610 \n",
" \n",
" \n",
" 2nd at Townsend 3904 \n",
" \n",
" \n",
" 5th at Howard 2190 \n",
" \n",
" \n",
" Adobe on Almaden 165 \n",
" \n",
" \n",
" Arena Green / SAP Center 176 \n",
" \n",
" \n",
" Beale at Market 2377 \n",
" \n",
" \n",
" Broadway St at Battery St 2157 \n",
" \n",
" \n",
" California Ave Caltrain Station 127 \n",
" \n",
" \n",
" Castro Street and El Camino Real 339 \n",
" \n",
" \n",
"
\n",
"... (60 rows omitted)
"
],
"text/plain": [
"Start Station | count\n",
"2nd at Folsom | 2302\n",
"2nd at South Park | 2610\n",
"2nd at Townsend | 3904\n",
"5th at Howard | 2190\n",
"Adobe on Almaden | 165\n",
"Arena Green / SAP Center | 176\n",
"Beale at Market | 2377\n",
"Broadway St at Battery St | 2157\n",
"California Ave Caltrain Station | 127\n",
"Castro Street and El Camino Real | 339\n",
"... (60 rows omitted)"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.group(\"Start Station\")"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Start Station Duration mean \n",
" \n",
" \n",
" \n",
" \n",
" 2nd at Folsom 512.887 \n",
" \n",
" \n",
" 2nd at South Park 654.565 \n",
" \n",
" \n",
" 2nd at Townsend 755.176 \n",
" \n",
" \n",
" 5th at Howard 819.509 \n",
" \n",
" \n",
" Adobe on Almaden 2522.5 \n",
" \n",
" \n",
" Arena Green / SAP Center 1999.7 \n",
" \n",
" \n",
" Beale at Market 679.602 \n",
" \n",
" \n",
" Broadway St at Battery St 827.753 \n",
" \n",
" \n",
" California Ave Caltrain Station 4403.29 \n",
" \n",
" \n",
" Castro Street and El Camino Real 1221.86 \n",
" \n",
" \n",
"
\n",
"... (60 rows omitted)
"
],
"text/plain": [
"Start Station | Duration mean\n",
"2nd at Folsom | 512.887\n",
"2nd at South Park | 654.565\n",
"2nd at Townsend | 755.176\n",
"5th at Howard | 819.509\n",
"Adobe on Almaden | 2522.5\n",
"Arena Green / SAP Center | 1999.7\n",
"Beale at Market | 679.602\n",
"Broadway St at Battery St | 827.753\n",
"California Ave Caltrain Station | 4403.29\n",
"Castro Street and El Camino Real | 1221.86\n",
"... (60 rows omitted)"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.group(\"Start Station\", np.mean).select(0,2)"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Start Station count \n",
" \n",
" \n",
" \n",
" \n",
" San Francisco Caltrain (Townsend at 4th) 7426 \n",
" \n",
" \n",
" San Francisco Caltrain 2 (330 Townsend) 6114 \n",
" \n",
" \n",
" Harry Bridges Plaza (Ferry Building) 4795 \n",
" \n",
" \n",
" Temporary Transbay Terminal (Howard at Beale) 4212 \n",
" \n",
" \n",
" Townsend at 7th 3925 \n",
" \n",
" \n",
" 2nd at Townsend 3904 \n",
" \n",
" \n",
" Embarcadero at Sansome 3900 \n",
" \n",
" \n",
" Steuart at Market 3872 \n",
" \n",
" \n",
" Market at 10th 3370 \n",
" \n",
" \n",
" Market at Sansome 3218 \n",
" \n",
" \n",
"
\n",
"... (60 rows omitted)
"
],
"text/plain": [
"Start Station | count\n",
"San Francisco Caltrain (Townsend at 4th) | 7426\n",
"San Francisco Caltrain 2 (330 Townsend) | 6114\n",
"Harry Bridges Plaza (Ferry Building) | 4795\n",
"Temporary Transbay Terminal (Howard at Beale) | 4212\n",
"Townsend at 7th | 3925\n",
"2nd at Townsend | 3904\n",
"Embarcadero at Sansome | 3900\n",
"Steuart at Market | 3872\n",
"Market at 10th | 3370\n",
"Market at Sansome | 3218\n",
"... (60 rows omitted)"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.group(\"Start Station\").sort(\"count\", descending = True)"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Start Station End Station count \n",
" \n",
" \n",
" \n",
" \n",
" 2nd at Folsom 2nd at Folsom 22 \n",
" \n",
" \n",
" 2nd at Folsom 2nd at South Park 84 \n",
" \n",
" \n",
" 2nd at Folsom 2nd at Townsend 123 \n",
" \n",
" \n",
" 2nd at Folsom 5th at Howard 28 \n",
" \n",
" \n",
" 2nd at Folsom Beale at Market 34 \n",
" \n",
" \n",
" 2nd at Folsom Broadway St at Battery St 18 \n",
" \n",
" \n",
" 2nd at Folsom Civic Center BART (7th at Market) 13 \n",
" \n",
" \n",
" 2nd at Folsom Clay at Battery 70 \n",
" \n",
" \n",
" 2nd at Folsom Commercial at Montgomery 46 \n",
" \n",
" \n",
" 2nd at Folsom Davis at Jackson 8 \n",
" \n",
" \n",
"
\n",
"... (1616 rows omitted)
"
],
"text/plain": [
"Start Station | End Station | count\n",
"2nd at Folsom | 2nd at Folsom | 22\n",
"2nd at Folsom | 2nd at South Park | 84\n",
"2nd at Folsom | 2nd at Townsend | 123\n",
"2nd at Folsom | 5th at Howard | 28\n",
"2nd at Folsom | Beale at Market | 34\n",
"2nd at Folsom | Broadway St at Battery St | 18\n",
"2nd at Folsom | Civic Center BART (7th at Market) | 13\n",
"2nd at Folsom | Clay at Battery | 70\n",
"2nd at Folsom | Commercial at Montgomery | 46\n",
"2nd at Folsom | Davis at Jackson | 8\n",
"... (1616 rows omitted)"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.group(['Start Station', 'End Station'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.pivot()`\n",
"\n",
"```python\n",
"tbl.pivot(col1, col2)\n",
"tbl.pivot(col1, col2, values, collect)\n",
"```\n",
"\n",
"Creates a [pivot table](https://en.wikipedia.org/wiki/Pivot_table) with values in `col1` as columns and values in `col2` as rows. If `values` is unspecified, the values in the cells default to counts. If `values` is specified, it should be the label of a column whose values to pass as an array to `collect`, which should return a single value."
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Flavor Color Price \n",
" \n",
" \n",
" \n",
" \n",
" strawberry pink 3.55 \n",
" \n",
" \n",
" chocolate light brown 4.75 \n",
" \n",
" \n",
" chocolate dark brown 5.25 \n",
" \n",
" \n",
" strawberry pink 5.25 \n",
" \n",
" \n",
" chocolate dark brown 5.25 \n",
" \n",
" \n",
" bubblegum pink 4.75 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Flavor | Color | Price\n",
"strawberry | pink | 3.55\n",
"chocolate | light brown | 4.75\n",
"chocolate | dark brown | 5.25\n",
"strawberry | pink | 5.25\n",
"chocolate | dark brown | 5.25\n",
"bubblegum | pink | 4.75"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"more_cones = Table().with_columns(\n",
" 'Flavor', make_array('strawberry', 'chocolate', 'chocolate', 'strawberry', 'chocolate', 'bubblegum'),\n",
" 'Color', make_array('pink', 'light brown', 'dark brown', 'pink', 'dark brown', 'pink'),\n",
" 'Price', make_array(3.55, 4.75, 5.25, 5.25, 5.25, 4.75)\n",
")\n",
"\n",
"more_cones"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Color bubblegum chocolate strawberry \n",
" \n",
" \n",
" \n",
" \n",
" dark brown 0 2 0 \n",
" \n",
" \n",
" light brown 0 1 0 \n",
" \n",
" \n",
" pink 1 0 2 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Color | bubblegum | chocolate | strawberry\n",
"dark brown | 0 | 2 | 0\n",
"light brown | 0 | 1 | 0\n",
"pink | 1 | 0 | 2"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"more_cones.pivot('Flavor', 'Color')"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Color bubblegum chocolate strawberry \n",
" \n",
" \n",
" \n",
" \n",
" dark brown 0 10.5 0 \n",
" \n",
" \n",
" light brown 0 4.75 0 \n",
" \n",
" \n",
" pink 4.75 0 8.8 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Color | bubblegum | chocolate | strawberry\n",
"dark brown | 0 | 10.5 | 0\n",
"light brown | 0 | 4.75 | 0\n",
"pink | 4.75 | 0 | 8.8"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"more_cones.pivot('Flavor', 'Color', values='Price', collect=sum)"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Color bubblegum chocolate strawberry \n",
" \n",
" \n",
" \n",
" \n",
" dark brown 0 2 0 \n",
" \n",
" \n",
" light brown 0 1 0 \n",
" \n",
" \n",
" pink 1 0 2 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Color | bubblegum | chocolate | strawberry\n",
"dark brown | 0 | 2 | 0\n",
"light brown | 0 | 1 | 0\n",
"pink | 1 | 0 | 2"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"more_cones.pivot(0, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.join()`\n",
"\n",
"```python\n",
"tbl1.join(col1, tbl2)\n",
"tbl1.join(col1, tbl2, col2)\n",
"```\n",
"\n",
"Performs a join of `tbl1` on `tbl2` where rows are only included if the value in `col1` is present in _both_ join columns. If `col2` is unspecified, it is assumed to be the same label as `col1`."
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Flavor Price \n",
" \n",
" \n",
" \n",
" \n",
" strawberry 3.55 \n",
" \n",
" \n",
" vanilla 4.75 \n",
" \n",
" \n",
" chocolate 6.55 \n",
" \n",
" \n",
" strawberry 5.25 \n",
" \n",
" \n",
" chocolate 5.75 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Flavor | Price\n",
"strawberry | 3.55\n",
"vanilla | 4.75\n",
"chocolate | 6.55\n",
"strawberry | 5.25\n",
"chocolate | 5.75"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cones = Table().with_columns(\n",
" 'Flavor', make_array('strawberry', 'vanilla', 'chocolate', 'strawberry', 'chocolate'),\n",
" 'Price', make_array(3.55, 4.75, 6.55, 5.25, 5.75)\n",
")\n",
"cones"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Kind Stars \n",
" \n",
" \n",
" \n",
" \n",
" strawberry 2.5 \n",
" \n",
" \n",
" chocolate 3.5 \n",
" \n",
" \n",
" vanilla 4 \n",
" \n",
" \n",
" mint chip 3 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Kind | Stars\n",
"strawberry | 2.5\n",
"chocolate | 3.5\n",
"vanilla | 4\n",
"mint chip | 3"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ratings = Table().with_columns(\n",
" 'Kind', make_array('strawberry', 'chocolate', 'vanilla', 'mint chip'),\n",
" 'Stars', make_array(2.5, 3.5, 4, 3)\n",
")\n",
"ratings"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Flavor Price Stars \n",
" \n",
" \n",
" \n",
" \n",
" chocolate 6.55 3.5 \n",
" \n",
" \n",
" chocolate 5.75 3.5 \n",
" \n",
" \n",
" strawberry 3.55 2.5 \n",
" \n",
" \n",
" strawberry 5.25 2.5 \n",
" \n",
" \n",
" vanilla 4.75 4 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Flavor | Price | Stars\n",
"chocolate | 6.55 | 3.5\n",
"chocolate | 5.75 | 3.5\n",
"strawberry | 3.55 | 2.5\n",
"strawberry | 5.25 | 2.5\n",
"vanilla | 4.75 | 4"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Joins cones on ratings. Note that the mint chip flavor doesn't appear since it's not in cones\n",
"rated = cones.join('Flavor', ratings, 'Kind')\n",
"rated"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `tbl.sample()`\n",
"\n",
"```python\n",
"tbl.sample(n, with_replacement=True)\n",
"```\n",
"\n",
"Returns a new table with `n` rows that were randomly sampled from the original table. If `with_replacement` is true, sampling occurs with replacement. For sampling without replacement, set `with_replacement=False`.\n"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Flavor Price Stars \n",
" \n",
" \n",
" \n",
" \n",
" chocolate 6.55 3.5 \n",
" \n",
" \n",
" chocolate 6.55 3.5 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Flavor | Price | Stars\n",
"chocolate | 6.55 | 3.5\n",
"chocolate | 6.55 | 3.5"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# if you rerun this cell, you should get different results since the sample is random\n",
"rated.sample(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice how the table below has more rows for certain flavors than the original rated table. This is because we are sampling with replacement, so you get theoretically get 5 of the same flavors!"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Flavor Price Stars \n",
" \n",
" \n",
" \n",
" \n",
" strawberry 5.25 2.5 \n",
" \n",
" \n",
" strawberry 3.55 2.5 \n",
" \n",
" \n",
" strawberry 3.55 2.5 \n",
" \n",
" \n",
" chocolate 6.55 3.5 \n",
" \n",
" \n",
" vanilla 4.75 4 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Flavor | Price | Stars\n",
"strawberry | 5.25 | 2.5\n",
"strawberry | 3.55 | 2.5\n",
"strawberry | 3.55 | 2.5\n",
"chocolate | 6.55 | 3.5\n",
"vanilla | 4.75 | 4"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sampled_with_replacement = rated.sample(5)\n",
"sampled_with_replacement"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Flavor Price Stars \n",
" \n",
" \n",
" \n",
" \n",
" vanilla 4.75 4 \n",
" \n",
" \n",
" strawberry 3.55 2.5 \n",
" \n",
" \n",
" chocolate 6.55 3.5 \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Flavor | Price | Stars\n",
"vanilla | 4.75 | 4\n",
"strawberry | 3.55 | 2.5\n",
"chocolate | 6.55 | 3.5"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rated.sample(3, with_replacement = False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## String Methods"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `str.split()`\n",
"\n",
"```python\n",
"string.split(separator)\n",
"```\n",
"\n",
"Splits the string `string` into a list on each occurence of the substring `separator`. The occurences of `separator` are removed from the resulting list.\n",
"\n",
"For example, the code below splits the string `Data 8hiishifun.` on the substring `hi`."
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Data 8', 'is', 'fun.']"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example_string = \"Data 8hiishifun.\"\n",
"example_string.split(\"hi\")"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['the', 'secret', 'message', 'is', '123']"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# split on .\n",
"another_string = \"the.secret.message.is.123\"\n",
"another_string.split(\".\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `str.join()`\n",
"\n",
"```python\n",
"string.join(array)\n",
"```\n",
"\n",
"Combines each element of `array` into one string with `string` used to connect each element."
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'highest greatest best'"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fun_array = make_array(\"high\", \"great\", \"best\")\n",
"\"est \".join(fun_array)"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'somelistofstrings'"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# you can join elements on the empty string to just merge the elements\n",
"some_strings = make_array(\"some\", \"list\", \"of\", \"strings\")\n",
"\"\".join(some_strings)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `str.replace()`\n",
"\n",
"```python\n",
"string.replace(old_string, new_string)\n",
"```\n",
"\n",
"Replaces each occurrence of `old_string` in `string` with `new_string`."
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'I saw 5 friends, 10 squirrels, and 20 people flyering on Sproul.'"
]
},
"execution_count": 107,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"berkeley_string = \"I saw 5 friends, 10 squirrels, and 20 people flyering on Sproul.\"\n",
"berkeley_string"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'I saw 5 frisbees, 10 squirrels, and 20 people flyering on Sproul.'"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"berkeley_string.replace(\"friends\", \"frisbees\")"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'I saw 5 frisbees, 10 squirrels, and 20 people having a picnic on the Glade.'"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# you can chain calls to .replace() since the return value is also a string\n",
"berkeley_string.replace(\"friends\", \"frisbees\").replace(\"flyering on Sproul\", \"having a picnic on the Glade\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Array Functions and Methods"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 3, 5, 7, 9])"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"example_array = make_array(1, 3, 5, 7, 9)\n",
"example_array"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `max()`\n",
"\n",
"```python\n",
"max(array)\n",
"```\n",
"\n",
"Returns the maximum value of an array."
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"max(example_array)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `min()`\n",
"\n",
"```python\n",
"min(array)\n",
"```\n",
"\n",
"Returns the minimum value of an array."
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"min(example_array)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `sum()`\n",
"\n",
"```python\n",
"sum(array)\n",
"```\n",
"\n",
"Returns the sum of values in an array."
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum(example_array)"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-7"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum(make_array(1, 2, 0, -10))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `abs()`\n",
"\n",
"```python\n",
"abs(num)\n",
"abs(array)\n",
"```\n",
"\n",
"Take the absolute value of number or each number in an array."
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"abs(-1)"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([3. , 1. , 5.2 , 0.25, 4.9 ])"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_arr = make_array(-3, -1, 5.2, 0.25, -4.9)\n",
"abs(new_arr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `round(num)`\n",
"\n",
"```python\n",
"round(num)\n",
"round(num, d)\n",
"np.round(array)\n",
"np.round(array, d)\n",
"```\n",
"\n",
"Round number or array of numbers to the nearest integer. If `d` is specified, rounds to `d` places _after_ the decimal. Use `np.round` to round arrays."
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(3.14159)"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.142"
]
},
"execution_count": 125,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"round(3.14159, 3)"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-3. , -1. , 5.2, 0.2, -4.9])"
]
},
"execution_count": 130,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.round(new_arr, 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `len()`\n",
"\n",
"```python\n",
"len(array)\n",
"```\n",
"\n",
"Returns the length of an array."
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 131,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(new_arr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `make_array()`\n",
"\n",
"```python\n",
"make_array(val1, val2, ...)\n",
"```\n",
"\n",
"Creates a new array with the values passed."
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([25, 16, 9, 4, 1])"
]
},
"execution_count": 132,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_array = make_array(25, 16, 9, 4, 1)\n",
"new_array"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.mean`\n",
"\n",
"```python\n",
"np.mean(array)\n",
"np.average(array)\n",
"```\n",
"\n",
"Returns the mean of the values in an array."
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"11.0"
]
},
"execution_count": 134,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.mean(new_array)"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"11.0"
]
},
"execution_count": 133,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.average(new_array)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.std()`\n",
"\n",
"```python\n",
"np.std(array)\n",
"```\n",
"\n",
"Returns the standard deviation of the values in an array."
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"8.648699324175862"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.std(new_array)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.diff()`\n",
"\n",
"```python\n",
"np.diff(array)\n",
"```\n",
"\n",
"Returns an array with the pairwise differences between elements in the input array. The output will have length `len(array) - 1` and will have elements $x_1 - x_0$, $x_2 - x_1$, $x_3 - x_2$, etc."
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([-9, -7, -5, -3])"
]
},
"execution_count": 135,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.diff(new_array)"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 2, 2])"
]
},
"execution_count": 136,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.diff(make_array(1, 3, 5, 7))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.sqrt()`\n",
"\n",
"```python\n",
"np.sqrt(num)\n",
"np.sqrt(array)\n",
"```\n",
"\n",
"Returns the square root of a number or an array of the square roots of each element in the input array."
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.0"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sqrt(4)"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([5., 4., 3., 2., 1.])"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sqrt(new_array)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.arange()`\n",
"\n",
"```python\n",
"np.arange(stop)\n",
"np.arange(start, stop)\n",
"np.arange(start, stop, step)\n",
"```\n",
"\n",
"Returns an array of integers from `start` to `stop` incrementing by `step`. If `start` is unspecified, it is assumed be 0. If `step` is unspecified, it is assumed to be 1. The upper bound is _exclusive_, meaning that `max(np.arange(10))` is 9."
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.arange(0, 11)"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4])"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.arange(5)"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 2.7, 5.4, 8.1, 10.8, 13.5, 16.2, 18.9, 21.6, 24.3, 27. ,\n",
" 29.7, 32.4, 35.1, 37.8, 40.5, 43.2, 45.9, 48.6, 51.3, 54. , 56.7,\n",
" 59.4, 62.1, 64.8, 67.5, 70.2, 72.9, 75.6, 78.3, 81. , 83.7, 86.4,\n",
" 89.1, 91.8, 94.5, 97.2, 99.9])"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.arange(0, 102, 2.7)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `array.item()`\n",
"\n",
"```python\n",
"array.item(num)\n",
"```\n",
"\n",
"Returns the item at index `num` in an array (remember Python indices start at 0!)."
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.arange(0, 102, 2).item(1)"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9"
]
},
"execution_count": 146,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_array.item(2)"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 147,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_array.item(len(new_array) - 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.random.choice`\n",
"\n",
"```python\n",
"np.random.choice(array)\n",
"np.random.choice(array, n, replace=True) \n",
"```\n",
"\n",
"Picks one or `n` of items from an array at random. By default, with replacement (set `replace=False` for without replacement)."
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 149,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.random.choice(new_array)"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 4, 4, 16])"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.random.choice(new_array, 3)"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 98, 22, 12, 56, 24, 54, 100, 52, 28, 88])"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.random.choice(np.arange(0, 102, 2), 10, replace=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.count_nonzero()`\n",
"\n",
"\n",
"Returns the number of nonzero elements in an array. Because `False` values are considered zeros (as integers), this can also give you the number of `True`s in an array of boolean valuea."
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 153,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"another_array = make_array(0, 1, 2, 0, 4, 0, 1, 0, 0)\n",
"np.count_nonzero(another_array)"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bools = make_array(True, False, True, False, False, True, False)\n",
"np.count_nonzero(bools)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `np.append()`\n",
"\n",
"```python\n",
"np.append(array, item)\n",
"```\n",
"\n",
"Returns a copy of the input array with `item` (must be the same type as the other entries in the array) appended to the end."
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([25, 16, 9, 4, 1])"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_array"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 25, 16, 9, 4, 1, 1000])"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.append(new_array, 1000)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `percentile()`\n",
"\n",
"```python\n",
"percentile(percent, array)\n",
"```\n",
"\n",
"Returns the value corresponding to the specified percentile of an array. `percent` should be in percentage form (i.e. `50` not `0.5`)."
]
},
{
"cell_type": "code",
"execution_count": 162,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 1, 1, 2, 2, 2, 3, 3, 3, 4])"
]
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"long_array = make_array(1, 1, 1, 2, 2, 2, 3, 3, 3, 4)\n",
"long_array"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 163,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"percentile(50, long_array)"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 164,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"percentile(90, long_array)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `Table.where` Predicates\n",
"\n",
"All of the predicates described below can be negated by preceding the name with `not_`. For example, we can find values _not_ equal to a specific value using `are.not_equal_to(value)`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.equal_to()`\n",
"\n",
"```python\n",
"tbl.where(column, are.equal_to(value))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is equal to `value`."
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 723352 519 4/13/2015 17:04 Howard at 2nd 63 4/13/2015 17:12 San Francisco Caltrain (Townsend at 4th) 70 629 Subscriber 94061 \n",
" \n",
" \n",
" 824979 519 6/27/2015 15:02 Japantown 9 6/27/2015 15:11 San Jose City Hall 10 660 Customer nil \n",
" \n",
" \n",
" 439946 519 9/5/2014 12:38 Yerba Buena Center of the Arts (3rd @ Howard) 68 9/5/2014 12:47 Civic Center BART (7th at Market) 72 452 Subscriber 94105 \n",
" \n",
" \n",
" 788261 519 6/1/2015 9:21 Powell at Post (Union Square) 71 6/1/2015 9:30 Steuart at Market 74 575 Subscriber 94108 \n",
" \n",
" \n",
" 560479 519 11/28/2014 14:20 South Van Ness at Market 66 11/28/2014 14:29 Powell at Post (Union Square) 71 609 Subscriber 94108 \n",
" \n",
" \n",
" 653797 519 2/23/2015 8:47 Market at 10th 67 2/23/2015 8:55 Yerba Buena Center of the Arts (3rd @ Howard) 68 546 Subscriber 94102 \n",
" \n",
" \n",
" 887134 519 8/12/2015 17:29 Civic Center BART (7th at Market) 72 8/12/2015 17:38 Mechanics Plaza (Market at Battery) 75 313 Subscriber 94103 \n",
" \n",
" \n",
" 482225 519 10/3/2014 16:41 Spear at Folsom 49 10/3/2014 16:50 Broadway St at Battery St 82 209 Subscriber 94133 \n",
" \n",
" \n",
" 681697 519 3/14/2015 10:19 Embarcadero at Sansome 60 3/14/2015 10:28 Harry Bridges Plaza (Ferry Building) 50 368 Customer 95120 \n",
" \n",
" \n",
" 912821 519 8/31/2015 17:00 Embarcadero at Folsom 51 8/31/2015 17:09 San Francisco Caltrain (Townsend at 4th) 70 354 Subscriber 94085 \n",
" \n",
" \n",
"
\n",
"... (115 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"723352 | 519 | 4/13/2015 17:04 | Howard at 2nd | 63 | 4/13/2015 17:12 | San Francisco Caltrain (Townsend at 4th) | 70 | 629 | Subscriber | 94061\n",
"824979 | 519 | 6/27/2015 15:02 | Japantown | 9 | 6/27/2015 15:11 | San Jose City Hall | 10 | 660 | Customer | nil\n",
"439946 | 519 | 9/5/2014 12:38 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 9/5/2014 12:47 | Civic Center BART (7th at Market) | 72 | 452 | Subscriber | 94105\n",
"788261 | 519 | 6/1/2015 9:21 | Powell at Post (Union Square) | 71 | 6/1/2015 9:30 | Steuart at Market | 74 | 575 | Subscriber | 94108\n",
"560479 | 519 | 11/28/2014 14:20 | South Van Ness at Market | 66 | 11/28/2014 14:29 | Powell at Post (Union Square) | 71 | 609 | Subscriber | 94108\n",
"653797 | 519 | 2/23/2015 8:47 | Market at 10th | 67 | 2/23/2015 8:55 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 546 | Subscriber | 94102\n",
"887134 | 519 | 8/12/2015 17:29 | Civic Center BART (7th at Market) | 72 | 8/12/2015 17:38 | Mechanics Plaza (Market at Battery) | 75 | 313 | Subscriber | 94103\n",
"482225 | 519 | 10/3/2014 16:41 | Spear at Folsom | 49 | 10/3/2014 16:50 | Broadway St at Battery St | 82 | 209 | Subscriber | 94133\n",
"681697 | 519 | 3/14/2015 10:19 | Embarcadero at Sansome | 60 | 3/14/2015 10:28 | Harry Bridges Plaza (Ferry Building) | 50 | 368 | Customer | 95120\n",
"912821 | 519 | 8/31/2015 17:00 | Embarcadero at Folsom | 51 | 8/31/2015 17:09 | San Francisco Caltrain (Townsend at 4th) | 70 | 354 | Subscriber | 94085\n",
"... (115 rows omitted)"
]
},
"execution_count": 166,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.equal_to(519))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.above()`\n",
"\n",
"```python\n",
"tbl.where(column, are.above(value))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is strictly greater than `value`."
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 710070 11460 4/2/2015 18:13 Powell Street BART 39 4/2/2015 21:24 Powell Street BART 39 375 Subscriber 94107 \n",
" \n",
" \n",
" 589964 15097 1/3/2015 15:22 Embarcadero at Sansome 60 1/3/2015 19:33 Golden Gate at Polk 59 599 Customer 29225 \n",
" \n",
" \n",
" 831509 1057 7/2/2015 10:14 2nd at Folsom 62 7/2/2015 10:31 South Van Ness at Market 66 631 Subscriber 94114 \n",
" \n",
" \n",
" 442750 6084 9/8/2014 13:32 Embarcadero at Sansome 60 9/8/2014 15:14 Embarcadero at Sansome 60 368 Customer 474454 \n",
" \n",
" \n",
" 608714 19799 1/18/2015 10:07 University and Emerson 35 1/18/2015 15:37 San Francisco Caltrain (Townsend at 4th) 70 686 Customer nil \n",
" \n",
" \n",
" 711961 1026 4/4/2015 7:07 Davis at Jackson 42 4/4/2015 7:24 Harry Bridges Plaza (Ferry Building) 50 189 Subscriber 94111 \n",
" \n",
" \n",
" 833071 2314 7/4/2015 11:13 Market at 4th 76 7/4/2015 11:52 Washington at Kearny 46 602 Customer 94806 \n",
" \n",
" \n",
" 570731 1218 12/8/2014 23:51 MLK Library 11 12/9/2014 0:12 St James Park 13 299 Customer 95033 \n",
" \n",
" \n",
" 853698 1048 7/20/2015 10:53 Broadway St at Battery St 82 7/20/2015 11:10 Embarcadero at Sansome 60 636 Customer 91436 \n",
" \n",
" \n",
" 787510 3670 5/31/2015 10:47 Mountain View City Hall 27 5/31/2015 11:48 Castro Street and El Camino Real 32 713 Customer 94041 \n",
" \n",
" \n",
"
\n",
"... (11576 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"710070 | 11460 | 4/2/2015 18:13 | Powell Street BART | 39 | 4/2/2015 21:24 | Powell Street BART | 39 | 375 | Subscriber | 94107\n",
"589964 | 15097 | 1/3/2015 15:22 | Embarcadero at Sansome | 60 | 1/3/2015 19:33 | Golden Gate at Polk | 59 | 599 | Customer | 29225\n",
"831509 | 1057 | 7/2/2015 10:14 | 2nd at Folsom | 62 | 7/2/2015 10:31 | South Van Ness at Market | 66 | 631 | Subscriber | 94114\n",
"442750 | 6084 | 9/8/2014 13:32 | Embarcadero at Sansome | 60 | 9/8/2014 15:14 | Embarcadero at Sansome | 60 | 368 | Customer | 474454\n",
"608714 | 19799 | 1/18/2015 10:07 | University and Emerson | 35 | 1/18/2015 15:37 | San Francisco Caltrain (Townsend at 4th) | 70 | 686 | Customer | nil\n",
"711961 | 1026 | 4/4/2015 7:07 | Davis at Jackson | 42 | 4/4/2015 7:24 | Harry Bridges Plaza (Ferry Building) | 50 | 189 | Subscriber | 94111\n",
"833071 | 2314 | 7/4/2015 11:13 | Market at 4th | 76 | 7/4/2015 11:52 | Washington at Kearny | 46 | 602 | Customer | 94806\n",
"570731 | 1218 | 12/8/2014 23:51 | MLK Library | 11 | 12/9/2014 0:12 | St James Park | 13 | 299 | Customer | 95033\n",
"853698 | 1048 | 7/20/2015 10:53 | Broadway St at Battery St | 82 | 7/20/2015 11:10 | Embarcadero at Sansome | 60 | 636 | Customer | 91436\n",
"787510 | 3670 | 5/31/2015 10:47 | Mountain View City Hall | 27 | 5/31/2015 11:48 | Castro Street and El Camino Real | 32 | 713 | Customer | 94041\n",
"... (11576 rows omitted)"
]
},
"execution_count": 167,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.above(1000))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.above_or_equal_to()`\n",
"\n",
"```python\n",
"tbl.where(column, are.above_or_equal_to(value))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is greater than or equal to `value`."
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 710070 11460 4/2/2015 18:13 Powell Street BART 39 4/2/2015 21:24 Powell Street BART 39 375 Subscriber 94107 \n",
" \n",
" \n",
" 589964 15097 1/3/2015 15:22 Embarcadero at Sansome 60 1/3/2015 19:33 Golden Gate at Polk 59 599 Customer 29225 \n",
" \n",
" \n",
" 831509 1057 7/2/2015 10:14 2nd at Folsom 62 7/2/2015 10:31 South Van Ness at Market 66 631 Subscriber 94114 \n",
" \n",
" \n",
" 442750 6084 9/8/2014 13:32 Embarcadero at Sansome 60 9/8/2014 15:14 Embarcadero at Sansome 60 368 Customer 474454 \n",
" \n",
" \n",
" 608714 19799 1/18/2015 10:07 University and Emerson 35 1/18/2015 15:37 San Francisco Caltrain (Townsend at 4th) 70 686 Customer nil \n",
" \n",
" \n",
" 711961 1026 4/4/2015 7:07 Davis at Jackson 42 4/4/2015 7:24 Harry Bridges Plaza (Ferry Building) 50 189 Subscriber 94111 \n",
" \n",
" \n",
" 833071 2314 7/4/2015 11:13 Market at 4th 76 7/4/2015 11:52 Washington at Kearny 46 602 Customer 94806 \n",
" \n",
" \n",
" 570731 1218 12/8/2014 23:51 MLK Library 11 12/9/2014 0:12 St James Park 13 299 Customer 95033 \n",
" \n",
" \n",
" 853698 1048 7/20/2015 10:53 Broadway St at Battery St 82 7/20/2015 11:10 Embarcadero at Sansome 60 636 Customer 91436 \n",
" \n",
" \n",
" 787510 3670 5/31/2015 10:47 Mountain View City Hall 27 5/31/2015 11:48 Castro Street and El Camino Real 32 713 Customer 94041 \n",
" \n",
" \n",
"
\n",
"... (11597 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"710070 | 11460 | 4/2/2015 18:13 | Powell Street BART | 39 | 4/2/2015 21:24 | Powell Street BART | 39 | 375 | Subscriber | 94107\n",
"589964 | 15097 | 1/3/2015 15:22 | Embarcadero at Sansome | 60 | 1/3/2015 19:33 | Golden Gate at Polk | 59 | 599 | Customer | 29225\n",
"831509 | 1057 | 7/2/2015 10:14 | 2nd at Folsom | 62 | 7/2/2015 10:31 | South Van Ness at Market | 66 | 631 | Subscriber | 94114\n",
"442750 | 6084 | 9/8/2014 13:32 | Embarcadero at Sansome | 60 | 9/8/2014 15:14 | Embarcadero at Sansome | 60 | 368 | Customer | 474454\n",
"608714 | 19799 | 1/18/2015 10:07 | University and Emerson | 35 | 1/18/2015 15:37 | San Francisco Caltrain (Townsend at 4th) | 70 | 686 | Customer | nil\n",
"711961 | 1026 | 4/4/2015 7:07 | Davis at Jackson | 42 | 4/4/2015 7:24 | Harry Bridges Plaza (Ferry Building) | 50 | 189 | Subscriber | 94111\n",
"833071 | 2314 | 7/4/2015 11:13 | Market at 4th | 76 | 7/4/2015 11:52 | Washington at Kearny | 46 | 602 | Customer | 94806\n",
"570731 | 1218 | 12/8/2014 23:51 | MLK Library | 11 | 12/9/2014 0:12 | St James Park | 13 | 299 | Customer | 95033\n",
"853698 | 1048 | 7/20/2015 10:53 | Broadway St at Battery St | 82 | 7/20/2015 11:10 | Embarcadero at Sansome | 60 | 636 | Customer | 91436\n",
"787510 | 3670 | 5/31/2015 10:47 | Mountain View City Hall | 27 | 5/31/2015 11:48 | Castro Street and El Camino Real | 32 | 713 | Customer | 94041\n",
"... (11597 rows omitted)"
]
},
"execution_count": 168,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.above_or_equal_to(1000))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.below()`\n",
"\n",
"```python\n",
"tbl.where(column, are.below(value))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is strictly less than `value`."
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 482797 65 10/4/2014 7:50 San Francisco Caltrain (Townsend at 4th) 70 10/4/2014 7:52 San Francisco Caltrain (Townsend at 4th) 70 430 Subscriber 95112 \n",
" \n",
" \n",
" 483052 81 10/4/2014 13:52 Harry Bridges Plaza (Ferry Building) 50 10/4/2014 13:53 Harry Bridges Plaza (Ferry Building) 50 306 Customer nan \n",
" \n",
" \n",
" 569620 84 12/8/2014 10:09 Civic Center BART (7th at Market) 72 12/8/2014 10:10 Civic Center BART (7th at Market) 72 326 Subscriber 94111 \n",
" \n",
" \n",
" 502332 79 10/16/2014 17:26 Beale at Market 56 10/16/2014 17:27 Temporary Transbay Terminal (Howard at Beale) 55 613 Subscriber 94602 \n",
" \n",
" \n",
" 604012 76 1/14/2015 15:18 Davis at Jackson 42 1/14/2015 15:19 Broadway St at Battery St 82 601 Subscriber 94107 \n",
" \n",
" \n",
" 704918 70 3/30/2015 22:51 Broadway St at Battery St 82 3/30/2015 22:52 Broadway St at Battery St 82 394 Subscriber 94107 \n",
" \n",
" \n",
" 513458 83 10/24/2014 8:50 2nd at Folsom 62 10/24/2014 8:51 Howard at 2nd 63 569 Subscriber 94107 \n",
" \n",
" \n",
" 696725 94 3/25/2015 8:47 Post at Kearny 47 3/25/2015 8:49 Washington at Kearny 46 516 Subscriber 94109 \n",
" \n",
" \n",
" 829817 86 7/1/2015 9:27 Market at Sansome 77 7/1/2015 9:28 2nd at South Park 64 292 Subscriber 94538 \n",
" \n",
" \n",
" 745895 73 4/29/2015 13:05 Yerba Buena Center of the Arts (3rd @ Howard) 68 4/29/2015 13:06 Yerba Buena Center of the Arts (3rd @ Howard) 68 380 Subscriber 94947 \n",
" \n",
" \n",
"
\n",
"... (403 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"482797 | 65 | 10/4/2014 7:50 | San Francisco Caltrain (Townsend at 4th) | 70 | 10/4/2014 7:52 | San Francisco Caltrain (Townsend at 4th) | 70 | 430 | Subscriber | 95112\n",
"483052 | 81 | 10/4/2014 13:52 | Harry Bridges Plaza (Ferry Building) | 50 | 10/4/2014 13:53 | Harry Bridges Plaza (Ferry Building) | 50 | 306 | Customer | nan\n",
"569620 | 84 | 12/8/2014 10:09 | Civic Center BART (7th at Market) | 72 | 12/8/2014 10:10 | Civic Center BART (7th at Market) | 72 | 326 | Subscriber | 94111\n",
"502332 | 79 | 10/16/2014 17:26 | Beale at Market | 56 | 10/16/2014 17:27 | Temporary Transbay Terminal (Howard at Beale) | 55 | 613 | Subscriber | 94602\n",
"604012 | 76 | 1/14/2015 15:18 | Davis at Jackson | 42 | 1/14/2015 15:19 | Broadway St at Battery St | 82 | 601 | Subscriber | 94107\n",
"704918 | 70 | 3/30/2015 22:51 | Broadway St at Battery St | 82 | 3/30/2015 22:52 | Broadway St at Battery St | 82 | 394 | Subscriber | 94107\n",
"513458 | 83 | 10/24/2014 8:50 | 2nd at Folsom | 62 | 10/24/2014 8:51 | Howard at 2nd | 63 | 569 | Subscriber | 94107\n",
"696725 | 94 | 3/25/2015 8:47 | Post at Kearny | 47 | 3/25/2015 8:49 | Washington at Kearny | 46 | 516 | Subscriber | 94109\n",
"829817 | 86 | 7/1/2015 9:27 | Market at Sansome | 77 | 7/1/2015 9:28 | 2nd at South Park | 64 | 292 | Subscriber | 94538\n",
"745895 | 73 | 4/29/2015 13:05 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 4/29/2015 13:06 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 380 | Subscriber | 94947\n",
"... (403 rows omitted)"
]
},
"execution_count": 170,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.below(100))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.below_or_equal_to()`\n",
"\n",
"```python\n",
"tbl.where(column, are.below_or_equal_to(value))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is less than or equal to `value`."
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 482797 65 10/4/2014 7:50 San Francisco Caltrain (Townsend at 4th) 70 10/4/2014 7:52 San Francisco Caltrain (Townsend at 4th) 70 430 Subscriber 95112 \n",
" \n",
" \n",
" 483052 81 10/4/2014 13:52 Harry Bridges Plaza (Ferry Building) 50 10/4/2014 13:53 Harry Bridges Plaza (Ferry Building) 50 306 Customer nan \n",
" \n",
" \n",
" 569620 84 12/8/2014 10:09 Civic Center BART (7th at Market) 72 12/8/2014 10:10 Civic Center BART (7th at Market) 72 326 Subscriber 94111 \n",
" \n",
" \n",
" 502332 79 10/16/2014 17:26 Beale at Market 56 10/16/2014 17:27 Temporary Transbay Terminal (Howard at Beale) 55 613 Subscriber 94602 \n",
" \n",
" \n",
" 604012 76 1/14/2015 15:18 Davis at Jackson 42 1/14/2015 15:19 Broadway St at Battery St 82 601 Subscriber 94107 \n",
" \n",
" \n",
" 704918 70 3/30/2015 22:51 Broadway St at Battery St 82 3/30/2015 22:52 Broadway St at Battery St 82 394 Subscriber 94107 \n",
" \n",
" \n",
" 513458 83 10/24/2014 8:50 2nd at Folsom 62 10/24/2014 8:51 Howard at 2nd 63 569 Subscriber 94107 \n",
" \n",
" \n",
" 696725 94 3/25/2015 8:47 Post at Kearny 47 3/25/2015 8:49 Washington at Kearny 46 516 Subscriber 94109 \n",
" \n",
" \n",
" 808199 100 6/15/2015 20:57 Post at Kearny 47 6/15/2015 20:58 2nd at South Park 64 537 Subscriber 94107 \n",
" \n",
" \n",
" 829817 86 7/1/2015 9:27 Market at Sansome 77 7/1/2015 9:28 2nd at South Park 64 292 Subscriber 94538 \n",
" \n",
" \n",
"
\n",
"... (430 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"482797 | 65 | 10/4/2014 7:50 | San Francisco Caltrain (Townsend at 4th) | 70 | 10/4/2014 7:52 | San Francisco Caltrain (Townsend at 4th) | 70 | 430 | Subscriber | 95112\n",
"483052 | 81 | 10/4/2014 13:52 | Harry Bridges Plaza (Ferry Building) | 50 | 10/4/2014 13:53 | Harry Bridges Plaza (Ferry Building) | 50 | 306 | Customer | nan\n",
"569620 | 84 | 12/8/2014 10:09 | Civic Center BART (7th at Market) | 72 | 12/8/2014 10:10 | Civic Center BART (7th at Market) | 72 | 326 | Subscriber | 94111\n",
"502332 | 79 | 10/16/2014 17:26 | Beale at Market | 56 | 10/16/2014 17:27 | Temporary Transbay Terminal (Howard at Beale) | 55 | 613 | Subscriber | 94602\n",
"604012 | 76 | 1/14/2015 15:18 | Davis at Jackson | 42 | 1/14/2015 15:19 | Broadway St at Battery St | 82 | 601 | Subscriber | 94107\n",
"704918 | 70 | 3/30/2015 22:51 | Broadway St at Battery St | 82 | 3/30/2015 22:52 | Broadway St at Battery St | 82 | 394 | Subscriber | 94107\n",
"513458 | 83 | 10/24/2014 8:50 | 2nd at Folsom | 62 | 10/24/2014 8:51 | Howard at 2nd | 63 | 569 | Subscriber | 94107\n",
"696725 | 94 | 3/25/2015 8:47 | Post at Kearny | 47 | 3/25/2015 8:49 | Washington at Kearny | 46 | 516 | Subscriber | 94109\n",
"808199 | 100 | 6/15/2015 20:57 | Post at Kearny | 47 | 6/15/2015 20:58 | 2nd at South Park | 64 | 537 | Subscriber | 94107\n",
"829817 | 86 | 7/1/2015 9:27 | Market at Sansome | 77 | 7/1/2015 9:28 | 2nd at South Park | 64 | 292 | Subscriber | 94538\n",
"... (430 rows omitted)"
]
},
"execution_count": 171,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.below_or_equal_to(100))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.between()`\n",
"\n",
"```python\n",
"tbl.where(column, are.between(x, y))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is greather than or equal to `x` and less than `y` (i.e. in the interval $[x, y)$)."
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 437830 151 9/4/2014 9:13 Grant Avenue at Columbus Avenue 73 9/4/2014 9:15 Commercial at Montgomery 45 306 Subscriber 94104 \n",
" \n",
" \n",
" 436255 195 9/3/2014 11:53 2nd at Folsom 62 9/3/2014 11:57 Spear at Folsom 49 403 Subscriber 94107 \n",
" \n",
" \n",
" 585884 151 12/26/2014 13:34 Broadway St at Battery St 82 12/26/2014 13:37 Harry Bridges Plaza (Ferry Building) 50 576 Subscriber 94107 \n",
" \n",
" \n",
" 548322 191 11/17/2014 20:10 Yerba Buena Center of the Arts (3rd @ Howard) 68 11/17/2014 20:13 Market at Sansome 77 29 Subscriber 94705 \n",
" \n",
" \n",
" 594999 185 1/7/2015 17:53 San Antonio Caltrain Station 29 1/7/2015 17:56 San Antonio Shopping Center 31 176 Subscriber 94040 \n",
" \n",
" \n",
" 468534 194 9/24/2014 19:08 Mechanics Plaza (Market at Battery) 75 9/24/2014 19:11 Harry Bridges Plaza (Ferry Building) 50 443 Subscriber 94107 \n",
" \n",
" \n",
" 873710 169 8/3/2015 17:20 Broadway St at Battery St 82 8/3/2015 17:23 Embarcadero at Sansome 60 532 Subscriber 94114 \n",
" \n",
" \n",
" 853087 168 7/20/2015 7:27 Temporary Transbay Terminal (Howard at Beale) 55 7/20/2015 7:30 2nd at Folsom 62 418 Subscriber 94602 \n",
" \n",
" \n",
" 863019 162 7/27/2015 8:31 Temporary Transbay Terminal (Howard at Beale) 55 7/27/2015 8:34 Mechanics Plaza (Market at Battery) 75 504 Subscriber 94111 \n",
" \n",
" \n",
" 883134 173 8/10/2015 15:11 Embarcadero at Folsom 51 8/10/2015 15:14 Beale at Market 56 363 Subscriber 94117 \n",
" \n",
" \n",
"
\n",
"... (5083 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"437830 | 151 | 9/4/2014 9:13 | Grant Avenue at Columbus Avenue | 73 | 9/4/2014 9:15 | Commercial at Montgomery | 45 | 306 | Subscriber | 94104\n",
"436255 | 195 | 9/3/2014 11:53 | 2nd at Folsom | 62 | 9/3/2014 11:57 | Spear at Folsom | 49 | 403 | Subscriber | 94107\n",
"585884 | 151 | 12/26/2014 13:34 | Broadway St at Battery St | 82 | 12/26/2014 13:37 | Harry Bridges Plaza (Ferry Building) | 50 | 576 | Subscriber | 94107\n",
"548322 | 191 | 11/17/2014 20:10 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 11/17/2014 20:13 | Market at Sansome | 77 | 29 | Subscriber | 94705\n",
"594999 | 185 | 1/7/2015 17:53 | San Antonio Caltrain Station | 29 | 1/7/2015 17:56 | San Antonio Shopping Center | 31 | 176 | Subscriber | 94040\n",
"468534 | 194 | 9/24/2014 19:08 | Mechanics Plaza (Market at Battery) | 75 | 9/24/2014 19:11 | Harry Bridges Plaza (Ferry Building) | 50 | 443 | Subscriber | 94107\n",
"873710 | 169 | 8/3/2015 17:20 | Broadway St at Battery St | 82 | 8/3/2015 17:23 | Embarcadero at Sansome | 60 | 532 | Subscriber | 94114\n",
"853087 | 168 | 7/20/2015 7:27 | Temporary Transbay Terminal (Howard at Beale) | 55 | 7/20/2015 7:30 | 2nd at Folsom | 62 | 418 | Subscriber | 94602\n",
"863019 | 162 | 7/27/2015 8:31 | Temporary Transbay Terminal (Howard at Beale) | 55 | 7/27/2015 8:34 | Mechanics Plaza (Market at Battery) | 75 | 504 | Subscriber | 94111\n",
"883134 | 173 | 8/10/2015 15:11 | Embarcadero at Folsom | 51 | 8/10/2015 15:14 | Beale at Market | 56 | 363 | Subscriber | 94117\n",
"... (5083 rows omitted)"
]
},
"execution_count": 172,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.between(100, 200))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.between_or_equal_to()`\n",
"\n",
"```python\n",
"tbl.where(column, are.between_or_equal_to(x, y))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is between or equal to `x` and `y` (i.e. in the interval $[x, y]$)."
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 437830 151 9/4/2014 9:13 Grant Avenue at Columbus Avenue 73 9/4/2014 9:15 Commercial at Montgomery 45 306 Subscriber 94104 \n",
" \n",
" \n",
" 436255 195 9/3/2014 11:53 2nd at Folsom 62 9/3/2014 11:57 Spear at Folsom 49 403 Subscriber 94107 \n",
" \n",
" \n",
" 585884 151 12/26/2014 13:34 Broadway St at Battery St 82 12/26/2014 13:37 Harry Bridges Plaza (Ferry Building) 50 576 Subscriber 94107 \n",
" \n",
" \n",
" 548322 191 11/17/2014 20:10 Yerba Buena Center of the Arts (3rd @ Howard) 68 11/17/2014 20:13 Market at Sansome 77 29 Subscriber 94705 \n",
" \n",
" \n",
" 903735 200 8/25/2015 7:59 Temporary Transbay Terminal (Howard at Beale) 55 8/25/2015 8:02 Steuart at Market 74 453 Subscriber 94501 \n",
" \n",
" \n",
" 594999 185 1/7/2015 17:53 San Antonio Caltrain Station 29 1/7/2015 17:56 San Antonio Shopping Center 31 176 Subscriber 94040 \n",
" \n",
" \n",
" 468534 194 9/24/2014 19:08 Mechanics Plaza (Market at Battery) 75 9/24/2014 19:11 Harry Bridges Plaza (Ferry Building) 50 443 Subscriber 94107 \n",
" \n",
" \n",
" 873710 169 8/3/2015 17:20 Broadway St at Battery St 82 8/3/2015 17:23 Embarcadero at Sansome 60 532 Subscriber 94114 \n",
" \n",
" \n",
" 853087 168 7/20/2015 7:27 Temporary Transbay Terminal (Howard at Beale) 55 7/20/2015 7:30 2nd at Folsom 62 418 Subscriber 94602 \n",
" \n",
" \n",
" 863019 162 7/27/2015 8:31 Temporary Transbay Terminal (Howard at Beale) 55 7/27/2015 8:34 Mechanics Plaza (Market at Battery) 75 504 Subscriber 94111 \n",
" \n",
" \n",
"
\n",
"... (5180 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"437830 | 151 | 9/4/2014 9:13 | Grant Avenue at Columbus Avenue | 73 | 9/4/2014 9:15 | Commercial at Montgomery | 45 | 306 | Subscriber | 94104\n",
"436255 | 195 | 9/3/2014 11:53 | 2nd at Folsom | 62 | 9/3/2014 11:57 | Spear at Folsom | 49 | 403 | Subscriber | 94107\n",
"585884 | 151 | 12/26/2014 13:34 | Broadway St at Battery St | 82 | 12/26/2014 13:37 | Harry Bridges Plaza (Ferry Building) | 50 | 576 | Subscriber | 94107\n",
"548322 | 191 | 11/17/2014 20:10 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 11/17/2014 20:13 | Market at Sansome | 77 | 29 | Subscriber | 94705\n",
"903735 | 200 | 8/25/2015 7:59 | Temporary Transbay Terminal (Howard at Beale) | 55 | 8/25/2015 8:02 | Steuart at Market | 74 | 453 | Subscriber | 94501\n",
"594999 | 185 | 1/7/2015 17:53 | San Antonio Caltrain Station | 29 | 1/7/2015 17:56 | San Antonio Shopping Center | 31 | 176 | Subscriber | 94040\n",
"468534 | 194 | 9/24/2014 19:08 | Mechanics Plaza (Market at Battery) | 75 | 9/24/2014 19:11 | Harry Bridges Plaza (Ferry Building) | 50 | 443 | Subscriber | 94107\n",
"873710 | 169 | 8/3/2015 17:20 | Broadway St at Battery St | 82 | 8/3/2015 17:23 | Embarcadero at Sansome | 60 | 532 | Subscriber | 94114\n",
"853087 | 168 | 7/20/2015 7:27 | Temporary Transbay Terminal (Howard at Beale) | 55 | 7/20/2015 7:30 | 2nd at Folsom | 62 | 418 | Subscriber | 94602\n",
"863019 | 162 | 7/27/2015 8:31 | Temporary Transbay Terminal (Howard at Beale) | 55 | 7/27/2015 8:34 | Mechanics Plaza (Market at Battery) | 75 | 504 | Subscriber | 94111\n",
"... (5180 rows omitted)"
]
},
"execution_count": 173,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.between_or_equal_to(100, 200))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.contained_in()`\n",
"\n",
"```python\n",
"tbl.where(column, are.contained_in(string_or_array))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is a substring of `string_or_array` if it is a string or an element of `string_or_array` if it is an array"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 436255 195 9/3/2014 11:53 2nd at Folsom 62 9/3/2014 11:57 Spear at Folsom 49 403 Subscriber 94107 \n",
" \n",
" \n",
" 831509 1057 7/2/2015 10:14 2nd at Folsom 62 7/2/2015 10:31 South Van Ness at Market 66 631 Subscriber 94114 \n",
" \n",
" \n",
" 877160 306 8/5/2015 16:33 2nd at Folsom 62 8/5/2015 16:39 Beale at Market 56 527 Subscriber 94602 \n",
" \n",
" \n",
" 768619 840 5/15/2015 11:35 2nd at Folsom 62 5/15/2015 11:49 Market at 10th 67 604 Subscriber 94903 \n",
" \n",
" \n",
" 594999 185 1/7/2015 17:53 San Antonio Caltrain Station 29 1/7/2015 17:56 San Antonio Shopping Center 31 176 Subscriber 94040 \n",
" \n",
" \n",
" 701211 252 3/27/2015 16:26 2nd at Folsom 62 3/27/2015 16:30 Spear at Folsom 49 405 Subscriber 94105 \n",
" \n",
" \n",
" 487432 561 10/7/2014 17:48 2nd at Folsom 62 10/7/2014 17:58 Commercial at Montgomery 45 342 Subscriber 94107 \n",
" \n",
" \n",
" 610970 808 1/20/2015 13:28 2nd at Folsom 62 1/20/2015 13:42 Harry Bridges Plaza (Ferry Building) 50 310 Subscriber 94025 \n",
" \n",
" \n",
" 753668 196 5/5/2015 11:48 2nd at Folsom 62 5/5/2015 11:52 Temporary Transbay Terminal (Howard at Beale) 55 533 Subscriber 94973 \n",
" \n",
" \n",
" 466551 222 9/23/2014 18:12 2nd at Folsom 62 9/23/2014 18:16 2nd at Townsend 61 620 Subscriber 94107 \n",
" \n",
" \n",
"
\n",
"... (2578 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"436255 | 195 | 9/3/2014 11:53 | 2nd at Folsom | 62 | 9/3/2014 11:57 | Spear at Folsom | 49 | 403 | Subscriber | 94107\n",
"831509 | 1057 | 7/2/2015 10:14 | 2nd at Folsom | 62 | 7/2/2015 10:31 | South Van Ness at Market | 66 | 631 | Subscriber | 94114\n",
"877160 | 306 | 8/5/2015 16:33 | 2nd at Folsom | 62 | 8/5/2015 16:39 | Beale at Market | 56 | 527 | Subscriber | 94602\n",
"768619 | 840 | 5/15/2015 11:35 | 2nd at Folsom | 62 | 5/15/2015 11:49 | Market at 10th | 67 | 604 | Subscriber | 94903\n",
"594999 | 185 | 1/7/2015 17:53 | San Antonio Caltrain Station | 29 | 1/7/2015 17:56 | San Antonio Shopping Center | 31 | 176 | Subscriber | 94040\n",
"701211 | 252 | 3/27/2015 16:26 | 2nd at Folsom | 62 | 3/27/2015 16:30 | Spear at Folsom | 49 | 405 | Subscriber | 94105\n",
"487432 | 561 | 10/7/2014 17:48 | 2nd at Folsom | 62 | 10/7/2014 17:58 | Commercial at Montgomery | 45 | 342 | Subscriber | 94107\n",
"610970 | 808 | 1/20/2015 13:28 | 2nd at Folsom | 62 | 1/20/2015 13:42 | Harry Bridges Plaza (Ferry Building) | 50 | 310 | Subscriber | 94025\n",
"753668 | 196 | 5/5/2015 11:48 | 2nd at Folsom | 62 | 5/5/2015 11:52 | Temporary Transbay Terminal (Howard at Beale) | 55 | 533 | Subscriber | 94973\n",
"466551 | 222 | 9/23/2014 18:12 | 2nd at Folsom | 62 | 9/23/2014 18:16 | 2nd at Townsend | 61 | 620 | Subscriber | 94107\n",
"... (2578 rows omitted)"
]
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Start Station\", are.contained_in(\"2nd at Folsom San Antonio Caltrain Station\"))"
]
},
{
"cell_type": "code",
"execution_count": 178,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 436255 195 9/3/2014 11:53 2nd at Folsom 62 9/3/2014 11:57 Spear at Folsom 49 403 Subscriber 94107 \n",
" \n",
" \n",
" 831509 1057 7/2/2015 10:14 2nd at Folsom 62 7/2/2015 10:31 South Van Ness at Market 66 631 Subscriber 94114 \n",
" \n",
" \n",
" 877160 306 8/5/2015 16:33 2nd at Folsom 62 8/5/2015 16:39 Beale at Market 56 527 Subscriber 94602 \n",
" \n",
" \n",
" 768619 840 5/15/2015 11:35 2nd at Folsom 62 5/15/2015 11:49 Market at 10th 67 604 Subscriber 94903 \n",
" \n",
" \n",
" 594999 185 1/7/2015 17:53 San Antonio Caltrain Station 29 1/7/2015 17:56 San Antonio Shopping Center 31 176 Subscriber 94040 \n",
" \n",
" \n",
" 701211 252 3/27/2015 16:26 2nd at Folsom 62 3/27/2015 16:30 Spear at Folsom 49 405 Subscriber 94105 \n",
" \n",
" \n",
" 487432 561 10/7/2014 17:48 2nd at Folsom 62 10/7/2014 17:58 Commercial at Montgomery 45 342 Subscriber 94107 \n",
" \n",
" \n",
" 610970 808 1/20/2015 13:28 2nd at Folsom 62 1/20/2015 13:42 Harry Bridges Plaza (Ferry Building) 50 310 Subscriber 94025 \n",
" \n",
" \n",
" 753668 196 5/5/2015 11:48 2nd at Folsom 62 5/5/2015 11:52 Temporary Transbay Terminal (Howard at Beale) 55 533 Subscriber 94973 \n",
" \n",
" \n",
" 466551 222 9/23/2014 18:12 2nd at Folsom 62 9/23/2014 18:16 2nd at Townsend 61 620 Subscriber 94107 \n",
" \n",
" \n",
"
\n",
"... (2578 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"436255 | 195 | 9/3/2014 11:53 | 2nd at Folsom | 62 | 9/3/2014 11:57 | Spear at Folsom | 49 | 403 | Subscriber | 94107\n",
"831509 | 1057 | 7/2/2015 10:14 | 2nd at Folsom | 62 | 7/2/2015 10:31 | South Van Ness at Market | 66 | 631 | Subscriber | 94114\n",
"877160 | 306 | 8/5/2015 16:33 | 2nd at Folsom | 62 | 8/5/2015 16:39 | Beale at Market | 56 | 527 | Subscriber | 94602\n",
"768619 | 840 | 5/15/2015 11:35 | 2nd at Folsom | 62 | 5/15/2015 11:49 | Market at 10th | 67 | 604 | Subscriber | 94903\n",
"594999 | 185 | 1/7/2015 17:53 | San Antonio Caltrain Station | 29 | 1/7/2015 17:56 | San Antonio Shopping Center | 31 | 176 | Subscriber | 94040\n",
"701211 | 252 | 3/27/2015 16:26 | 2nd at Folsom | 62 | 3/27/2015 16:30 | Spear at Folsom | 49 | 405 | Subscriber | 94105\n",
"487432 | 561 | 10/7/2014 17:48 | 2nd at Folsom | 62 | 10/7/2014 17:58 | Commercial at Montgomery | 45 | 342 | Subscriber | 94107\n",
"610970 | 808 | 1/20/2015 13:28 | 2nd at Folsom | 62 | 1/20/2015 13:42 | Harry Bridges Plaza (Ferry Building) | 50 | 310 | Subscriber | 94025\n",
"753668 | 196 | 5/5/2015 11:48 | 2nd at Folsom | 62 | 5/5/2015 11:52 | Temporary Transbay Terminal (Howard at Beale) | 55 | 533 | Subscriber | 94973\n",
"466551 | 222 | 9/23/2014 18:12 | 2nd at Folsom | 62 | 9/23/2014 18:16 | 2nd at Townsend | 61 | 620 | Subscriber | 94107\n",
"... (2578 rows omitted)"
]
},
"execution_count": 178,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Start Terminal\", are.contained_in(make_array(62, 29)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.containing()`\n",
"\n",
"```python\n",
"tbl.where(column, are.containing(value))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` contains the substring `value`."
]
},
{
"cell_type": "code",
"execution_count": 180,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 876419 413 8/5/2015 8:29 Civic Center BART (7th at Market) 72 8/5/2015 8:36 Townsend at 7th 65 269 Subscriber 94518 \n",
" \n",
" \n",
" 459672 408 9/18/2014 17:11 Harry Bridges Plaza (Ferry Building) 50 9/18/2014 17:17 Embarcadero at Sansome 60 429 Subscriber 94111 \n",
" \n",
" \n",
" 903647 723 8/25/2015 7:26 San Francisco Caltrain 2 (330 Townsend) 69 8/25/2015 7:38 Market at 10th 67 631 Subscriber 94025 \n",
" \n",
" \n",
" 452829 409 9/15/2014 8:29 Steuart at Market 74 9/15/2014 8:36 Market at 4th 76 428 Subscriber 94925 \n",
" \n",
" \n",
" 491023 224 10/9/2014 16:13 Santa Clara at Almaden 4 10/9/2014 16:17 San Jose Diridon Caltrain Station 2 144 Subscriber 94117 \n",
" \n",
" \n",
" 723352 519 4/13/2015 17:04 Howard at 2nd 63 4/13/2015 17:12 San Francisco Caltrain (Townsend at 4th) 70 629 Subscriber 94061 \n",
" \n",
" \n",
" 524499 431 10/31/2014 16:36 Townsend at 7th 65 10/31/2014 16:43 Civic Center BART (7th at Market) 72 630 Subscriber 94706 \n",
" \n",
" \n",
" 518524 389 10/28/2014 8:48 Market at Sansome 77 10/28/2014 8:54 2nd at South Park 64 458 Subscriber 94610 \n",
" \n",
" \n",
" 793149 616 6/4/2015 5:26 Embarcadero at Bryant 54 6/4/2015 5:36 Embarcadero at Sansome 60 289 Subscriber 94105 \n",
" \n",
" \n",
" 681771 895 3/14/2015 11:46 Market at 10th 67 3/14/2015 12:01 Market at 4th 76 416 Subscriber 94107 \n",
" \n",
" \n",
"
\n",
"... (78805 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"876419 | 413 | 8/5/2015 8:29 | Civic Center BART (7th at Market) | 72 | 8/5/2015 8:36 | Townsend at 7th | 65 | 269 | Subscriber | 94518\n",
"459672 | 408 | 9/18/2014 17:11 | Harry Bridges Plaza (Ferry Building) | 50 | 9/18/2014 17:17 | Embarcadero at Sansome | 60 | 429 | Subscriber | 94111\n",
"903647 | 723 | 8/25/2015 7:26 | San Francisco Caltrain 2 (330 Townsend) | 69 | 8/25/2015 7:38 | Market at 10th | 67 | 631 | Subscriber | 94025\n",
"452829 | 409 | 9/15/2014 8:29 | Steuart at Market | 74 | 9/15/2014 8:36 | Market at 4th | 76 | 428 | Subscriber | 94925\n",
"491023 | 224 | 10/9/2014 16:13 | Santa Clara at Almaden | 4 | 10/9/2014 16:17 | San Jose Diridon Caltrain Station | 2 | 144 | Subscriber | 94117\n",
"723352 | 519 | 4/13/2015 17:04 | Howard at 2nd | 63 | 4/13/2015 17:12 | San Francisco Caltrain (Townsend at 4th) | 70 | 629 | Subscriber | 94061\n",
"524499 | 431 | 10/31/2014 16:36 | Townsend at 7th | 65 | 10/31/2014 16:43 | Civic Center BART (7th at Market) | 72 | 630 | Subscriber | 94706\n",
"518524 | 389 | 10/28/2014 8:48 | Market at Sansome | 77 | 10/28/2014 8:54 | 2nd at South Park | 64 | 458 | Subscriber | 94610\n",
"793149 | 616 | 6/4/2015 5:26 | Embarcadero at Bryant | 54 | 6/4/2015 5:36 | Embarcadero at Sansome | 60 | 289 | Subscriber | 94105\n",
"681771 | 895 | 3/14/2015 11:46 | Market at 10th | 67 | 3/14/2015 12:01 | Market at 4th | 76 | 416 | Subscriber | 94107\n",
"... (78805 rows omitted)"
]
},
"execution_count": 180,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"End Station\", are.containing(\"at\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `are.strictly_between()`\n",
"\n",
"```python\n",
"tbl.where(column, are.strictly_between(x, y))\n",
"```\n",
"\n",
"Filter leaves rows only where the value in `column` is strictly greater than `x` and less than `y` (i.e. in the interval $(x, y)$)."
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code \n",
" \n",
" \n",
" \n",
" \n",
" 437830 151 9/4/2014 9:13 Grant Avenue at Columbus Avenue 73 9/4/2014 9:15 Commercial at Montgomery 45 306 Subscriber 94104 \n",
" \n",
" \n",
" 436255 195 9/3/2014 11:53 2nd at Folsom 62 9/3/2014 11:57 Spear at Folsom 49 403 Subscriber 94107 \n",
" \n",
" \n",
" 585884 151 12/26/2014 13:34 Broadway St at Battery St 82 12/26/2014 13:37 Harry Bridges Plaza (Ferry Building) 50 576 Subscriber 94107 \n",
" \n",
" \n",
" 548322 191 11/17/2014 20:10 Yerba Buena Center of the Arts (3rd @ Howard) 68 11/17/2014 20:13 Market at Sansome 77 29 Subscriber 94705 \n",
" \n",
" \n",
" 594999 185 1/7/2015 17:53 San Antonio Caltrain Station 29 1/7/2015 17:56 San Antonio Shopping Center 31 176 Subscriber 94040 \n",
" \n",
" \n",
" 468534 194 9/24/2014 19:08 Mechanics Plaza (Market at Battery) 75 9/24/2014 19:11 Harry Bridges Plaza (Ferry Building) 50 443 Subscriber 94107 \n",
" \n",
" \n",
" 873710 169 8/3/2015 17:20 Broadway St at Battery St 82 8/3/2015 17:23 Embarcadero at Sansome 60 532 Subscriber 94114 \n",
" \n",
" \n",
" 853087 168 7/20/2015 7:27 Temporary Transbay Terminal (Howard at Beale) 55 7/20/2015 7:30 2nd at Folsom 62 418 Subscriber 94602 \n",
" \n",
" \n",
" 863019 162 7/27/2015 8:31 Temporary Transbay Terminal (Howard at Beale) 55 7/27/2015 8:34 Mechanics Plaza (Market at Battery) 75 504 Subscriber 94111 \n",
" \n",
" \n",
" 883134 173 8/10/2015 15:11 Embarcadero at Folsom 51 8/10/2015 15:14 Beale at Market 56 363 Subscriber 94117 \n",
" \n",
" \n",
"
\n",
"... (5056 rows omitted)
"
],
"text/plain": [
"Trip ID | Duration | Start Date | Start Station | Start Terminal | End Date | End Station | End Terminal | Bike # | Subscriber Type | Zip Code\n",
"437830 | 151 | 9/4/2014 9:13 | Grant Avenue at Columbus Avenue | 73 | 9/4/2014 9:15 | Commercial at Montgomery | 45 | 306 | Subscriber | 94104\n",
"436255 | 195 | 9/3/2014 11:53 | 2nd at Folsom | 62 | 9/3/2014 11:57 | Spear at Folsom | 49 | 403 | Subscriber | 94107\n",
"585884 | 151 | 12/26/2014 13:34 | Broadway St at Battery St | 82 | 12/26/2014 13:37 | Harry Bridges Plaza (Ferry Building) | 50 | 576 | Subscriber | 94107\n",
"548322 | 191 | 11/17/2014 20:10 | Yerba Buena Center of the Arts (3rd @ Howard) | 68 | 11/17/2014 20:13 | Market at Sansome | 77 | 29 | Subscriber | 94705\n",
"594999 | 185 | 1/7/2015 17:53 | San Antonio Caltrain Station | 29 | 1/7/2015 17:56 | San Antonio Shopping Center | 31 | 176 | Subscriber | 94040\n",
"468534 | 194 | 9/24/2014 19:08 | Mechanics Plaza (Market at Battery) | 75 | 9/24/2014 19:11 | Harry Bridges Plaza (Ferry Building) | 50 | 443 | Subscriber | 94107\n",
"873710 | 169 | 8/3/2015 17:20 | Broadway St at Battery St | 82 | 8/3/2015 17:23 | Embarcadero at Sansome | 60 | 532 | Subscriber | 94114\n",
"853087 | 168 | 7/20/2015 7:27 | Temporary Transbay Terminal (Howard at Beale) | 55 | 7/20/2015 7:30 | 2nd at Folsom | 62 | 418 | Subscriber | 94602\n",
"863019 | 162 | 7/27/2015 8:31 | Temporary Transbay Terminal (Howard at Beale) | 55 | 7/27/2015 8:34 | Mechanics Plaza (Market at Battery) | 75 | 504 | Subscriber | 94111\n",
"883134 | 173 | 8/10/2015 15:11 | Embarcadero at Folsom | 51 | 8/10/2015 15:14 | Beale at Market | 56 | 363 | Subscriber | 94117\n",
"... (5056 rows omitted)"
]
},
"execution_count": 181,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trips.where(\"Duration\", are.strictly_between(100, 200))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Miscellaneous Functions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `sample_proportions()`\n",
"\n",
"```python\n",
"sample_proportions(sample_size, model_proportions)\n",
"```\n",
"\n",
"Samples `sample_size` objects from the distribution specified by `model_proportions`. `sample_size` should be an integer, model_proportions an array of probabilities that sum up to 1. It returns an array with the same size as `model_proportions`. Each item in the array corresponds to the proportion of times it was sampled out of the `sample_size` times.\t"
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.32, 0.32, 0.36])"
]
},
"execution_count": 182,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sample_proportions(100, [.5, .3, .2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### `minimize()\t`\n",
"\n",
"```python\n",
"minimize(function)\n",
"```\n",
"\n",
"This function returns an array of values that minimize `function`. `function` should be a function that takes in a certain number of arguments and returns a number. The array returned by `minimize` is structured such that if each value in the array was passed into function as arguments, it would minimize the output value of function."
]
},
{
"cell_type": "code",
"execution_count": 190,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 5.17585792, -0.58835469])"
]
},
"execution_count": 190,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f(x, y):\n",
" return 0.47 * x**2 + 1.23 * np.log(y)\n",
"\n",
"minimize(f)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}