Skip to content

Instantly share code, notes, and snippets.

@isaaccorley
Created September 25, 2024 00:00
Show Gist options
  • Save isaaccorley/dbcc2741cd37f99d1f6d5207f6e1bf33 to your computer and use it in GitHub Desktop.
Save isaaccorley/dbcc2741cd37f99d1f6d5207f6e1bf33 to your computer and use it in GitHub Desktop.
cs210_week2.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"gpuType": "T4",
"authorship_tag": "ABX9TyMn1+PgqFwJWl7GjIV40M5a",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/isaaccorley/dbcc2741cd37f99d1f6d5207f6e1bf33/cs210_week2.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"Reading Excel/CSV files and Pandas"
],
"metadata": {
"id": "RAyAg595OW4b"
}
},
{
"cell_type": "code",
"source": [
"import pandas\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"sns.set_theme()\n",
"sns.set_style()\n",
"\n",
"path = \"sample_data/california_housing_train.csv\"\n",
"data = pandas.read_csv(path)\n",
"data.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 226
},
"id": "an5_IhupOWqg",
"outputId": "1aaba8d2-6f76-4bd6-a10d-02da37ab461a"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"0 -114.31 34.19 15.0 5612.0 1283.0 \n",
"1 -114.47 34.40 19.0 7650.0 1901.0 \n",
"2 -114.56 33.69 17.0 720.0 174.0 \n",
"3 -114.57 33.64 14.0 1501.0 337.0 \n",
"4 -114.57 33.57 20.0 1454.0 326.0 \n",
"\n",
" population households median_income median_house_value \n",
"0 1015.0 472.0 1.4936 66900.0 \n",
"1 1129.0 463.0 1.8200 80100.0 \n",
"2 333.0 117.0 1.6509 85700.0 \n",
"3 515.0 226.0 3.1917 73400.0 \n",
"4 624.0 262.0 1.9250 65500.0 "
],
"text/html": [
"\n",
" <div id=\"df-ecac0e5c-bc35-4f90-9f5e-a6fa4e44ddd9\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-114.31</td>\n",
" <td>34.19</td>\n",
" <td>15.0</td>\n",
" <td>5612.0</td>\n",
" <td>1283.0</td>\n",
" <td>1015.0</td>\n",
" <td>472.0</td>\n",
" <td>1.4936</td>\n",
" <td>66900.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-114.47</td>\n",
" <td>34.40</td>\n",
" <td>19.0</td>\n",
" <td>7650.0</td>\n",
" <td>1901.0</td>\n",
" <td>1129.0</td>\n",
" <td>463.0</td>\n",
" <td>1.8200</td>\n",
" <td>80100.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-114.56</td>\n",
" <td>33.69</td>\n",
" <td>17.0</td>\n",
" <td>720.0</td>\n",
" <td>174.0</td>\n",
" <td>333.0</td>\n",
" <td>117.0</td>\n",
" <td>1.6509</td>\n",
" <td>85700.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-114.57</td>\n",
" <td>33.64</td>\n",
" <td>14.0</td>\n",
" <td>1501.0</td>\n",
" <td>337.0</td>\n",
" <td>515.0</td>\n",
" <td>226.0</td>\n",
" <td>3.1917</td>\n",
" <td>73400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-114.57</td>\n",
" <td>33.57</td>\n",
" <td>20.0</td>\n",
" <td>1454.0</td>\n",
" <td>326.0</td>\n",
" <td>624.0</td>\n",
" <td>262.0</td>\n",
" <td>1.9250</td>\n",
" <td>65500.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ecac0e5c-bc35-4f90-9f5e-a6fa4e44ddd9')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-ecac0e5c-bc35-4f90-9f5e-a6fa4e44ddd9 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-ecac0e5c-bc35-4f90-9f5e-a6fa4e44ddd9');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-57992c59-2f19-42b0-9076-482fcc3b0d1b\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-57992c59-2f19-42b0-9076-482fcc3b0d1b')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-57992c59-2f19-42b0-9076-482fcc3b0d1b button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "data",
"summary": "{\n \"name\": \"data\",\n \"rows\": 17000,\n \"fields\": [\n {\n \"column\": \"longitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.0051664084261778,\n \"min\": -124.35,\n \"max\": -114.31,\n \"num_unique_values\": 827,\n \"samples\": [\n -117.56,\n -123.32,\n -118.26\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"latitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.1373397946570836,\n \"min\": 32.54,\n \"max\": 41.95,\n \"num_unique_values\": 840,\n \"samples\": [\n 38.44,\n 40.79,\n 32.69\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"housing_median_age\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 12.586936981660399,\n \"min\": 1.0,\n \"max\": 52.0,\n \"num_unique_values\": 52,\n \"samples\": [\n 23.0,\n 52.0,\n 47.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"total_rooms\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2179.947071452767,\n \"min\": 2.0,\n \"max\": 37937.0,\n \"num_unique_values\": 5533,\n \"samples\": [\n 3564.0,\n 6955.0,\n 5451.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"total_bedrooms\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 421.4994515798646,\n \"min\": 1.0,\n \"max\": 6445.0,\n \"num_unique_values\": 1848,\n \"samples\": [\n 729.0,\n 719.0,\n 2075.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"population\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1147.8529591595266,\n \"min\": 3.0,\n \"max\": 35682.0,\n \"num_unique_values\": 3683,\n \"samples\": [\n 249.0,\n 1735.0,\n 235.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"households\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 384.5208408559009,\n \"min\": 1.0,\n \"max\": 6082.0,\n \"num_unique_values\": 1740,\n \"samples\": [\n 390.0,\n 1089.0,\n 1351.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"median_income\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.9081565183791036,\n \"min\": 0.4999,\n \"max\": 15.0001,\n \"num_unique_values\": 11175,\n \"samples\": [\n 7.2655,\n 5.6293,\n 4.2262\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"median_house_value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 115983.76438720885,\n \"min\": 14999.0,\n \"max\": 500001.0,\n \"num_unique_values\": 3694,\n \"samples\": [\n 162300.0,\n 346800.0,\n 116700.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 64
}
]
},
{
"cell_type": "code",
"source": [
"# Display one column\n",
"data[\"population\"]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 458
},
"id": "xLXsYSraOWpE",
"outputId": "2e734b52-82e7-4c02-fff8-f4296c59bbfd"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 1015.0\n",
"1 1129.0\n",
"2 333.0\n",
"3 515.0\n",
"4 624.0\n",
" ... \n",
"16995 907.0\n",
"16996 1194.0\n",
"16997 1244.0\n",
"16998 1298.0\n",
"16999 806.0\n",
"Name: population, Length: 17000, dtype: float64"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>population</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1015.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1129.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>333.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>515.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>624.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16995</th>\n",
" <td>907.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16996</th>\n",
" <td>1194.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16997</th>\n",
" <td>1244.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16998</th>\n",
" <td>1298.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16999</th>\n",
" <td>806.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>17000 rows × 1 columns</p>\n",
"</div><br><label><b>dtype:</b> float64</label>"
]
},
"metadata": {},
"execution_count": 55
}
]
},
{
"cell_type": "code",
"source": [
"# Filtering data by a column condition\n",
"condition = data[\"median_house_value\"] < 500000\n",
"data[condition]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 444
},
"id": "bcOm55WVOWnI",
"outputId": "892cee61-bc7d-4035-c3de-e371d1105106"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"0 -114.31 34.19 15.0 5612.0 1283.0 \n",
"1 -114.47 34.40 19.0 7650.0 1901.0 \n",
"2 -114.56 33.69 17.0 720.0 174.0 \n",
"3 -114.57 33.64 14.0 1501.0 337.0 \n",
"4 -114.57 33.57 20.0 1454.0 326.0 \n",
"... ... ... ... ... ... \n",
"16995 -124.26 40.58 52.0 2217.0 394.0 \n",
"16996 -124.27 40.69 36.0 2349.0 528.0 \n",
"16997 -124.30 41.84 17.0 2677.0 531.0 \n",
"16998 -124.30 41.80 19.0 2672.0 552.0 \n",
"16999 -124.35 40.54 52.0 1820.0 300.0 \n",
"\n",
" population households median_income median_house_value \n",
"0 1015.0 472.0 1.4936 66900.0 \n",
"1 1129.0 463.0 1.8200 80100.0 \n",
"2 333.0 117.0 1.6509 85700.0 \n",
"3 515.0 226.0 3.1917 73400.0 \n",
"4 624.0 262.0 1.9250 65500.0 \n",
"... ... ... ... ... \n",
"16995 907.0 369.0 2.3571 111400.0 \n",
"16996 1194.0 465.0 2.5179 79000.0 \n",
"16997 1244.0 456.0 3.0313 103600.0 \n",
"16998 1298.0 478.0 1.9797 85800.0 \n",
"16999 806.0 270.0 3.0147 94600.0 \n",
"\n",
"[16164 rows x 9 columns]"
],
"text/html": [
"\n",
" <div id=\"df-64f4f0b4-8ec5-4331-81f4-621a8ebf8a07\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-114.31</td>\n",
" <td>34.19</td>\n",
" <td>15.0</td>\n",
" <td>5612.0</td>\n",
" <td>1283.0</td>\n",
" <td>1015.0</td>\n",
" <td>472.0</td>\n",
" <td>1.4936</td>\n",
" <td>66900.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-114.47</td>\n",
" <td>34.40</td>\n",
" <td>19.0</td>\n",
" <td>7650.0</td>\n",
" <td>1901.0</td>\n",
" <td>1129.0</td>\n",
" <td>463.0</td>\n",
" <td>1.8200</td>\n",
" <td>80100.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-114.56</td>\n",
" <td>33.69</td>\n",
" <td>17.0</td>\n",
" <td>720.0</td>\n",
" <td>174.0</td>\n",
" <td>333.0</td>\n",
" <td>117.0</td>\n",
" <td>1.6509</td>\n",
" <td>85700.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-114.57</td>\n",
" <td>33.64</td>\n",
" <td>14.0</td>\n",
" <td>1501.0</td>\n",
" <td>337.0</td>\n",
" <td>515.0</td>\n",
" <td>226.0</td>\n",
" <td>3.1917</td>\n",
" <td>73400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-114.57</td>\n",
" <td>33.57</td>\n",
" <td>20.0</td>\n",
" <td>1454.0</td>\n",
" <td>326.0</td>\n",
" <td>624.0</td>\n",
" <td>262.0</td>\n",
" <td>1.9250</td>\n",
" <td>65500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16995</th>\n",
" <td>-124.26</td>\n",
" <td>40.58</td>\n",
" <td>52.0</td>\n",
" <td>2217.0</td>\n",
" <td>394.0</td>\n",
" <td>907.0</td>\n",
" <td>369.0</td>\n",
" <td>2.3571</td>\n",
" <td>111400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16996</th>\n",
" <td>-124.27</td>\n",
" <td>40.69</td>\n",
" <td>36.0</td>\n",
" <td>2349.0</td>\n",
" <td>528.0</td>\n",
" <td>1194.0</td>\n",
" <td>465.0</td>\n",
" <td>2.5179</td>\n",
" <td>79000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16997</th>\n",
" <td>-124.30</td>\n",
" <td>41.84</td>\n",
" <td>17.0</td>\n",
" <td>2677.0</td>\n",
" <td>531.0</td>\n",
" <td>1244.0</td>\n",
" <td>456.0</td>\n",
" <td>3.0313</td>\n",
" <td>103600.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16998</th>\n",
" <td>-124.30</td>\n",
" <td>41.80</td>\n",
" <td>19.0</td>\n",
" <td>2672.0</td>\n",
" <td>552.0</td>\n",
" <td>1298.0</td>\n",
" <td>478.0</td>\n",
" <td>1.9797</td>\n",
" <td>85800.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16999</th>\n",
" <td>-124.35</td>\n",
" <td>40.54</td>\n",
" <td>52.0</td>\n",
" <td>1820.0</td>\n",
" <td>300.0</td>\n",
" <td>806.0</td>\n",
" <td>270.0</td>\n",
" <td>3.0147</td>\n",
" <td>94600.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>16164 rows × 9 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-64f4f0b4-8ec5-4331-81f4-621a8ebf8a07')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-64f4f0b4-8ec5-4331-81f4-621a8ebf8a07 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-64f4f0b4-8ec5-4331-81f4-621a8ebf8a07');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-cd9186c4-5253-4e9e-9988-ebfbe73c2d1e\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-cd9186c4-5253-4e9e-9988-ebfbe73c2d1e')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-cd9186c4-5253-4e9e-9988-ebfbe73c2d1e button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"summary": "{\n \"name\": \"data[condition]\",\n \"rows\": 16164,\n \"fields\": [\n {\n \"column\": \"longitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.0071675974678347,\n \"min\": -124.35,\n \"max\": -114.31,\n \"num_unique_values\": 825,\n \"samples\": [\n -121.73,\n -117.35,\n -116.18\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"latitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.1517950102099763,\n \"min\": 32.54,\n \"max\": 41.95,\n \"num_unique_values\": 840,\n \"samples\": [\n 38.44,\n 40.79,\n 32.69\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"housing_median_age\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 12.500903029255072,\n \"min\": 1.0,\n \"max\": 52.0,\n \"num_unique_values\": 52,\n \"samples\": [\n 23.0,\n 52.0,\n 47.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"total_rooms\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2183.312085841703,\n \"min\": 2.0,\n \"max\": 37937.0,\n \"num_unique_values\": 5397,\n \"samples\": [\n 912.0,\n 2618.0,\n 2573.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"total_bedrooms\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 424.13490735850365,\n \"min\": 2.0,\n \"max\": 6445.0,\n \"num_unique_values\": 1828,\n \"samples\": [\n 82.0,\n 905.0,\n 984.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"population\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1160.5563050390751,\n \"min\": 3.0,\n \"max\": 35682.0,\n \"num_unique_values\": 3664,\n \"samples\": [\n 2585.0,\n 895.0,\n 465.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"households\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 386.9502358418687,\n \"min\": 2.0,\n \"max\": 6082.0,\n \"num_unique_values\": 1717,\n \"samples\": [\n 902.0,\n 1252.0,\n 33.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"median_income\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.5771084524560663,\n \"min\": 0.4999,\n \"max\": 15.0001,\n \"num_unique_values\": 10531,\n \"samples\": [\n 3.6094,\n 3.5186,\n 2.1848\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"median_house_value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 97404.06192819003,\n \"min\": 14999.0,\n \"max\": 499100.0,\n \"num_unique_values\": 3692,\n \"samples\": [\n 175300.0,\n 346800.0,\n 347700.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 56
}
]
},
{
"cell_type": "code",
"source": [
"# Filtering data by 2 column conditions\n",
"condition = (data[\"median_house_value\"] < 500000) & (data[\"housing_median_age\"] > 10)\n",
"data[condition]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 444
},
"id": "IRuT3z7bOWk1",
"outputId": "416ef8b9-09cc-41be-8b9f-59a11eedea81"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
"0 -114.31 34.19 15.0 5612.0 1283.0 \n",
"1 -114.47 34.40 19.0 7650.0 1901.0 \n",
"2 -114.56 33.69 17.0 720.0 174.0 \n",
"3 -114.57 33.64 14.0 1501.0 337.0 \n",
"4 -114.57 33.57 20.0 1454.0 326.0 \n",
"... ... ... ... ... ... \n",
"16995 -124.26 40.58 52.0 2217.0 394.0 \n",
"16996 -124.27 40.69 36.0 2349.0 528.0 \n",
"16997 -124.30 41.84 17.0 2677.0 531.0 \n",
"16998 -124.30 41.80 19.0 2672.0 552.0 \n",
"16999 -124.35 40.54 52.0 1820.0 300.0 \n",
"\n",
" population households median_income median_house_value \n",
"0 1015.0 472.0 1.4936 66900.0 \n",
"1 1129.0 463.0 1.8200 80100.0 \n",
"2 333.0 117.0 1.6509 85700.0 \n",
"3 515.0 226.0 3.1917 73400.0 \n",
"4 624.0 262.0 1.9250 65500.0 \n",
"... ... ... ... ... \n",
"16995 907.0 369.0 2.3571 111400.0 \n",
"16996 1194.0 465.0 2.5179 79000.0 \n",
"16997 1244.0 456.0 3.0313 103600.0 \n",
"16998 1298.0 478.0 1.9797 85800.0 \n",
"16999 806.0 270.0 3.0147 94600.0 \n",
"\n",
"[14891 rows x 9 columns]"
],
"text/html": [
"\n",
" <div id=\"df-abe86f48-49cc-4f3a-8aa4-4f1c8af83d9f\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-114.31</td>\n",
" <td>34.19</td>\n",
" <td>15.0</td>\n",
" <td>5612.0</td>\n",
" <td>1283.0</td>\n",
" <td>1015.0</td>\n",
" <td>472.0</td>\n",
" <td>1.4936</td>\n",
" <td>66900.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-114.47</td>\n",
" <td>34.40</td>\n",
" <td>19.0</td>\n",
" <td>7650.0</td>\n",
" <td>1901.0</td>\n",
" <td>1129.0</td>\n",
" <td>463.0</td>\n",
" <td>1.8200</td>\n",
" <td>80100.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-114.56</td>\n",
" <td>33.69</td>\n",
" <td>17.0</td>\n",
" <td>720.0</td>\n",
" <td>174.0</td>\n",
" <td>333.0</td>\n",
" <td>117.0</td>\n",
" <td>1.6509</td>\n",
" <td>85700.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-114.57</td>\n",
" <td>33.64</td>\n",
" <td>14.0</td>\n",
" <td>1501.0</td>\n",
" <td>337.0</td>\n",
" <td>515.0</td>\n",
" <td>226.0</td>\n",
" <td>3.1917</td>\n",
" <td>73400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-114.57</td>\n",
" <td>33.57</td>\n",
" <td>20.0</td>\n",
" <td>1454.0</td>\n",
" <td>326.0</td>\n",
" <td>624.0</td>\n",
" <td>262.0</td>\n",
" <td>1.9250</td>\n",
" <td>65500.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16995</th>\n",
" <td>-124.26</td>\n",
" <td>40.58</td>\n",
" <td>52.0</td>\n",
" <td>2217.0</td>\n",
" <td>394.0</td>\n",
" <td>907.0</td>\n",
" <td>369.0</td>\n",
" <td>2.3571</td>\n",
" <td>111400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16996</th>\n",
" <td>-124.27</td>\n",
" <td>40.69</td>\n",
" <td>36.0</td>\n",
" <td>2349.0</td>\n",
" <td>528.0</td>\n",
" <td>1194.0</td>\n",
" <td>465.0</td>\n",
" <td>2.5179</td>\n",
" <td>79000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16997</th>\n",
" <td>-124.30</td>\n",
" <td>41.84</td>\n",
" <td>17.0</td>\n",
" <td>2677.0</td>\n",
" <td>531.0</td>\n",
" <td>1244.0</td>\n",
" <td>456.0</td>\n",
" <td>3.0313</td>\n",
" <td>103600.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16998</th>\n",
" <td>-124.30</td>\n",
" <td>41.80</td>\n",
" <td>19.0</td>\n",
" <td>2672.0</td>\n",
" <td>552.0</td>\n",
" <td>1298.0</td>\n",
" <td>478.0</td>\n",
" <td>1.9797</td>\n",
" <td>85800.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16999</th>\n",
" <td>-124.35</td>\n",
" <td>40.54</td>\n",
" <td>52.0</td>\n",
" <td>1820.0</td>\n",
" <td>300.0</td>\n",
" <td>806.0</td>\n",
" <td>270.0</td>\n",
" <td>3.0147</td>\n",
" <td>94600.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>14891 rows × 9 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-abe86f48-49cc-4f3a-8aa4-4f1c8af83d9f')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-abe86f48-49cc-4f3a-8aa4-4f1c8af83d9f button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-abe86f48-49cc-4f3a-8aa4-4f1c8af83d9f');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-dac5082f-2003-413d-ad8a-df9acb92f118\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-dac5082f-2003-413d-ad8a-df9acb92f118')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-dac5082f-2003-413d-ad8a-df9acb92f118 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"summary": "{\n \"name\": \"data[condition]\",\n \"rows\": 14891,\n \"fields\": [\n {\n \"column\": \"longitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.0065143619130774,\n \"min\": -124.35,\n \"max\": -114.31,\n \"num_unique_values\": 816,\n \"samples\": [\n -117.64,\n -118.67,\n -123.17\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"latitude\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.153443748998928,\n \"min\": 32.55,\n \"max\": 41.95,\n \"num_unique_values\": 832,\n \"samples\": [\n 38.62,\n 40.94,\n 34.81\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"housing_median_age\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 11.240978976289389,\n \"min\": 11.0,\n \"max\": 52.0,\n \"num_unique_values\": 42,\n \"samples\": [\n 12.0,\n 31.0,\n 34.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"total_rooms\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1759.329747756432,\n \"min\": 11.0,\n \"max\": 32627.0,\n \"num_unique_values\": 4957,\n \"samples\": [\n 506.0,\n 2436.0,\n 840.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"total_bedrooms\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 368.37227521885467,\n \"min\": 3.0,\n \"max\": 6445.0,\n \"num_unique_values\": 1661,\n \"samples\": [\n 664.0,\n 1615.0,\n 376.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"population\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1020.9055131704611,\n \"min\": 3.0,\n \"max\": 35682.0,\n \"num_unique_values\": 3392,\n \"samples\": [\n 830.0,\n 1170.0,\n 4528.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"households\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 339.1833793983472,\n \"min\": 2.0,\n \"max\": 6082.0,\n \"num_unique_values\": 1560,\n \"samples\": [\n 1789.0,\n 561.0,\n 270.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"median_income\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.5443641133689376,\n \"min\": 0.4999,\n \"max\": 15.0001,\n \"num_unique_values\": 9748,\n \"samples\": [\n 4.9833,\n 5.2897,\n 3.9875\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"median_house_value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 97972.55806775189,\n \"min\": 14999.0,\n \"max\": 499100.0,\n \"num_unique_values\": 3628,\n \"samples\": [\n 219200.0,\n 334100.0,\n 446800.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 57
}
]
},
{
"cell_type": "code",
"source": [
"# Now find rows with less than 250 households, median house value of greater than $300k, and median housing age between 10 and 40"
],
"metadata": {
"id": "heJxdzqZVnZM"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# Count the unique housing median ages\n",
"data[\"housing_median_age\"].value_counts()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "mTCkN3v5Z_mo",
"outputId": "05cda7a4-4aad-479a-bef8-c10a03e3dd0f"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"housing_median_age\n",
"52.0 1052\n",
"36.0 715\n",
"35.0 692\n",
"16.0 635\n",
"17.0 576\n",
"34.0 567\n",
"33.0 513\n",
"26.0 503\n",
"18.0 478\n",
"25.0 461\n",
"32.0 458\n",
"37.0 437\n",
"15.0 416\n",
"19.0 412\n",
"28.0 400\n",
"27.0 397\n",
"24.0 389\n",
"31.0 384\n",
"30.0 384\n",
"20.0 383\n",
"23.0 382\n",
"29.0 374\n",
"21.0 373\n",
"14.0 347\n",
"22.0 323\n",
"38.0 318\n",
"42.0 308\n",
"39.0 302\n",
"44.0 296\n",
"43.0 286\n",
"13.0 249\n",
"40.0 249\n",
"45.0 235\n",
"41.0 232\n",
"10.0 226\n",
"11.0 208\n",
"5.0 199\n",
"46.0 196\n",
"12.0 192\n",
"8.0 178\n",
"47.0 175\n",
"9.0 172\n",
"4.0 161\n",
"7.0 151\n",
"48.0 135\n",
"6.0 129\n",
"50.0 112\n",
"49.0 111\n",
"2.0 49\n",
"3.0 46\n",
"51.0 32\n",
"1.0 2\n",
"Name: count, dtype: int64"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" </tr>\n",
" <tr>\n",
" <th>housing_median_age</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>52.0</th>\n",
" <td>1052</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36.0</th>\n",
" <td>715</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35.0</th>\n",
" <td>692</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16.0</th>\n",
" <td>635</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17.0</th>\n",
" <td>576</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34.0</th>\n",
" <td>567</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33.0</th>\n",
" <td>513</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26.0</th>\n",
" <td>503</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18.0</th>\n",
" <td>478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25.0</th>\n",
" <td>461</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32.0</th>\n",
" <td>458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37.0</th>\n",
" <td>437</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15.0</th>\n",
" <td>416</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19.0</th>\n",
" <td>412</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28.0</th>\n",
" <td>400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27.0</th>\n",
" <td>397</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24.0</th>\n",
" <td>389</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31.0</th>\n",
" <td>384</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30.0</th>\n",
" <td>384</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20.0</th>\n",
" <td>383</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23.0</th>\n",
" <td>382</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29.0</th>\n",
" <td>374</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21.0</th>\n",
" <td>373</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14.0</th>\n",
" <td>347</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>323</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38.0</th>\n",
" <td>318</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42.0</th>\n",
" <td>308</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39.0</th>\n",
" <td>302</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44.0</th>\n",
" <td>296</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43.0</th>\n",
" <td>286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13.0</th>\n",
" <td>249</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40.0</th>\n",
" <td>249</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45.0</th>\n",
" <td>235</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41.0</th>\n",
" <td>232</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10.0</th>\n",
" <td>226</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11.0</th>\n",
" <td>208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5.0</th>\n",
" <td>199</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46.0</th>\n",
" <td>196</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12.0</th>\n",
" <td>192</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8.0</th>\n",
" <td>178</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47.0</th>\n",
" <td>175</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9.0</th>\n",
" <td>172</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4.0</th>\n",
" <td>161</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7.0</th>\n",
" <td>151</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48.0</th>\n",
" <td>135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6.0</th>\n",
" <td>129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50.0</th>\n",
" <td>112</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49.0</th>\n",
" <td>111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0</th>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3.0</th>\n",
" <td>46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51.0</th>\n",
" <td>32</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1.0</th>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div><br><label><b>dtype:</b> int64</label>"
]
},
"metadata": {},
"execution_count": 67
}
]
},
{
"cell_type": "code",
"source": [
"# Plot the median house value\n",
"data[\"median_house_value\"].hist(bins=25)\n",
"plt.xlabel(\"Median House Value\")\n",
"plt.ylabel(\"Count\")\n",
"plt.title(\"Histogram of Median House Value in California\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 498
},
"id": "EQ6mLIK9ZAeJ",
"outputId": "b2057b5a-6c48-466e-c314-e5d09b5c29c9"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Histogram of Median House Value in California')"
]
},
"metadata": {},
"execution_count": 65
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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IjIyEseOHcOpU6eQl5eHRo0aYdKkSTqfuOrRowciIyMRGxuLH374AaIoIiwsDIIgYPXq1Vi2bBni4uLw7bffonHjxvjwww+lT8UVmj9/Pl544QXExsbi8OHD6NixI5YsWYJevXqVemXmRYsW4dNPP8XXX38NURQRGBiI9evX4+WXX5Z1TIoze/ZsODk5Yd++fThy5AheeOEFjBkz5rlznyqLtbU1vvrqK6xduxbx8fH47rvvYGdnh2bNmmHChAnSRN3C52jOnDn44YcfoFAopIUgX3nllec+hqurK5YtW4alS5dKz9/gwYNRp04dnTXIqkLHjh2xYcMGLFu2DMuWLYO5uTnatWuHf/3rX3B2dpbq1a5dGytWrMC8efPw+eefw8nJCe+//z5u3LihE6pCQkKQkZGBvXv34v79+6hduzbat2+vN5YrV67El19+ie+//x6HDx+GtbU1nJycEBkZWerJ/3Z2dujSpQvi4+MRFham90dFRY7z119/Henp6dizZw9+/vlntGnTBps3b9YLAaU9fgypa9eu+OGHH7Bx40YcPXoU33zzDSwtLaUFOV9//XUAhjsuX331VdSqVQvr16/HwoULYWNjg27duuFf//qXzhpVlaF27dpYs2YN5s+fj6VLl0KpVKJv374ICAjQ+zQsFU0hMoJSDfP777/jlVdeweeff67z6SciIqKK4JwqqtaK+ob5LVu2QBCEElcyJyIiKgte/qNqbcOGDbh06RI6dOgAMzMzJCQkICEhAQMHDixyHRciIqLy4uU/qtZOnTqFFStWIDk5GTk5OXjxxRcRERGBsWPHwtycf1MQEZF8GKqIiIiIZMA5VUREREQyYKgiIiIikoFRhaobN24gJiYGERERaNGiBcLDw4usp1KppAUhvby80K1bN2zatEmnTl5eHubPn4/AwED4+Phg+PDhRX7DdnJyMoYPHw4fHx8EBgZiwYIFOivZEhEREZWGUc3UvXr1Kk6cOIHWrVtDq9UWuYprTk4OIiMjYWZmhmnTpqFu3bq4fv263rdpz549G3FxcYiOjkaDBg2wZs0avPXWW4iNjZUWmMvKysKwYcPQrFkzLF++HJmZmZg3bx4ePXqEmJiYcu+HKIrQap8/VU0QFCXWIXlxzA2PY254HHPD45gbXmWMuSAoKvzl9UYVqkJCQtCtWzcAQHR0NC5duqRXZ926dXj48CF++OEH6ctL/f39dercvn0be/bswcyZM9G/f38AgJeXF7p06YIdO3Zg1KhRAIAdO3bg4cOHWLFiBRwdHQE8+X6yWbNmYcyYMWjQoEG59kOrFXHv3sNit5ubC6hd2xYqVQ4KCvit34bAMTc8jrnhccwNj2NueJU15nXq2MLMrGKhyqgu/xV+mePz7NmzB6+99poUqIpy8uRJaLVa9OrVSypzdHREYGAgEhISpLKEhAQEBARIgQp48oWfWq0Wp06dKt9OEBERUY1kVGeqSpKeno47d+6gdu3aGDt2LE6ePAkbGxv06NEDU6dOha2tLQAgJSUFdevWhYODg8793dzcsGfPHul2SkoKXnvtNZ06SqUS9erVK3L+VVmYmxcfEM3MBJ1/qfJxzA2PY254HHPD45gbnjGPuUmFqn/++QfAky/J7dGjB9avX4/r169j0aJFyMnJweLFiwE8mche1BdzKpVKZGVlSbdVKlWRX1Dp4OCgU6+sBEGB2rVtS6ynVFqX+zGofDjmhscxNzyOueFxzA3PGMfcpEKVVvvk2qmLiwvmz58PAAgICIC5uTmmT5+OqKgonW+KryparQiVKqfY7WZmApRKa6hUudBoeA3eEDjmhscxNzyOueFxzA2vssZcqbSu8NkvkwpVhZfznp2Y3qFDBwBPPj3o7OwMpVKp92lA4MmZqacvCSqVSqjVar16WVlZepcOy6o0k+c0Gi0nNhoYx9zwOOaGxzE3PI654RnjmBvfBcnncHZ2hqWlZbHbHz9+DABwdXXFP//8o3cJLyUlBa6urtJtV1dXvblTarUad+7c0alHREREVBKTClWWlpYIDAxEYmKiTvnp06cBAC1btgQABAUFQRAEHDp0SKqTlZWFkydPIjg4WCoLDg7G6dOnoVKppLL4+HgIgoDAwMDK3BUiIiKqZozq8l9ubi5OnDgBAMjIyEB2djbi4+MBAO3bt0edOnUwfvx4DBo0CB988AH69euHGzduYNGiRejTpw+aNGkCAGjYsCH69++PBQsWQBAENGjQAGvXroW9vT0GDRokPd6gQYPw1Vdf4d1338WYMWOQmZmJBQsWYNCgQeVeo4qIiIhqJoVY1LLlVSQ9PR1du3YtctvWrVuluVSJiYlYuHAhrly5AgcHB/Tp0wdRUVE6lwbz8vKwZMkSfP/993j48CH8/Pwwffp0uLm56bSbnJyMTz/9FElJSbC1tUVERIReW2Wl0WhLtfjn/fsPje56cHXFMTc8jrnhccwNj2NueJU15k8W/6zYBTyjClXVBUOV8eGYGx7H3PA45obHMTc8Yw5VJjWnioiIiMhYMVQRERERyYChioiIiEgGDFVEREREMjCqJRWIqGiCoIAgKCrcjlYrQqvlZ1OIiCoDQxWRkRMEBRwdbWT5RnaNRosHD3IYrIiIKgFDFZGREwQFzMwELNx+HumZ+t9VWVpODewx+c02EAQFQxURUSVgqCIyEemZaiRnZJVckYiIqgQnqhMRERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJwKhC1Y0bNxATE4OIiAi0aNEC4eHhz61/5MgReHh4FFlPrVZj2rRpaN++PXx9fTFx4kT8/fffevUuXLiAgQMHwtvbG126dMG6desgiqJs+0REREQ1g1GFqqtXr+LEiRNo2rQp3Nzcnlv30aNHmDNnDl544YUit0+aNAmnTp3Cxx9/jIULFyI1NRWjRo1CQUGBVOfGjRsYOXIk6tWrh7Vr12LYsGFYtmwZNm3aJOt+ERERUfVnXtUdeFpISAi6desGAIiOjsalS5eKrbt27Vo0atQITk5OevWSkpJw8uRJbNy4EUFBQQAAFxcXhIaG4tChQwgNDQUAbNy4EbVr18bixYthaWmJgIAA3Lt3D2vWrEFkZCQsLS0raU+JiIioujGqM1WCULru3Lx5E5s3b8b06dOL3J6QkAClUonAwECpzNXVFZ6enkhISNCp17VrV53wFBoaCpVKhaSkpHLuBREREdVERnWmqrQ+++wzREREoHnz5kVuT0lJgYuLCxQKhU65q6srUlJSAAA5OTn466+/4OrqqldHoVAgJSUF/v7+5e6juXnxAdHMTND5lyqfKY+53H021BiY8pibKo654XHMDc+Yx9zkQtWxY8eQlJSE+Pj4YuuoVCrY29vrlTs4OEiXCtVqNQBAqVTq1LG0tIS1tTWysrLK3UdBUKB2bdsS6ymV1uV+DCofjrnhx4Bjbngcc8PjmBueMY65SYWqx48fY86cOZgwYQLq1KlT1d0pllYrQqXKKXa7mZkApdIaKlUuNBqtAXtWc5nymBf2XS6GGgNTHnNTxTE3PI654VXWmCuV1hU++2VSoWrLli0QBAFhYWFQqVQAgPz8fGi1WqhUKtSqVQuWlpZQKpW4ffu23v2zsrLg4OAAANKZrMIzVoXy8vKQm5sr1SuvgoKSn2iNRluqeiQfjrnhx4Bjbngcc8PjmBueMY65SYWqlJQU3LhxAwEBAXrb2rVrh48//hiDBw+Gq6srEhMTIYqizryq1NRUuLu7AwBsbGzw4osvSnOsnq4jiqLeXCsiIiKi5zG+WV7PMWrUKGzdulXnJygoCI0bN8bWrVsREhICAAgODkZWVhYSExOl+6ampuLy5csIDg6WyoKDg3H06FHk5+dLZXFxcVAqlfD19TXcjhEREZHJM6ozVbm5uThx4gQAICMjA9nZ2dKE9Pbt28PNzU1vUdB9+/YhMzNT55N6vr6+CAoKwrRp0zBlyhRYWVlhyZIl8PDwQI8ePaR6I0eOxP79+/HBBx9g8ODBuHLlCjZu3IioqCiuUUVERERlYlSh6u7du3jvvfd0ygpvb926tUxLHCxduhRz585FTEwMCgoKEBQUhOnTp8Pc/H+73LRpU2zcuBHz5s3D6NGjUadOHUycOBEjRoyQZ4eIiIioxlCI/KI72Wk0Wty797DY7ebmAmrXtsX9+w+NbpJddWXKY17Y90mLf0JyRvmX+nBr7ICl73c22BiY8pibKo654XHMDa+yxrxOHdsKf/rPpOZUERERERkrhioiIiIiGTBUEREREcnAqCaqE1U3gqCAIChKrvgcxvj9VkREpI+hiqiSCIICjo42DEVERDUEQxVRJREEBczMBCzcfh7pmeqS71AMv+b1MTS0hYw9IyKiysBQRVTJ0jPVFVoKwam+nYy9ISKiysLrEkREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMCJ6kQ1jBxLPGi1IrRafm0oEdHTGKqIaghHeytotSKUSusKt6XRaPHgQQ6DFRHRUxiqiGoIO2sLCIKiwutmOTWwx+Q320AQFAxVRERPYagiqmEqum4WEREVjRPViYiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgBPVqVoRBAUEQaFXXrg2U2nXaOI6TEREVFYMVVRtCIICjo42zw1OpV2jSaPRQq1+BFEsf7CSY5FNIiIyHQxVVG0IggJmZkKF12HydKmDURFecHS0kbF3RERU3TFUUbVT0XWYnOrbybJIpl/z+hga2qLc9yciItPCUEVUDDnCGRER1Ryc9EFEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZGBUoerGjRuIiYlBREQEWrRogfDwcJ3t2dnZWL58Ofr374+2bduiY8eOGDt2LP7880+9ttRqNaZNm4b27dvD19cXEydOxN9//61X78KFCxg4cCC8vb3RpUsXrFu3rkLf90ZEREQ1k1GFqqtXr+LEiRNo2rQp3Nzc9LbfunULO3fuRGBgIJYuXYpPP/0UarUaAwcORHJysk7dSZMm4dSpU/j444+xcOFCpKamYtSoUSgoKJDq3LhxAyNHjkS9evWwdu1aDBs2DMuWLcOmTZsqfV+JiIioejGqr6kJCQlBt27dAADR0dG4dOmSznYnJyccPnwY1tbWUlmHDh0QEhKCr7/+GjNmzAAAJCUl4eTJk9i4cSOCgoIAAC4uLggNDcWhQ4cQGhoKANi4cSNq166NxYsXw9LSEgEBAbh37x7WrFmDyMhIWFpaGmK3iYiIqBowqjNVgvD87tjY2OgEKgCwtbVFkyZNdC7tJSQkQKlUIjAwUCpzdXWFp6cnEhISdOp17dpVJzyFhoZCpVIhKSmportDRERENYhRnakqD5VKhatXr6Jjx45SWUpKClxcXKBQKHTqurq6IiUlBQCQk5ODv/76C66urnp1FAoFUlJS4O/vX+5+mZsXHxDNzASdf0keHE/DKmm8eZwbHsfc8DjmhmfMY27yoerzzz+HQqHA4MGDpTKVSgV7e3u9ug4ODtIlRbVaDQBQKpU6dSwtLWFtbY2srKxy90kQFKhd27bEekqldYl1iIxVaY9fHueGxzE3PI654RnjmJt0qNq7dy927dqFefPmoWHDhlXdHYlWK0Klyil2u5mZAKXSGipVLjQarQF7Vr0VjisZRknHL49zw+OYGx7H3PAqa8yVSusKn/0y2VB14sQJxMTE4J133kG/fv10timVSty+fVvvPllZWXBwcAAA6UxW4RmrQnl5ecjNzZXqlVdBQclPtEajLVU9ImNU2uOXx7nhccwNj2NueMY45sZ3QbIU/v3vf+O9997DK6+8gvfee09vu6urK1JTU/XWm0pNTZXmUNnY2ODFF1+U5lg9XUcURb25VkRERETPY3Kh6tq1axgzZgw6dOiAWbNmFVknODgYWVlZSExMlMpSU1Nx+fJlBAcH69Q7evQo8vPzpbK4uDgolUr4+vpW3k4QERFRtWNUl/9yc3Nx4sQJAEBGRgays7MRHx8PAGjfvj1EUcTIkSNhZWWFYcOG6axjZWdnh5deegkA4Ovri6CgIEybNg1TpkyBlZUVlixZAg8PD/To0UO6z8iRI7F//3588MEHGDx4MK5cuYKNGzciKiqKa1QRERFRmRhVqLp7967e5bzC21u3bgUAaa7UW2+9pVOvffv2+Oqrr6TbS5cuxdy5cxETE4OCggIEBQVh+vTpMDf/3y43bdoUGzduxLx58zB69GjUqVMHEydOxIgRIypj94iIiKgaM6pQ5eTkVOT3+D2tpO2F7O3tMWfOHMyZM+e59fz8/LBr165S95GIiIioKCY3p4qIiIjIGDFUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERycCovqaGai5BUEAQFBVqw8yMfyMQEVHVYaiiKicICjg62jAUERGRSWOooionCAqYmQlYuP080jPV5W7Hr3l9DA1tIWPPiIiISo+hioxGeqYayRlZ5b6/U307GXtDRERUNrzeQkRERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgG/EJlIqoygqCAICgq3I5WK0KrFWXoERFR+TFUEVGVEAQFHB1tYGZW8RPmGo0WDx7kMFgRUZViqCKiKiEICpiZCVi4/TzSM9XlbsepgT0mv9kGgqBgqCKiKsVQRURVKj1TjeSMrKruBhFRhXGiOhEREZEMGKqIiIiIZMBQRURERCQDowpVN27cQExMDCIiItCiRQuEh4cXWW/37t3o2bMnvLy80LdvXxw/flyvjlqtxrRp09C+fXv4+vpi4sSJ+Pvvv/XqXbhwAQMHDoS3tze6dOmCdevWQRQ52ZWoJGZmAszNi/8p/FRfcfXk+NQfEZExMaqJ6levXsWJEyfQunVraLXaIsNNbGwsZsyYgbFjx6JDhw6Ii4vD+PHjsX37dvj4+Ej1Jk2ahGvXruHjjz+GlZUVli5dilGjRmHv3r0wN3+y2zdu3MDIkSMRGBiISZMm4c8//8TChQthZmaGkSNHGmq3iUyKo70VtFoRSqV1qeqXth4RkakzqlAVEhKCbt26AQCio6Nx6dIlvTrLli1DWFgYJk2aBADo0KEDrly5gpUrV2L9+vUAgKSkJJw8eRIbN25EUFAQAMDFxQWhoaE4dOgQQkNDAQAbN25E7dq1sXjxYlhaWiIgIAD37t3DmjVrEBkZCUtLSwPsNZFpsbO2gCAoKrwUgl/z+hga2kLGnhERVS2jClWC8PzLAWlpabh+/Tr+9a9/6ZSHhoZiwYIFyMvLg6WlJRISEqBUKhEYGCjVcXV1haenJxISEqRQlZCQgO7du+uEp9DQUKxduxZJSUnw9/eXce+qJzlWxOZlINNU0aUQnOrbydgbIqKqZ1ShqiQpKSkAnpx1epqbmxvy8/ORlpYGNzc3pKSkwMXFBQqF7i97V1dXqY2cnBz89ddfcHV11aujUCiQkpJSoVBlbl58UHh6rokpUygUsLevZfL7QdUDj8Pq895iSjjmhmfMY25SoSor68lfxUqlUqe88HbhdpVKBXt7e737Ozg4SJcU1Wp1kW1ZWlrC2tpaaqs8BEGB2rVtS6xXXeaa8DIQGYPq8nqSA8fC8DjmhmeMY25SocpUaLUiVKqcYrebmQlQKq2hUuVCo9EasGfyKtwPXgYiY2Dqryc5VJf3FlPCMTe8yhpzpdK6wme/TCpUOTg4AHhylqlevXpSuUql0tmuVCpx+/ZtvftnZWVJdQrPZBWesSqUl5eH3NxcqV55FRSU/ERrNNpS1SOikvH19D8cC8PjmBueMY658V2QfI7C+U+F86IKpaSkwMLCAs7OzlK91NRUvSUZUlNTpTZsbGzw4osv6rVVeL9n51oRERERPY9JhSpnZ2c0a9YM8fHxOuVxcXEICAiQPsUXHByMrKwsJCYmSnVSU1Nx+fJlBAcHS2XBwcE4evQo8vPzddpSKpXw9fWt5L0hIiKi6sSoLv/l5ubixIkTAICMjAxkZ2dLAap9+/aoU6cOJkyYgMmTJ6NJkybw9/dHXFwcLl68iG3btknt+Pr6IigoCNOmTcOUKVNgZWWFJUuWwMPDAz169JDqjRw5Evv378cHH3yAwYMH48qVK9i4cSOioqK4RhURERGViVGFqrt37+K9997TKSu8vXXrVvj7+yM8PBy5ublYv3491q1bBxcXF6xYsULvzNLSpUsxd+5cxMTEoKCgAEFBQZg+fbq0mjoANG3aFBs3bsS8efMwevRo1KlTBxMnTsSIESMqf2eJiIioWjGqUOXk5IQ///yzxHoDBgzAgAEDnlvH3t4ec+bMwZw5c55bz8/PD7t27SpTP4mIiIieZVJzqoiIiIiMFUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA6P6QmUiIiKqvgRBAUFQVKgNMzPjPR/EUEVERESVThAUcHS0kSUUabUiFIqKhbPKUO5QNXToUIwbNw4BAQFFbj9z5gxWrVqFrVu3lrtzREREVD0IggJmZgIWbj+P9Ex1udtxamCPyW+2qfAZr8pQ7lD1yy+/YMCAAcVuv3fvHs6dO1fe5omIiKgaSs9UIzkjq6q7USkqdPnveafebty4AVtb24o0T0RUanJdUtBqRRl6Q0Q1UZlC1b59+7Bv3z7p9urVq7Fr1y69emq1Gn/++SeCg4Mr3kMioudwtLeCVitCqbSucFsajRYPHuQwWBFRuZQpVOXm5uL+/fvS7YcPH0IQ9P86tLGxwaBBg/Duu+9WvIdERM9hZ20BQVDIOk+DoYqIyqNMoeqNN97AG2+8AQAICQnBRx99hK5du1ZKx4iIyqI6z9MgItNQ7jlVx44dk7MfRERERCatwutUZWdn49atW1CpVBBF/VPm7dq1q+hDEBERERm9coeqe/fuYfbs2Th06BA0Go3edlF8sjDX77//XqEOEhEREZmCcoeqmJgYHD9+HJGRkWjbti2USqWc/SIiIiIyKeUOVadOncKwYcPw4YcfytkfIiIiIpNU7tXyatWqhcaNG8vZFyIiIiKTVe5Q1bdvXxw5ckTOvhARERGZrHJf/uvZsyfOnTuHkSNHYuDAgWjYsCHMzMz06rVs2bJCHSQiIiIyBeUOVYWLgALA6dOn9bbz039ERERUk5Q7VM2dO1fOfhARERGZtHKHqn79+snZDyIiIiKTVu6J6kRERET0P+U+UzV16tQS6ygUCsyZM6e8D1Gso0ePYs2aNbh27RpsbW3Rpk0bTJ48Gc7Ozjr1du/ejQ0bNuDWrVtwcXFBVFQUunTpolNHrVZj7ty5OHLkCPLz8/Hyyy9j+vTpqF+/vuz9JiIiouqr3KHq7NmzemVarRZ37tyBRqNBnTp1YG1tXaHOFfe448ePxyuvvIKoqCg8ePAAX3zxBUaMGIH9+/ejVq1aAIDY2FjMmDEDY8eORYcOHRAXF4fx48dj+/bt8PHxkdqbNGkSrl27ho8//hhWVlZYunQpRo0ahb1798LcvMJfjUhEREQ1RLlTw7Fjx4osz8/Px86dO7FlyxZs2rSp3B0rTmxsLBo1aoQ5c+ZAoVAAAOrUqYNhw4bh0qVLaNu2LQBg2bJlCAsLw6RJkwAAHTp0wJUrV7By5UqsX78eAJCUlISTJ09i48aNCAoKAgC4uLggNDQUhw4dQmhoqOz9JyIioupJ9jlVFhYWGDJkCAIDA/Hpp5/K3TwKCgpga2srBSoAsLe3B/BkGQcASEtLw/Xr19G7d2+d+4aGhiIxMRF5eXkAgISEBCiVSgQGBkp1XF1d4enpiYSEBNn7TkRERNVXpU1Ub968Oc6dOyd7u6+++iqSk5Oxfft2qNVqpKWlYfHixWjRogX8/PwAACkpKQCenHV6mpubG/Lz85GWlibVc3Fx0QlowJNgVdgGERERUWlU2qSh06dPV8qcqrZt22LFihX44IMP8MknnwAAPD09sWHDBmlF96ysLACAUqnUuW/h7cLtKpVKOsv1NAcHB1y6dKlC/TQ3Lz6vmpkJOv+aKlPvP1FRTPm4ri7vLaaEY156co+RICie+7u2KpQ7VK1YsaLIcrVajXPnzuHy5csYPXp0uTtWnAsXLuDDDz/E66+/js6dO+PBgwdYtWoVRo8eja+//lqaqF6VBEGB2rVtS6ynVMofOomoYqrD67I67IOp4Zgbnp1d1f++f5bsocrBwQHOzs6YNWsWXn/99XJ3rDizZ89Ghw4dEB0dLZX5+Pigc+fO+P777zFw4EA4ODgAeBLw6tWrJ9VTqVRSH4EnZ65u376t9xhZWVlSnfLQakWoVDnFbjczE6BUWkOlyoVGoy3341S1wv0gqk5M+XVZXd5bTAnHvPTk/p2Rnf0I+fka2dpTKq0rfDat3KHqjz/+qNADl1dycjK6du2qU9awYUPUrl0bN2/eBPBkThTwZM5U4f8Lb1tYWEjrWbm6uiIxMVH6nsJCqampcHd3r1A/CwpKfnFpNNpS1SMiw6kOr8vqsA+mhmNueFqtaHRjblwXI0uhUaNGuHz5sk5ZRkYG7t+/j8aNGwMAnJ2d0axZM8THx+vUi4uLQ0BAACwtLQEAwcHByMrKQmJiolQnNTUVly9fRnBwcCXvCREREVUnFZ6o/ssvv+Cnn37CrVu3ADwJPZ07d0b79u0r3LmiDBo0CHPmzMHs2bMREhKCBw8eYPXq1ahbt67OEgoTJkzA5MmT0aRJE/j7+yMuLg4XL17Etm3bpDq+vr4ICgrCtGnTMGXKFFhZWWHJkiXw8PBAjx49KqX/REREVD2VO1Tl5eXhgw8+wJEjRyCKovTJOpVKhc2bN6N79+5YtGgRLCwsZOssAAwdOhSWlpb45ptvsHfvXtja2sLHxwdLly5F7dq1pXrh4eHIzc3F+vXrsW7dOri4uGDFihXw9fXVaW/p0qWYO3cuYmJiUFBQgKCgIEyfPp2rqRMREVGZlDs5rFy5EocPH8aIESMwYsQIvPDCCwCAu3fvYtOmTdi4cSNWrlwprWguF4VCgcGDB2Pw4MEl1h0wYAAGDBjw3Dr29vaYM2dOpXxHIREREdUc5Z5TtX//fvTr1w8ffvihFKgAoG7duvjXv/6FV155BT/88IMsnSQiIiIyduUOVXfu3IG3t3ex2729vXHnzp3yNk9ERERkUsodqho2bIhffvml2O3nzp1Dw4YNy9s8ERERkUkpd6h65ZVXcPDgQcTExCAlJQUajQZarRYpKSmYOXMm4uPj0a9fPzn7SkRERGS0yj1RfezYsUhLS8OuXbuwe/duCMKTfKbVaiGKIvr164exY8fK1lEiIiIiY1buUGVmZoZ58+bhrbfeQkJCAjIyMgAAjRs3RnBwMJo3by5bJ4mIiIiMXZlC1ePHj/HZZ5/h//7v/xAZGQkAaN68uV6A2rp1K3bs2IGPPvpI9nWqiIiIiIxRmeZU7dy5E/v27UPnzp2fW69z587Yu3cvdu/eXZG+EREREZmMMoWqgwcPokePHtIXEhenSZMm6NWrF2JjYyvUOSIiQzMzE2BuXrEfQVCU/EBEVO2U6fLflStX0KdPn1LV9fX1xfHjx8vVKSIiQ3O0t4JWK0KptK5wWxqNFg8e5ECrFWXoGRGZijKFqvz8/FLPkbKwsEBeXl65OkVEZGh21hYQBAUWbj+P9Ex1udtxamCPyW+2gSAoGKqIapgyhar69evj6tWrpap79epV1K9fv1ydIiKqKumZaiRnZFV1N4jIBJVpTlXHjh3x/fff4+7du8+td/fuXXz//ffo2LFjhTpHREREZCrKFKpGjRqFx48fY9iwYfjPf/5TZJ3//Oc/eOutt/D48WO8/fbbsnSSiIiIyNiV6fKfs7Mzli5divfffx+DBg2Cs7Mz3N3dYWtri4cPH+Lq1au4efMmatWqhcWLF6NJkyaV1W8iIiIio1LmFdU7d+6MH374AevXr8dPP/2EI0eOSNvq16+PAQMGYNSoUSUuu0BERERUnZTra2qcnJwwa9YsAEB2djYePnwIW1tb2NnZydo5IiIiIlNR7u/+K2RnZ8cwRURERDVemSaqExEREVHRGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERycC8qjtARFQdmZlV/G9WrVaEVivK0BsiMgSGKiIiGTnaW0GrFaFUWle4LY1GiwcPchisiEyEyYaqffv2YcuWLUhOToaNjQ28vLywYsUK1KpVCwBw7NgxLF26FKmpqWjUqBFGjx6N1157TaeNvLw8LFmyBD/88AMePnwIX19fzJgxA66urlWxS0RUDdhZW0AQFFi4/TzSM9XlbsepgT0mv9kGgqBgqCIyESYZqlavXo3169dj7Nix8PHxwf3795GYmAiNRgMA+PXXXzF+/Hj0798f06ZNw5kzZ/DRRx/B1tYWvXr1ktqZPXs24uLiEB0djQYNGmDNmjV46623EBsbC3t7+6raPSKqBtIz1UjOyKrqbhCRAZlcqEpJScGKFSuwatUqdOrUSSrv2bOn9P/Vq1fD29sbn3zyCQCgQ4cOSEtLw7Jly6RQdfv2bezZswczZ85E//79AQBeXl7o0qULduzYgVGjRhlwr4iIiMjUmdyn/7799ls4OTnpBKqn5eXl4ezZszpnpAAgNDQUycnJSE9PBwCcPHkSWq1Wp56joyMCAwORkJBQeTtARERE1ZLJnan6z3/+A3d3d6xatQpfffUV1Go1WrVqhalTp6J169a4efMm8vPz9eZFubm5AXhypsvJyQkpKSmoW7cuHBwc9Ort2bOnwv00Ny8+rxZ+KkiOTwdVJVPvP5EpKMvrrLq8t5gSjnnpyT1GgqB47u/aqmByoerOnTu4dOkSrly5gpkzZ8La2hpr1qzBiBEjcOjQIWRlPZnDoFQqde5XeLtwu0qlKnLelFKplOqUlyAoULu2bYn15Ph0EBFVb+V5n+B7i+FxzA3Pzq5WVXdBj8mFKlEUkZOTgy+++ALNmzcHALRu3RohISHYtm0bgoKCqriHT9aWUalyit1uZiZAqbSGSpULjUZrwJ7Jq3A/iKjylOV9orq8t5gSjnnpyf07Izv7EfLzNbK1p1RaV/hsmsmFKqVSCUdHRylQAU/mQrVo0QLXrl1DWFgYAECt1v0os0qlAgDpcp9SqUR2drZe+yqVSu+SYHkUFJT84tJotKWqR0Q1V3neJ/jeYngcc8PTakWjG3PjuhhZCi+99FKx2x4/fowmTZrAwsICKSkpOtsKbxfOtXJ1dcU///yjd6kvJSWF61QRERFRmZlcqOrSpQsePHiA33//XSq7f/8+fvvtN7Rs2RKWlpbw9/fHjz/+qHO/uLg4uLm5wcnJCQAQFBQEQRBw6NAhqU5WVhZOnjyJ4OBgw+wMERERVRsmd/mvW7du8PLywsSJExEVFQUrKyusW7cOlpaWeOONNwAA48aNw9ChQ/Hxxx+jd+/eOHv2LA4cOIAlS5ZI7TRs2BD9+/fHggULIAgCGjRogLVr18Le3h6DBg2qqt0jIiIiE2VyoUoQBKxbtw5z585FTEwM8vPz0bZtW2zfvh316tUDALRt2xbLly/H0qVLsWfPHjRq1AizZ89G7969ddqaPn06bG1tsWjRIjx8+BB+fn7YvHkzV1MnIiKiMjO5UAUAderUweeff/7cOl27dkXXrl2fW8fS0hJTpkzBlClT5OweERER1UAmN6eKiIiIyBgxVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQD86ruABERFc/MrPR/+xbWffY+Wq0IrVaUtV9EpM/kQ9XDhw/Ru3dvZGZmYs+ePfDy8pK27d69Gxs2bMCtW7fg4uKCqKgodOnSRef+arUac+fOxZEjR5Cfn4+XX34Z06dPR/369Q29K0REEkd7K2i1IpRK6zLf99n7aDRaPHiQw2BFVMlMPlStWrUKGo1Grzw2NhYzZszA2LFj0aFDB8TFxWH8+PHYvn07fHx8pHqTJk3CtWvX8PHHH8PKygpLly7FqFGjsHfvXpibm/zwEJGJsrO2gCAosHD7eaRnqsvdjlMDe0x+sw0EQSFLqBIEBQRBUeF2ePaMqiOTTg3Jycn4+uuvMWXKFMycOVNn27JlyxAWFoZJkyYBADp06IArV65g5cqVWL9+PQAgKSkJJ0+exMaNGxEUFAQAcHFxQWhoKA4dOoTQ0FCD7g8R0bPSM9VIzsiq6m4AeBKoHB1tynRJsjg8e0bVkUmHqtmzZ2PQoEFwcXHRKU9LS8P169fxr3/9S6c8NDQUCxYsQF5eHiwtLZGQkAClUonAwECpjqurKzw9PZGQkMBQRUT0FEFQwMxMMLqzZ0TGwmRDVXx8PK5cuYLly5fjt99+09mWkpICAHphy83NDfn5+UhLS4ObmxtSUlLg4uIChUL3VLarq6vURnmZmxf/l1xxk0lNjan3n6gmkeP1WtiGXGfPLCzMKtwvrVaEKFZdMKsu7+eGIPcYCYLiub9rq4JJhqrc3FzMmzcPUVFRsLOz09uelfXkxa5UKnXKC28XblepVLC3t9e7v4ODAy5dulTu/gmCArVr25ZYrzwTUImIysOY3m8KJ+Hb2dWqcFtarSjLHK+KMqbxrSnkOH7kZpKhavXq1ahbty5ee+21qu5KkbRaESpVTrHbzcwEKJXWUKlyodFoDdgzeRXuBxEZPzneb+R6zcs9Cb8q30ury/u5Icj9OyM7+xHy8/U/qFZeSqV1hc+mmVyoysjIwKZNm7By5Uqo1U9ejDk5OdK/Dx8+hIODA4AnyyXUq1dPuq9KpQIAabtSqcTt27f1HiMrK0uqU14FBSW/uDQabanqERFVlDG+38h1GdEY9s0Y+lDTaLWi0Y25yYWq9PR05OfnY/To0Xrbhg4ditatW2PRokUAnsytcnV1lbanpKTAwsICzs7OAJ7MnUpMTIQoijrzqlJTU+Hu7l7Je0JEZDhyzqkioqKZXKjy9PTE1q1bdcp+//13zJ07F7NmzYKXlxecnZ3RrFkzxMfHo1u3blK9uLg4BAQEwNLSEgAQHByMVatWITExER07dgTwJFBdvnwZb7/9tuF2ioioklRkEVEiKhuTC1VKpRL+/v5FbmvZsiVatmwJAJgwYQImT56MJk2awN/fH3Fxcbh48SK2bdsm1ff19UVQUBCmTZuGKVOmwMrKCkuWLIGHhwd69OhhkP0hIqpMcs1fAgC/5vUxNLSFTD0jqn5MLlSVVnh4OHJzc7F+/XqsW7cOLi4uWLFiBXx9fXXqLV26FHPnzkVMTAwKCgoQFBSE6dOnczV1IqpW5Ji/5FRf/9PWRPQ/1SI5+Pv7488//9QrHzBgAAYMGPDc+9rb22POnDmYM2dOZXWPiIiIagDOOiQiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcnAvKo7QFVDEBQQBEWF2jAzYyYnIiIqxFBVAwmCAo6ONgxFRFQtyPFeptWK0GpFGXpDNRlDVQ0kCAqYmQlYuP080jPV5W7Hr3l9DA1tIWPPiIhKz9HeClqtCKXSusJtaTRaPHiQw2BFFcJQVYOlZ6qRnJFV7vs71beTsTdERGVjZ20BQVBU+A9Epwb2mPxmGwiCgqGKKoShioiITFpF/0Akkgsn1RARERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMTC5UHTx4EOPGjUNwcDB8fHwQERGBPXv2QBR1Pwa7e/du9OzZE15eXujbty+OHz+u15Zarca0adPQvn17+Pr6YuLEifj7778NtStERERUjZhcqPryyy9hbW2N6OhorF69GsHBwZgxYwZWrlwp1YmNjcWMGTPQu3dvrF+/Hj4+Phg/fjz+/e9/67Q1adIknDp1Ch9//DEWLlyI1NRUjBo1CgUFBQbeKyIiIjJ1JrdO1erVq1GnTh3pdkBAAB48eIDNmzfjnXfegSAIWLZsGcLCwjBp0iQAQIcOHXDlyhWsXLkS69evBwAkJSXh5MmT2LhxI4KCggAALi4uCA0NxaFDhxAaGmrwfSMioqpTnq+7KbxP4b/8upuazeTOVD0dqAp5enoiOzsbOTk5SEtLw/Xr19G7d2+dOqGhoUhMTEReXh4AICEhAUqlEoGBgVIdV1dXeHp6IiEhoXJ3goiIjMbTX3dTu7ZtmX4KvyKn8L6OjjYV/rJ6Ml0md6aqKOfPn0eDBg1gZ2eH8+fPA3hy1ulpbm5uyM/PR1paGtzc3JCSkgIXFxcoFLoHv6urK1JSUgzWdyIiqlr8uhuSi8mHql9//RVxcXGYMmUKACAr68lXFSiVSp16hbcLt6tUKtjb2+u15+DggEuXLlW4X+bmxZ8EfPZ0saFV1eMSERkzub7uhu+xRZN7XARB8dzftVXBpEPV7du3ERUVBX9/fwwdOrSquyMRBAVq17YtsZ4c36xORETGhe/thmFnV6uqu6DHZEOVSqXCqFGj4OjoiOXLl0MQnqRVBwcHAE+WS6hXr55O/ae3K5VK3L59W6/drKwsqU55abUiVKqcYrebmQlQKq2hUuVCo9FW6LHKo/DxiYhIflX13m7s5P7dk539CPn5GtnaUyqtK3w2zSRD1aNHjzBmzBio1Wrs3LlT5zKeq6srACAlJUX6f+FtCwsLODs7S/USExMhiqLOvKrU1FS4u7tXuI8FBSW/oDQabanqERGR6eB7u2FotaLRjbNxXYwshYKCAkyaNAkpKSnYsGEDGjRooLPd2dkZzZo1Q3x8vE55XFwcAgICYGlpCQAIDg5GVlYWEhMTpTqpqam4fPkygoODK39HiIiIqFoxuTNVs2bNwvHjxxEdHY3s7GydBT1btGgBS0tLTJgwAZMnT0aTJk3g7++PuLg4XLx4Edu2bZPq+vr6IigoCNOmTcOUKVNgZWWFJUuWwMPDAz169KiCPSMiIiJTZnKh6tSpUwCAefPm6W07evQonJycEB4ejtzcXKxfvx7r1q2Di4sLVqxYAV9fX536S5cuxdy5cxETE4OCggIEBQVh+vTpMDc3uWEhIiKiKmZy6eHYsWOlqjdgwAAMGDDguXXs7e0xZ84czJkzR46uERERybJ0AFdmN00mF6qIiIiM0dMrs1eURqPFgwc5DFYmhqGKiIhIBlyZnRiqiIiIZCTXyuxkekxuSQUiIiIiY8RQRURERCQDXv4jIiKqpgRBAUFQlFyxBPw0YukwVBERERmhii7NoFAoYG9fS5YlHvhpxNJhqCIiIjIici7NAICfRjQghioiIiIjItfSDH7N62NoaAt+GtGAGKqIiIiMUEXDkFN9Oxl7Q6XBT/8RERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhlw8U8iIiIqUUW/Q1CO7yA0dgxVREREVCy5v4uwOmOoIiIiomLJ/V2E1RlDFREREZWI30VYsup/gZOIiIjIABiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioAycnJGD58OHx8fBAYGIgFCxYgLy+vqrtVJEFQwNxcqNCPmRmfdiIiIrnV+C9UzsrKwrBhw9CsWTMsX74cmZmZmDdvHh49eoSYmJiq7p4OQVDA0dGGoYiIiMgI1fhQtWPHDjx8+BArVqyAo6MjAECj0WDWrFkYM2YMGjRoULUdfIogKGBmJmDh9vNIz1SXux2/5vUxNLSFjD0jIiKiGh+qEhISEBAQIAUqAOjduzdmzpyJU6dO4dVXX626zhUjPVON5Iysct/fqb6djL0hIiIiAFCIoihWdSeqUkBAAF577TVMnjxZp/zll19GRESEXnlpiKIIrbb4YVUoAEEQoNVqUZbRL7zfA/VjFGi0Ze5XIStLM9jbWLIdtsN22I5J94nt1Mx2zM0EONpblfl3aEkEQQGFQlGhNmr8mSqVSgWlUqlX7uDggKys8p0NUigUMDMr+YkRhPLNjXK0tyrX/dgO22E7bMeY2mI7bKciyvs7tDIZX4+IiIiITFCND1VKpRJqtf6k76ysLDg4OFRBj4iIiMgU1fhQ5erqipSUFJ0ytVqNO3fuwNXVtYp6RURERKamxoeq4OBgnD59GiqVSiqLj4+HIAgIDAyswp4RERGRKanxn/7LyspCWFgYXFxcMGbMGGnxzz59+hjd4p9ERERkvGp8qAKefE3Np59+iqSkJNja2iIiIgJRUVGwtLSs6q4RERGRiWCoIiIiIpJBjZ9TRURERCQHhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUOVASUnJ2P48OHw8fFBYGAgFixYgLy8vKruVpW6ceMGYmJiEBERgRYtWiA8PLzIert370bPnj3h5eWFvn374vjx43p11Go1pk2bhvbt28PX1xcTJ07E33//rVfvwoULGDhwILy9vdGlSxesW7cOz64sIooi1q1bh86dO8Pb2xsDBw7Ev//9b722MjMzMWHCBPj6+qJ9+/b46KOPkJ2dXb7BMICDBw9i3LhxCA4Oho+PDyIiIrBnzx69/ed4y+fEiRMYMmQIOnTogFatWqFr166YO3eu3neOHjt2DH379oWXlxd69uyJvXv36rWVl5eH+fPnIzAwED4+Phg+fLje12wBpX+vkfN5NmYPHz5EcHAwPDw88N///ldnG491eXz77bfw8PDQ+1m4cKFOvWo/3iIZxIMHD8TAwEDxzTffFBMSEsTdu3eLbdq0EWfNmlXVXatShw8fFoODg8UJEyaI4eHhYlhYmF6dAwcOiB4eHuKSJUvExMREccaMGWKLFi3EpKQknXojRowQg4ODxdjYWPHIkSNieHi42LdvXzE/P1+qc/36ddHHx0d89913xdOnT4ubN28WW7ZsKW7YsEGnrbVr14otW7YUN2/eLJ4+fVp89913RV9fX/HmzZtSnby8PDE8PFwMDw8Xjx49KsbGxorBwcHi6NGj5R0kGb3++utiVFSUGBsbK54+fVpcuHCh2Lx5c3H58uVSHY63vL777jtx/vz5Ynx8vHjmzBnxq6++Etu3by8OHz5cqnPu3DnR09NTnDFjhpiYmCguWbJE9PDwEA8ePKjT1owZM8Q2bdqIu3fvFhMSEsQ33nhDfPnll0WVSiXVKe17jZzPs7FbsGCB2LFjR9Hd3V28ePGiVM5jXT579+4V3d3dxYSEBDEpKUn6uXXrllSnJow3Q5WBrFmzRvTx8RHv378vle3YsUP09PQUb9++XXUdq2IajUb6/5QpU4oMVT169BDff/99nbKBAweKb7/9tnT7woULoru7u/jzzz9LZcnJyaKHh4cYGxsrlc2YMUPs0qWL+PjxY6ls0aJFYtu2baWyR48eiX5+fuKiRYukOo8fPxa7dOkizpw5Uyrbv3+/6OHhISYnJ0tlP//8s+ju7i7+5z//KcswGMzdu3f1yqZPny76+flJzwXHu/Lt3LlTdHd3l177I0aMEAcOHKhT5/333xd79+4t3f7rr79ET09PcceOHVLZ/fv3RR8fH3HdunVSWWnfa+R8no3ZtWvXRB8fH/Gbb77RC1U81uVTGKqKeo8pVBPGm5f/DCQhIQEBAQFwdHSUynr37g2tVotTp05VXceqmCA8/xBMS0vD9evX0bt3b53y0NBQJCYmSpc0EhISoFQqdb4E29XVFZ6enkhISJDKEhIS0LVrV52vIAoNDYVKpUJSUhKAJ6eUs7OzdR7T0tIS3bt312vLw8MDrq6uUllgYCAcHR1x4sSJsgyDwdSpU0evzNPTE9nZ2cjJyeF4G0jh+0B+fj7y8vJw9uxZ9OrVS6dOaGgokpOTkZ6eDgA4efIktFqtTj1HR0cEBgbqjVNJ7zVyP8/GbPbs2Rg0aBBcXFx0ynmsG1ZNGW+GKgNJSUnRecIAQKlUol69ekXOiaAnCsfm2TdENzc35OfnIy0tTarn4uIChUKhU8/V1VVqIycnB3/99Zfe8+Dq6gqFQiHVK/z32Xpubm64desWHj16JNV7to5CoYCLi4tJPafnz59HgwYNYGdnx/GuRBqNBo8fP8Zvv/2GlStXIiQkBE5OTrh58yby8/OL3H8AOuNUt25dODg46NV7ev9L814j5/NszOLj43HlyhW8++67ett4rFeO8PBweHp6omvXrli7di00Gg2AmjPe5mWqTeWmUqmgVCr1yh0cHJCVlVUFPTINhWPz7NgV3i7crlKpYG9vr3d/BwcHXLp0CQCkicHPtmVpaQlra2udtiwtLWFlZaX3mKIoIisrC7Vq1XruY5rKc/rrr78iLi4OU6ZMAcDxrkxdunRBZmYmAODll1/GokWLAFR8zJVKpc7+l+a9Rs7n2Vjl5uZi3rx5iIqKgp2dnd52HuvyqlevHiZMmIDWrVtDoVDg2LFjWLp0KTIzMxETE1NjxpuhiqiGun37NqKiouDv74+hQ4dWdXeqvXXr1iE3NxfXrl3D6tWrMXbsWGzevLmqu1VtrV69GnXr1sVrr71W1V2pEV5++WW8/PLL0u2goCBYWVlhy5YtGDt2bBX2zLB4+c9AlEql3keogSfp/NnT+fQ/hWPz7NipVCqd7UqlssiPvz49voV/iTzbVl5eHnJzc3XaysvLw+PHj/UeU6FQlOkxjZVKpcKoUaPg6OiI5cuXS3PbON6Vp3nz5vD19cWAAQOwatUqnD17FocPH67wmKtUKp39L817jZzPszHKyMjApk2bMHHiRKjVaqhUKuTk5AB4cuno4cOHPNYNoHfv3tBoNPj9999rzHgzVBlIUXMQ1Go17ty5o3ctl/6ncGyeHbuUlBRYWFjA2dlZqpeamqq3RklqaqrUho2NDV588UW9tgrvV1iv8N/U1FS9x2zUqBFq1aol1Xu2LVEUdR7TGD169AhjxoyBWq3Ghg0bdE57c7wNw8PDAxYWFrh58yaaNGkCCwuLIsccgM44/fPPP3qXI56dD1Ka9xo5n2djlJ6ejvz8fIwePRrt2rVDu3btpLMlQ4cOxfDhw3msG1hNGW+GKgMJDg7G6dOnpVQOPJlEKQiCzqccSJezszOaNWuG+Ph4nfK4uDgEBARIn/wIDg5GVlYWEhMTpTqpqam4fPkygoODpbLg4GAcPXoU+fn5Om0plUr4+voCAPz8/GBnZ4eDBw9KdfLz83Ho0CG9tv744w9cv35dKktMTMSDBw/QqVMneQZAZgUFBZg0aRJSUlKwYcMGNGjQQGc7x9sw/vOf/yA/Px9OTk6wtLSEv78/fvzxR506cXFxcHNzg5OTE4Anl1MEQcChQ4ekOllZWTh58qTeOJX0XiP382xsPD09sXXrVp2fqVOnAgBmzZqFmTNn8lg3gLi4OJiZmaFFixY1Z7zLtAADlVvhgnxDhgwRf/75Z3HPnj1i27Zta/zinzk5OeLBgwfFgwcPikOGDBE7deok3S5c76RwDZEvvvhCPHPmjBgTEyO2aNFCvHDhgk5bI0aMEDt16iTGxcWJR48efe6CcRMmTBBPnz4tfvnll8UuGNeqVSvxyy+/FE+fPi1OmDDhuQvGHTt2TIyNjRU7depk1Av0TZ8+XXR3dxc3bdqks0BfUlKStLYLx1te7777rrh69Wrx2LFj4unTp8VNmzaJgYGBYp8+faQxL1z8c+bMmeKZM2fEL774QvTw8BDj4uJ02poxY4bYtm1bcc+ePeLPP/8sDhkypNjFP0t6r5HzeTYFZ86c0Vunise6fEaMGCGuXbtW/Omnn8SffvpJnDFjhujh4SF+9tlnUp2aMN4MVQZ07do1cdiwYaK3t7cYEBAgzps3T2fhspooLS1NdHd3L/LnzJkzUr1du3aJ3bt3F1u2bCkd+M9SqVTi1KlTxbZt24o+Pj7i+PHji1xY9fz58+KAAQPEVq1aicHBweLatWtFrVarU0er1Ypr1qwRg4ODxVatWokDBgzQe+GLoijevn1bHD9+vOjj4yO2bdtWnDp1qqhWq2UYmcrRpUuXYsc7LS1Nqsfxls/atWvFiIgI0dfXV/Tx8RHDwsLEpUuX6vW7cOXoli1bit27dxd3796t19bjx4/FefPmiQEBAaK3t7f41ltvideuXdOrV9r3GjmfZ2NXVKgSRR7rcvn000/FHj16iN7e3mKrVq3E8PBwccuWLXr7X93HWyGKz1y4JCIiIqIy45wqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiqlQhISGIjo6Wbp89exYeHh44e/ZsFfaKSis9PR0eHh749ttvq7orREaPoYqoBvj222/h4eEBDw8P/Prrr3rbRVFEp06d4OHhgTFjxlRBDw0jMjIS4eHhRW4rDA8bN240cK/kM3bsWLRu3RrZ2dnF1vnggw/QqlUr3L9/34A9I6oZGKqIahArKyscOHBAr/yXX37B7du3pW+Kr0zt2rXDxYsX0a5du0p/rJqmb9++ePToEY4cOVLk9tzcXBw7dgxBQUGoXbu2gXtHVP0xVBHVIJ06dUJ8fDwKCgp0yg8cOICWLVuiXr16ld4HQRBgZWUFQeDbj9xCQkJga2uL/fv3F7n96NGjyMnJQd++fQ3cM6Kage9qRDVIWFgYHjx4gFOnTklleXl5+PHHH9GnT58i76PVavHll18iLCwMXl5e6NixI2JiYpCVlaVTTxRFrFq1CsHBwWjdujUiIyNx9epVvfaKmlP166+/YuLEiejcuTNatWqFTp06Yc6cOXj06JHOfaOjo+Hr64vMzEy888478PX1RYcOHTB//nxoNJqKDE2x0tLSMHHiRLRv3x6tW7fG66+/jp9++kmnTuHl1fT09BL39fr165gwYQICAwPh5eWF4OBgREVFQa1W69z3+++/x6uvvgpvb2+0b98eUVFR+Ouvv57b11q1aqFHjx44c+YM7t69q7f9wIEDsLW1RUhICB48eID58+ejT58+8PX1hZ+fH95++2388ccfJY5JZGQkIiMj9cqjo6MREhKiU1ba44eoOjCv6g4QkeE0btwYPj4+iI2NRadOnQAACQkJUKvVCA0NxVdffaV3n5iYGOzbtw+vvvoqIiMjkZ6eju3bt+Py5cv45ptvYGFhAQD44osvsHr1anTq1AmdOnXCb7/9hhEjRiA/P7/EfsXHx+PRo0cYPHgwHB0dcfHiRWzbtg23b9/GsmXLdOpqNBqMHDkS3t7e+PDDD5GYmIhNmzbB2dkZb7zxRomPpdFocO/ePb1ylUqlV/bPP/9g0KBByM3NRWRkJGrXro19+/Zh3LhxWLZsGbp3717i4z0tLy8PI0eORF5eHoYMGYIXXngBmZmZ+Omnn6BSqWBvbw8AWL16Nb744gv07t0b/fv3x71797Bt2za8+eab+O6776BUKot9jD59+mDfvn04ePAghgwZIpU/ePAAJ0+eRFhYGGrVqoWrV6/iyJEj6NWrF5ycnPDPP/9g586dGDJkCGJjY9GgQYMy7VtxSnv8EFUHDFVENUyfPn2waNEiPHr0CLVq1cL+/fvRrl27In+J/vrrr9i9ezcWLlyocybL398fb7/9NuLj49GnTx/cu3cPGzZsQOfOnbFmzRooFAoAwJIlS7BmzZoS+zR58mTUqlVLuj1w4EA0bdoUixcvxq1bt9CoUSNp2+PHj9G7d2+8++67AIDBgwejX79+2LNnT6lCVUpKCgICAkqsBwDr1q3DP//8g+3bt6Nt27YAgAEDBqBv376YO3cuunbtWqbLmMnJyUhPT8cXX3yBXr16SeXjx4+X/p+RkYHly5dj0qRJGDt2rFTeo0cP9OvXD19//bVO+bM6dOiAevXq4cCBAzqhKj4+Hvn5+dLz6OHhgR9//FGn/xEREejduzf27NkjjW9FlPb4IaouePmPqIbp3bs3Hj9+jOPHjyM7Oxs//fRTsb/Y4uPjYW9vj8DAQNy7d0/6admyJWxsbKTLWqdPn0Z+fj6GDBkiBSoAGDZsWKn69HSgysnJwb179+Dr6wtRFHH58mW9+oMHD9a53aZNG71Lb8Vp3LgxNm/erPfz+eef69U9ceIEvL29pUAFALa2thg4cCAyMjJw7dq1Uj1mITs7OwDAyZMnkZubW2Sdw4cPQ6vVonfv3jpj/sILL6Bp06YlLkVhZmaGsLAwJCUl6YzJgQMH8MILL0iB0tLSUgpUGo0G9+/fh42NDVxcXIoc8/Io7fFDVF3wTBVRDVOnTh0EBATgwIEDePToETQaDXr27Flk3Rs3bkCtVhd7Zqdw3s6tW7cAAM2aNdN7LAcHhxL7dOvWLSxbtgzHjh3Tm2vz7PIAVlZWqFOnjk6Zg4NDqefo2NjYoGPHjnrlRYWyW7duoXXr1nrlrq6u0nZ3d/dSPS4AODs7Y/jw4di8eTP279+Ptm3bIiQkBH379pUu/V2/fh2iKKJHjx5FtmFuXvLbdp8+ffDll1/iwIEDGDt2LG7fvo1ff/0VkZGRMDMzA/BkrtPWrVvx9ddfIz09XWdOmqOjY6n36XlKe/wQVRcMVUQ1UHh4OGbMmIF//vkHwcHBxc7R0Wq1qFu3LhYuXFjk9mfDTXloNBoMHz4cWVlZePvtt+Hq6gobGxtkZmYiOjoaWq1Wp35hKDAmT5+de9qzfQeeTObu168fjh49ilOnTmH27NlYu3Ytdu3ahYYNG0Kr1UKhUGD9+vVF7quNjU2J/WnVqhVcXV0RGxuLsWPH4sCBAxBFUeeM5Jo1a/DFF1/gtddew3vvvQcHBwcIgoA5c+ZAFMUy7P3/PPthAUMcP0TGhKGKqAbq3r07Zs6ciX//+99YsmRJsfWaNGmCxMRE+Pn56Vyie1bhnKfr16/D2dlZKr93716JZ5CuXLmC69evY/78+XjllVek8qc/oVhVGjVqhNTUVL3ylJQUaTsAKZQ++wm+jIyMItstXIj1nXfewYULFzB48GB88803iIqKQpMmTSCKIpycnODi4lLuvvfp0wdffPEF/vjjDxw4cADNmjWDt7e3tP3HH3+Ev78/5syZo3M/lUpV4hpWDg4OSEtL0ysvPGNZqLTHD1F1wTlVRDWQra0tPv74Y0yYMEHvI/BP6927NzQaDVatWqW3raCgQPrEXMeOHWFhYYFt27bpnOXYsmVLiX0pnNfz9P1EUcTWrVtLvT+VpVOnTrh48SKSkpKkspycHOzatQuNGzfGSy+9BOBJeACAc+fOSfU0Gg127dql0152drbeGmHu7u4QBAF5eXkAnkxINzMzw4oVK/TOGImiWOqV0AvPSi1btgy///673rw5MzMzvfYPHjyIzMzMEtt2dnZGSkqKzqco//jjD1y4cEGnXmmPH6LqgmeqiGqofv36lVinffv2GDhwINauXYvff/8dgYGBsLCwwPXr1xEfH4+PPvoIvXr1Qp06dTBixAisXbsWY8aMQadOnXD58mUkJCSUeNbD1dUVTZo0wfz585GZmQk7Ozv8+OOPRvELd/To0YiNjcWoUaMQGRkJBwcHfPfdd0hPT8fy5culQPh///d/8PHxweLFi5GVlQUHBwfExcXpBagzZ87gk08+Qa9evdCsWTNoNBp8//33MDMzk+a1NWnSBJMmTcKiRYuQkZGBbt26wdbWFunp6Thy5Ahef/11jBw5ssS+Ozs7w9fXF0ePHgUAvVDVuXNnrFy5ElOnToWvry+uXLmC/fv365xpLE7//v3x5ZdfYuTIkejfvz/u3r2LHTt24KWXXsLDhw+leqU9foiqC4YqInquTz75BK1atcKOHTuwZMkSmJmZoXHjxujbty/8/PykepMmTYKlpSV27NiBs2fPwtvbG5s2bSrxuwQtLCywZs0aaW6RlZUVunfvjjfffBMRERGVvXvP9cILL2DHjh34/PPPsW3bNjx+/BgeHh5Ys2YNOnfurFN34cKFiImJwbp166BUKtG/f3/4+/tj+PDhUh0PDw8EBQXh+PHjyMzMhLW1NTw8PLB+/Xr4+PhI9UaPHo1mzZrhyy+/xMqVKwEADRs2RGBg4HPPLD6rT58+SEpKgre3N5o2baqzbezYscjNzcX+/fsRFxeHFi1aYO3atVi0aFGJ7bq5uWH+/PlYtmwZ5s6di5deegkLFizAgQMH8Msvv+jULe3xQ1QdKMTyzkgkIiIiIgnnVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSwf8D1cmtZYE+aQ4AAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Now plot the histogram of households"
],
"metadata": {
"id": "bvlccAicZuTt"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Reading SQL Databases and more Pandas"
],
"metadata": {
"id": "Gbp5VFdgOSkF"
}
},
{
"cell_type": "code",
"source": [
"# This downloads the bible database file from https://github.com/godlytalias/Bible-Database/\n",
"!wget https://github.com/godlytalias/Bible-Database/raw/refs/heads/master/English/holybible.db"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PkK1-aQzN5zd",
"outputId": "154e5d16-3baa-4969-ef1f-34839cd55de1"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"--2024-09-24 23:29:35-- https://github.com/godlytalias/Bible-Database/raw/refs/heads/master/English/holybible.db\n",
"Resolving github.com (github.com)... 140.82.116.3\n",
"Connecting to github.com (github.com)|140.82.116.3|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://raw.githubusercontent.com/godlytalias/Bible-Database/refs/heads/master/English/holybible.db [following]\n",
"--2024-09-24 23:29:35-- https://raw.githubusercontent.com/godlytalias/Bible-Database/refs/heads/master/English/holybible.db\n",
"Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n",
"Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 5089280 (4.9M) [application/octet-stream]\n",
"Saving to: ‘holybible.db’\n",
"\n",
"holybible.db 100%[===================>] 4.85M --.-KB/s in 0.06s \n",
"\n",
"2024-09-24 23:29:35 (83.5 MB/s) - ‘holybible.db’ saved [5089280/5089280]\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "YMhJ6huBNPGW"
},
"outputs": [],
"source": [
"import sqlite3\n",
"import pandas as pd\n",
"\n",
"path = \"holybible.db\"\n",
"db = sqlite3.connect(path)"
]
},
{
"cell_type": "code",
"source": [
"# query the first 100 verses\n",
"query = \"\"\"\n",
" SELECT * FROM bible limit 100\n",
"\"\"\"\n",
"data = pd.read_sql_query(query, db)\n",
"data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "83Yov0oMOL_Y",
"outputId": "562df8b8-5028-456a-e83f-1ff3a0976d81"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Book Chapter Versecount \\\n",
"0 0 1 1 \n",
"1 0 1 2 \n",
"2 0 1 3 \n",
"3 0 1 4 \n",
"4 0 1 5 \n",
".. ... ... ... \n",
"95 0 4 16 \n",
"96 0 4 17 \n",
"97 0 4 18 \n",
"98 0 4 19 \n",
"99 0 4 20 \n",
"\n",
" verse \n",
"0 In the beginning God created the heaven and th... \n",
"1 And the earth was without form, and void; and ... \n",
"2 And God said, Let there be light: and there wa... \n",
"3 And God saw the light, that it was good: and G... \n",
"4 And God called the light Day, and the darkness... \n",
".. ... \n",
"95 And Cain went out from the presence of the LOR... \n",
"96 And Cain knew his wife; and she conceived, and... \n",
"97 And unto Enoch was born Irad: and Irad brings ... \n",
"98 And Lamech took unto him two wives: the name o... \n",
"99 And Adah bare Jabal: he was the father of such... \n",
"\n",
"[100 rows x 4 columns]"
],
"text/html": [
"\n",
" <div id=\"df-cb0d45b5-a6b6-4fab-be9c-93a8a3fd6b22\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Book</th>\n",
" <th>Chapter</th>\n",
" <th>Versecount</th>\n",
" <th>verse</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>In the beginning God created the heaven and th...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>And the earth was without form, and void; and ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>And God said, Let there be light: and there wa...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>And God saw the light, that it was good: and G...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>And God called the light Day, and the darkness...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>16</td>\n",
" <td>And Cain went out from the presence of the LOR...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>17</td>\n",
" <td>And Cain knew his wife; and she conceived, and...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>18</td>\n",
" <td>And unto Enoch was born Irad: and Irad brings ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>19</td>\n",
" <td>And Lamech took unto him two wives: the name o...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>20</td>\n",
" <td>And Adah bare Jabal: he was the father of such...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 4 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-cb0d45b5-a6b6-4fab-be9c-93a8a3fd6b22')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-cb0d45b5-a6b6-4fab-be9c-93a8a3fd6b22 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-cb0d45b5-a6b6-4fab-be9c-93a8a3fd6b22');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-110bf0cf-081a-443f-be34-e1a179d448bb\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-110bf0cf-081a-443f-be34-e1a179d448bb')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-110bf0cf-081a-443f-be34-e1a179d448bb button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" <div id=\"id_a3a14fbd-2f93-42e4-91cd-880f075978f0\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_a3a14fbd-2f93-42e4-91cd-880f075978f0 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "data",
"summary": "{\n \"name\": \"data\",\n \"rows\": 100,\n \"fields\": [\n {\n \"column\": \"Book\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Chapter\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": 1,\n \"max\": 4,\n \"num_unique_values\": 4,\n \"samples\": [\n 2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Versecount\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 7,\n \"min\": 1,\n \"max\": 31,\n \"num_unique_values\": 31,\n \"samples\": [\n 28\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"verse\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 100,\n \"samples\": [\n \"And Abel, he also brought of the firstlings of his flock and of the fat thereof. And the LORD had respect unto Abel and to his offering:\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 47
}
]
},
{
"cell_type": "code",
"source": [
"# query the first 100 verses, only the verses\n",
"query = \"\"\"\n",
" SELECT verse FROM bible limit 100\n",
"\"\"\"\n",
"data = pd.read_sql_query(query, db)\n",
"data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "vLkdUL2_X7ic",
"outputId": "68f76c95-c854-4d85-b837-1150c74317eb"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" verse\n",
"0 In the beginning God created the heaven and th...\n",
"1 And the earth was without form, and void; and ...\n",
"2 And God said, Let there be light: and there wa...\n",
"3 And God saw the light, that it was good: and G...\n",
"4 And God called the light Day, and the darkness...\n",
".. ...\n",
"95 And Cain went out from the presence of the LOR...\n",
"96 And Cain knew his wife; and she conceived, and...\n",
"97 And unto Enoch was born Irad: and Irad brings ...\n",
"98 And Lamech took unto him two wives: the name o...\n",
"99 And Adah bare Jabal: he was the father of such...\n",
"\n",
"[100 rows x 1 columns]"
],
"text/html": [
"\n",
" <div id=\"df-77d630b6-6367-430f-8292-da1d17620890\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>verse</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>In the beginning God created the heaven and th...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>And the earth was without form, and void; and ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>And God said, Let there be light: and there wa...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>And God saw the light, that it was good: and G...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>And God called the light Day, and the darkness...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>And Cain went out from the presence of the LOR...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>And Cain knew his wife; and she conceived, and...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>And unto Enoch was born Irad: and Irad brings ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>And Lamech took unto him two wives: the name o...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>And Adah bare Jabal: he was the father of such...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 1 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-77d630b6-6367-430f-8292-da1d17620890')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-77d630b6-6367-430f-8292-da1d17620890 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-77d630b6-6367-430f-8292-da1d17620890');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-03007711-64e1-45ad-a22b-93a3d81a97ab\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-03007711-64e1-45ad-a22b-93a3d81a97ab')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-03007711-64e1-45ad-a22b-93a3d81a97ab button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" <div id=\"id_fe10de9a-8db3-4e38-8403-007d918a9542\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_fe10de9a-8db3-4e38-8403-007d918a9542 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "data",
"summary": "{\n \"name\": \"data\",\n \"rows\": 100,\n \"fields\": [\n {\n \"column\": \"verse\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 100,\n \"samples\": [\n \"And Abel, he also brought of the firstlings of his flock and of the fat thereof. And the LORD had respect unto Abel and to his offering:\",\n \"And Adam said, This is now bone of my bones, and flesh of my flesh: she shall be called Woman, because she was taken out of Man.\",\n \"And I will put enmity between you and the woman, and between your seed and her seed; it shall bruise your head, and you shall bruise his heel.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 49
}
]
},
{
"cell_type": "code",
"source": [
"# query only verses from genesis\n",
"query = \"\"\"\n",
" SELECT * FROM bible\n",
" WHERE book = 0\n",
"\"\"\"\n",
"data = pd.read_sql_query(query, db)\n",
"data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "6xiJqrK0XxrM",
"outputId": "66890154-9bcf-4f37-b477-787277d6ae71"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Book Chapter Versecount \\\n",
"0 0 1 1 \n",
"1 0 1 2 \n",
"2 0 1 3 \n",
"3 0 1 4 \n",
"4 0 1 5 \n",
"... ... ... ... \n",
"1528 0 50 22 \n",
"1529 0 50 23 \n",
"1530 0 50 24 \n",
"1531 0 50 25 \n",
"1532 0 50 26 \n",
"\n",
" verse \n",
"0 In the beginning God created the heaven and th... \n",
"1 And the earth was without form, and void; and ... \n",
"2 And God said, Let there be light: and there wa... \n",
"3 And God saw the light, that it was good: and G... \n",
"4 And God called the light Day, and the darkness... \n",
"... ... \n",
"1528 And Joseph dwelt in Egypt, he, and his father'... \n",
"1529 And Joseph saw Ephraim's children of the third... \n",
"1530 And Joseph said unto his brethren, I die: and ... \n",
"1531 And Joseph took an oath of the children of Isr... \n",
"1532 So Joseph died, being an hundred and ten years... \n",
"\n",
"[1533 rows x 4 columns]"
],
"text/html": [
"\n",
" <div id=\"df-81fc1a45-fe3b-416e-af81-ee002c72c4e7\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Book</th>\n",
" <th>Chapter</th>\n",
" <th>Versecount</th>\n",
" <th>verse</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>In the beginning God created the heaven and th...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>And the earth was without form, and void; and ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>And God said, Let there be light: and there wa...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>And God saw the light, that it was good: and G...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>And God called the light Day, and the darkness...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1528</th>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" <td>22</td>\n",
" <td>And Joseph dwelt in Egypt, he, and his father'...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1529</th>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" <td>23</td>\n",
" <td>And Joseph saw Ephraim's children of the third...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1530</th>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" <td>24</td>\n",
" <td>And Joseph said unto his brethren, I die: and ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1531</th>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" <td>25</td>\n",
" <td>And Joseph took an oath of the children of Isr...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1532</th>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" <td>26</td>\n",
" <td>So Joseph died, being an hundred and ten years...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1533 rows × 4 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-81fc1a45-fe3b-416e-af81-ee002c72c4e7')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-81fc1a45-fe3b-416e-af81-ee002c72c4e7 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-81fc1a45-fe3b-416e-af81-ee002c72c4e7');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-83f19226-46e9-4f5d-b212-54775414f5dd\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-83f19226-46e9-4f5d-b212-54775414f5dd')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-83f19226-46e9-4f5d-b212-54775414f5dd button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" <div id=\"id_922e55b4-f7f5-4ab9-be68-d2465ff91582\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_922e55b4-f7f5-4ab9-be68-d2465ff91582 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "data",
"summary": "{\n \"name\": \"data\",\n \"rows\": 1533,\n \"fields\": [\n {\n \"column\": \"Book\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Chapter\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 13,\n \"min\": 1,\n \"max\": 50,\n \"num_unique_values\": 50,\n \"samples\": [\n 14\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Versecount\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 11,\n \"min\": 1,\n \"max\": 67,\n \"num_unique_values\": 67,\n \"samples\": [\n 37\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"verse\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 1533,\n \"samples\": [\n \"I will pass through all your flock to day, removing from thence all the speckled and spotted cattle, and all the brown cattle among the sheep, and the spotted and speckled among the goats: and of such shall be my hire.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 50
}
]
},
{
"cell_type": "code",
"source": [
"# query only the first verse from each book\n",
"query = \"\"\"\n",
"\n",
"\n",
"\"\"\"\n",
"data = pd.read_sql_query(query, db)\n",
"data"
],
"metadata": {
"id": "QEXr_vT1YHMS"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# Get the unique values in the Book column\n",
"query = \"\"\"\n",
" SELECT DISTINCT(Chapter) FROM bible\n",
"\"\"\"\n",
"data = pd.read_sql_query(query, db)\n",
"data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "nmt5IYVwYPwe",
"outputId": "4891b3eb-c442-4f50-d25f-75aa6fb62262"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Chapter\n",
"0 1\n",
"1 2\n",
"2 3\n",
"3 4\n",
"4 5\n",
".. ...\n",
"145 146\n",
"146 147\n",
"147 148\n",
"148 149\n",
"149 150\n",
"\n",
"[150 rows x 1 columns]"
],
"text/html": [
"\n",
" <div id=\"df-28586c35-2628-4a40-a72e-458ff116e997\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Chapter</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>145</th>\n",
" <td>146</td>\n",
" </tr>\n",
" <tr>\n",
" <th>146</th>\n",
" <td>147</td>\n",
" </tr>\n",
" <tr>\n",
" <th>147</th>\n",
" <td>148</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>149</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>150</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>150 rows × 1 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-28586c35-2628-4a40-a72e-458ff116e997')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-28586c35-2628-4a40-a72e-458ff116e997 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-28586c35-2628-4a40-a72e-458ff116e997');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-8d6441bb-8b0f-47a8-b77f-3d7c16ec928b\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-8d6441bb-8b0f-47a8-b77f-3d7c16ec928b')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-8d6441bb-8b0f-47a8-b77f-3d7c16ec928b button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" <div id=\"id_97e08565-296f-4be6-9ea4-d4581c407940\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_97e08565-296f-4be6-9ea4-d4581c407940 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "data",
"summary": "{\n \"name\": \"data\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"Chapter\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 43,\n \"min\": 1,\n \"max\": 150,\n \"num_unique_values\": 150,\n \"samples\": [\n 74,\n 19,\n 119\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 51
}
]
},
{
"cell_type": "code",
"source": [
"# Count how many total verses there are in the bible\n",
"query = \"\"\"\n",
" SELECT COUNT(*) FROM bible\n",
"\"\"\"\n",
"data = pd.read_sql_query(query, db)\n",
"data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 89
},
"id": "QqvIdW3PYZOd",
"outputId": "3c4695eb-178b-4769-be18-de81fc71bcbc"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" COUNT(*)\n",
"0 31102"
],
"text/html": [
"\n",
" <div id=\"df-99c10615-3376-4236-a152-ef73a4b749fe\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>COUNT(*)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>31102</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-99c10615-3376-4236-a152-ef73a4b749fe')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-99c10615-3376-4236-a152-ef73a4b749fe button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-99c10615-3376-4236-a152-ef73a4b749fe');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"id_79915e00-dd7b-4a5f-8364-389d84e4f245\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_79915e00-dd7b-4a5f-8364-389d84e4f245 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "data",
"summary": "{\n \"name\": \"data\",\n \"rows\": 1,\n \"fields\": [\n {\n \"column\": \"COUNT(*)\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 31102,\n \"max\": 31102,\n \"num_unique_values\": 1,\n \"samples\": [\n 31102\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 52
}
]
},
{
"cell_type": "code",
"source": [
"# Count how many unique books there are in the bible\n",
"query = \"\"\"\n",
" SELECT COUNT(DISTINCT(Book)) FROM bible\n",
"\"\"\"\n",
"data = pd.read_sql_query(query, db)\n",
"data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 89
},
"id": "BjItvjYlYvh1",
"outputId": "14d2dfb6-9fdc-4041-c23d-4e0314d02791"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" COUNT(DISTINCT(Book))\n",
"0 66"
],
"text/html": [
"\n",
" <div id=\"df-9ecbd251-d868-485a-8679-26c662f02c2f\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>COUNT(DISTINCT(Book))</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>66</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9ecbd251-d868-485a-8679-26c662f02c2f')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-9ecbd251-d868-485a-8679-26c662f02c2f button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-9ecbd251-d868-485a-8679-26c662f02c2f');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"id_db66d8b1-7d30-42ee-9838-eca4f48fd6b4\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_db66d8b1-7d30-42ee-9838-eca4f48fd6b4 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "data",
"summary": "{\n \"name\": \"data\",\n \"rows\": 1,\n \"fields\": [\n {\n \"column\": \"COUNT(DISTINCT(Book))\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 66,\n \"max\": 66,\n \"num_unique_values\": 1,\n \"samples\": [\n 66\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 53
}
]
},
{
"cell_type": "markdown",
"source": [
"## Parallel Processing with `multiprocessing`"
],
"metadata": {
"id": "Gj9gwixdOMzv"
}
},
{
"cell_type": "code",
"source": [
"!wget https://huggingface.co/datasets/eugenesiow/BSD100/resolve/main/data/BSD100_HR.tar.gz\n",
"!tar -xvf BSD100_HR.tar.gz\n",
"!rm BSD100_HR.tar.gz"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"collapsed": true,
"id": "aQK06V0-NW6k",
"outputId": "8711fe80-0164-4100-caf4-c06ccbf4b705"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"--2024-09-24 23:00:11-- https://huggingface.co/datasets/eugenesiow/BSD100/resolve/main/data/BSD100_HR.tar.gz\n",
"Resolving huggingface.co (huggingface.co)... 3.163.189.90, 3.163.189.114, 3.163.189.74, ...\n",
"Connecting to huggingface.co (huggingface.co)|3.163.189.90|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://cdn-lfs.huggingface.co/datasets/eugenesiow/BSD100/333495ccded04a0db52b33361140821ea7e0d8af8dfb54b58df79a00010858d6?response-content-disposition=inline%3B+filename*%3DUTF-8%27%27BSD100_HR.tar.gz%3B+filename%3D%22BSD100_HR.tar.gz%22%3B&response-content-type=application%2Fgzip&Expires=1727478011&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTcyNzQ3ODAxMX19LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy5odWdnaW5nZmFjZS5jby9kYXRhc2V0cy9ldWdlbmVzaW93L0JTRDEwMC8zMzM0OTVjY2RlZDA0YTBkYjUyYjMzMzYxMTQwODIxZWE3ZTBkOGFmOGRmYjU0YjU4ZGY3OWEwMDAxMDg1OGQ2P3Jlc3BvbnNlLWNvbnRlbnQtZGlzcG9zaXRpb249KiZyZXNwb25zZS1jb250ZW50LXR5cGU9KiJ9XX0_&Signature=gTSSE2IejPFo2QpzuydUCX2eYYcFfRjXPRdCk3XW49kR0KJzKYcyoZrzI09cFz79E9vCgrGM5Ho8nNStdoOSBFMrWBowg6D3BM5%7EZLCXOGWX0annuyQu7SlTpYMraCASXSYki4gknVvnE60J-zyLEmxEq3N-rtApRmnHuZTwXt317Cgy%7ERG2Wsp3BreuPTHUDqfrhD9CXoiB5V0B65nUoGG7Bg2VW1a7fNf1R53h9ttoQ3uK-KO1FMz4vS22O82Vk9HyVICB6p1UNgSZFm-drYLoaiZxUgzWIqOH5TdEclnAbgKyQBjRS1LPWYbg8OmkrGVVczc30fqWK32QN3j39Q__&Key-Pair-Id=K3ESJI6DHPFC7 [following]\n",
"--2024-09-24 23:00:11-- https://cdn-lfs.huggingface.co/datasets/eugenesiow/BSD100/333495ccded04a0db52b33361140821ea7e0d8af8dfb54b58df79a00010858d6?response-content-disposition=inline%3B+filename*%3DUTF-8%27%27BSD100_HR.tar.gz%3B+filename%3D%22BSD100_HR.tar.gz%22%3B&response-content-type=application%2Fgzip&Expires=1727478011&Policy=eyJTdGF0ZW1lbnQiOlt7IkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTcyNzQ3ODAxMX19LCJSZXNvdXJjZSI6Imh0dHBzOi8vY2RuLWxmcy5odWdnaW5nZmFjZS5jby9kYXRhc2V0cy9ldWdlbmVzaW93L0JTRDEwMC8zMzM0OTVjY2RlZDA0YTBkYjUyYjMzMzYxMTQwODIxZWE3ZTBkOGFmOGRmYjU0YjU4ZGY3OWEwMDAxMDg1OGQ2P3Jlc3BvbnNlLWNvbnRlbnQtZGlzcG9zaXRpb249KiZyZXNwb25zZS1jb250ZW50LXR5cGU9KiJ9XX0_&Signature=gTSSE2IejPFo2QpzuydUCX2eYYcFfRjXPRdCk3XW49kR0KJzKYcyoZrzI09cFz79E9vCgrGM5Ho8nNStdoOSBFMrWBowg6D3BM5%7EZLCXOGWX0annuyQu7SlTpYMraCASXSYki4gknVvnE60J-zyLEmxEq3N-rtApRmnHuZTwXt317Cgy%7ERG2Wsp3BreuPTHUDqfrhD9CXoiB5V0B65nUoGG7Bg2VW1a7fNf1R53h9ttoQ3uK-KO1FMz4vS22O82Vk9HyVICB6p1UNgSZFm-drYLoaiZxUgzWIqOH5TdEclnAbgKyQBjRS1LPWYbg8OmkrGVVczc30fqWK32QN3j39Q__&Key-Pair-Id=K3ESJI6DHPFC7\n",
"Resolving cdn-lfs.huggingface.co (cdn-lfs.huggingface.co)... 108.138.94.23, 108.138.94.122, 108.138.94.14, ...\n",
"Connecting to cdn-lfs.huggingface.co (cdn-lfs.huggingface.co)|108.138.94.23|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 27186832 (26M) [application/gzip]\n",
"Saving to: ‘BSD100_HR.tar.gz.1’\n",
"\n",
"BSD100_HR.tar.gz.1 100%[===================>] 25.93M 97.3MB/s in 0.3s \n",
"\n",
"2024-09-24 23:00:12 (97.3 MB/s) - ‘BSD100_HR.tar.gz.1’ saved [27186832/27186832]\n",
"\n",
"BSD100_HR/\n",
"BSD100_HR/101085.png\n",
"BSD100_HR/101087.png\n",
"BSD100_HR/102061.png\n",
"BSD100_HR/103070.png\n",
"BSD100_HR/105025.png\n",
"BSD100_HR/106024.png\n",
"BSD100_HR/108005.png\n",
"BSD100_HR/108070.png\n",
"BSD100_HR/108082.png\n",
"BSD100_HR/109053.png\n",
"BSD100_HR/119082.png\n",
"BSD100_HR/12084.png\n",
"BSD100_HR/123074.png\n",
"BSD100_HR/126007.png\n",
"BSD100_HR/130026.png\n",
"BSD100_HR/134035.png\n",
"BSD100_HR/14037.png\n",
"BSD100_HR/143090.png\n",
"BSD100_HR/145086.png\n",
"BSD100_HR/147091.png\n",
"BSD100_HR/148026.png\n",
"BSD100_HR/148089.png\n",
"BSD100_HR/156065.png\n",
"BSD100_HR/157055.png\n",
"BSD100_HR/159008.png\n",
"BSD100_HR/160068.png\n",
"BSD100_HR/16077.png\n",
"BSD100_HR/163085.png\n",
"BSD100_HR/167062.png\n",
"BSD100_HR/167083.png\n",
"BSD100_HR/170057.png\n",
"BSD100_HR/175032.png\n",
"BSD100_HR/175043.png\n",
"BSD100_HR/182053.png\n",
"BSD100_HR/189080.png\n",
"BSD100_HR/19021.png\n",
"BSD100_HR/196073.png\n",
"BSD100_HR/197017.png\n",
"BSD100_HR/208001.png\n",
"BSD100_HR/210088.png\n",
"BSD100_HR/21077.png\n",
"BSD100_HR/216081.png\n",
"BSD100_HR/219090.png\n",
"BSD100_HR/220075.png\n",
"BSD100_HR/223061.png\n",
"BSD100_HR/227092.png\n",
"BSD100_HR/229036.png\n",
"BSD100_HR/236037.png\n",
"BSD100_HR/24077.png\n",
"BSD100_HR/241004.png\n",
"BSD100_HR/241048.png\n",
"BSD100_HR/253027.png\n",
"BSD100_HR/253055.png\n",
"BSD100_HR/260058.png\n",
"BSD100_HR/271035.png\n",
"BSD100_HR/285079.png\n",
"BSD100_HR/291000.png\n",
"BSD100_HR/295087.png\n",
"BSD100_HR/296007.png\n",
"BSD100_HR/296059.png\n",
"BSD100_HR/299086.png\n",
"BSD100_HR/300091.png\n",
"BSD100_HR/302008.png\n",
"BSD100_HR/304034.png\n",
"BSD100_HR/304074.png\n",
"BSD100_HR/306005.png\n",
"BSD100_HR/3096.png\n",
"BSD100_HR/33039.png\n",
"BSD100_HR/351093.png\n",
"BSD100_HR/361010.png\n",
"BSD100_HR/37073.png\n",
"BSD100_HR/376043.png\n",
"BSD100_HR/38082.png\n",
"BSD100_HR/38092.png\n",
"BSD100_HR/385039.png\n",
"BSD100_HR/41033.png\n",
"BSD100_HR/41069.png\n",
"BSD100_HR/42012.png\n",
"BSD100_HR/42049.png\n",
"BSD100_HR/43074.png\n",
"BSD100_HR/45096.png\n",
"BSD100_HR/54082.png\n",
"BSD100_HR/55073.png\n",
"BSD100_HR/58060.png\n",
"BSD100_HR/62096.png\n",
"BSD100_HR/65033.png\n",
"BSD100_HR/66053.png\n",
"BSD100_HR/69015.png\n",
"BSD100_HR/69020.png\n",
"BSD100_HR/69040.png\n",
"BSD100_HR/76053.png\n",
"BSD100_HR/78004.png\n",
"BSD100_HR/8023.png\n",
"BSD100_HR/85048.png\n",
"BSD100_HR/86000.png\n",
"BSD100_HR/86016.png\n",
"BSD100_HR/86068.png\n",
"BSD100_HR/87046.png\n",
"BSD100_HR/89072.png\n",
"BSD100_HR/97033.png\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import os\n",
"import glob\n",
"import multiprocessing\n",
"from multiprocessing.pool import Pool\n",
"\n",
"from PIL import Image\n",
"from tqdm import tqdm\n",
"\n",
"print(\"Number of CPUs:\", multiprocessing.cpu_count())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Oh6OCmKyNW5C",
"outputId": "ee517ffd-ebfe-4b8c-d87f-a4e75539983d"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Number of CPUs: 2\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"images = glob.glob(\"BSD100_HR/*.png\")\n",
"images"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9p4U6Ml1Q9za",
"outputId": "a4ebc28e-aac1-467b-ff13-dd7edb4fb55f"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['BSD100_HR/361010.png',\n",
" 'BSD100_HR/105025.png',\n",
" 'BSD100_HR/175032.png',\n",
" 'BSD100_HR/148026.png',\n",
" 'BSD100_HR/130026.png',\n",
" 'BSD100_HR/197017.png',\n",
" 'BSD100_HR/66053.png',\n",
" 'BSD100_HR/385039.png',\n",
" 'BSD100_HR/43074.png',\n",
" 'BSD100_HR/45096.png',\n",
" 'BSD100_HR/167062.png',\n",
" 'BSD100_HR/24077.png',\n",
" 'BSD100_HR/106024.png',\n",
" 'BSD100_HR/285079.png',\n",
" 'BSD100_HR/38082.png',\n",
" 'BSD100_HR/85048.png',\n",
" 'BSD100_HR/87046.png',\n",
" 'BSD100_HR/220075.png',\n",
" 'BSD100_HR/54082.png',\n",
" 'BSD100_HR/182053.png',\n",
" 'BSD100_HR/108070.png',\n",
" 'BSD100_HR/296059.png',\n",
" 'BSD100_HR/69040.png',\n",
" 'BSD100_HR/189080.png',\n",
" 'BSD100_HR/219090.png',\n",
" 'BSD100_HR/147091.png',\n",
" 'BSD100_HR/8023.png',\n",
" 'BSD100_HR/260058.png',\n",
" 'BSD100_HR/69015.png',\n",
" 'BSD100_HR/302008.png',\n",
" 'BSD100_HR/78004.png',\n",
" 'BSD100_HR/208001.png',\n",
" 'BSD100_HR/65033.png',\n",
" 'BSD100_HR/163085.png',\n",
" 'BSD100_HR/160068.png',\n",
" 'BSD100_HR/227092.png',\n",
" 'BSD100_HR/101085.png',\n",
" 'BSD100_HR/156065.png',\n",
" 'BSD100_HR/19021.png',\n",
" 'BSD100_HR/86016.png',\n",
" 'BSD100_HR/148089.png',\n",
" 'BSD100_HR/62096.png',\n",
" 'BSD100_HR/291000.png',\n",
" 'BSD100_HR/58060.png',\n",
" 'BSD100_HR/304034.png',\n",
" 'BSD100_HR/196073.png',\n",
" 'BSD100_HR/175043.png',\n",
" 'BSD100_HR/42012.png',\n",
" 'BSD100_HR/351093.png',\n",
" 'BSD100_HR/170057.png',\n",
" 'BSD100_HR/69020.png',\n",
" 'BSD100_HR/97033.png',\n",
" 'BSD100_HR/229036.png',\n",
" 'BSD100_HR/41033.png',\n",
" 'BSD100_HR/241004.png',\n",
" 'BSD100_HR/119082.png',\n",
" 'BSD100_HR/33039.png',\n",
" 'BSD100_HR/236037.png',\n",
" 'BSD100_HR/123074.png',\n",
" 'BSD100_HR/376043.png',\n",
" 'BSD100_HR/103070.png',\n",
" 'BSD100_HR/101087.png',\n",
" 'BSD100_HR/300091.png',\n",
" 'BSD100_HR/159008.png',\n",
" 'BSD100_HR/271035.png',\n",
" 'BSD100_HR/253055.png',\n",
" 'BSD100_HR/295087.png',\n",
" 'BSD100_HR/145086.png',\n",
" 'BSD100_HR/102061.png',\n",
" 'BSD100_HR/89072.png',\n",
" 'BSD100_HR/296007.png',\n",
" 'BSD100_HR/108082.png',\n",
" 'BSD100_HR/143090.png',\n",
" 'BSD100_HR/134035.png',\n",
" 'BSD100_HR/76053.png',\n",
" 'BSD100_HR/41069.png',\n",
" 'BSD100_HR/14037.png',\n",
" 'BSD100_HR/241048.png',\n",
" 'BSD100_HR/157055.png',\n",
" 'BSD100_HR/108005.png',\n",
" 'BSD100_HR/21077.png',\n",
" 'BSD100_HR/253027.png',\n",
" 'BSD100_HR/86068.png',\n",
" 'BSD100_HR/109053.png',\n",
" 'BSD100_HR/304074.png',\n",
" 'BSD100_HR/3096.png',\n",
" 'BSD100_HR/38092.png',\n",
" 'BSD100_HR/216081.png',\n",
" 'BSD100_HR/223061.png',\n",
" 'BSD100_HR/126007.png',\n",
" 'BSD100_HR/306005.png',\n",
" 'BSD100_HR/16077.png',\n",
" 'BSD100_HR/37073.png',\n",
" 'BSD100_HR/299086.png',\n",
" 'BSD100_HR/86000.png',\n",
" 'BSD100_HR/167083.png',\n",
" 'BSD100_HR/42049.png',\n",
" 'BSD100_HR/210088.png',\n",
" 'BSD100_HR/12084.png',\n",
" 'BSD100_HR/55073.png']"
]
},
"metadata": {},
"execution_count": 26
}
]
},
{
"cell_type": "code",
"source": [
"def resize(path):\n",
" img = Image.open(path).convert(\"RGB\")\n",
" img = img.resize((64, 64))\n",
" img.save(path.replace(\".png\", \"_resized.png\"))\n",
"\n",
"\n",
"pool = Pool(processes=2)\n",
"prog_bar = tqdm(pool.imap_unordered(resize, images), total=len(images))\n",
"for result in prog_bar:\n",
" pass\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "b5ApbZuLRDSS",
"outputId": "8f976686-4004-413c-ba59-af62e67e98fb"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"100%|██████████| 100/100 [00:00<00:00, 117.80it/s]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"### Now try resizing all images to 28,28\n",
"\n"
],
"metadata": {
"id": "n9yKd0rwSGPz"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"### Now try converting all images to grayscale (replace .convert(\"RGB\") with .convert(\"L\"))\n",
"\n"
],
"metadata": {
"id": "3p1Ra0W3SMCZ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## GPU Parallelization"
],
"metadata": {
"id": "iOmGlo8mdaFL"
}
},
{
"cell_type": "code",
"source": [
"import time\n",
"import torch\n",
"\n",
"dim = 5000\n",
"\n",
"x = torch.randn(dim, dim)\n",
"y = torch.randn(dim, dim)\n",
"start_time = time.time()\n",
"z = torch.matmul(x,y)\n",
"elapsed_time = time.time() - start_time\n",
"print('CPU_time = ', elapsed_time)\n",
"\n",
"\n",
"x = torch.randn(dim, dim, device=torch.device(\"cuda:0\"))\n",
"y = torch.randn(dim, dim, device=torch.device(\"cuda:0\"))\n",
"start_time = time.time()\n",
"z = torch.matmul(x,y)\n",
"elapsed_time = time.time() - start_time\n",
"print('GPU_time = ', elapsed_time)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bcNC9KZqdZ21",
"outputId": "13c55133-f904-45cb-cacb-2029c5a64d4b"
},
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"CPU_time = 7.832552909851074\n",
"GPU_time = 0.19541239738464355\n"
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment