{ "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": [ "\"Open" ] }, { "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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
0-114.3134.1915.05612.01283.01015.0472.01.493666900.0
1-114.4734.4019.07650.01901.01129.0463.01.820080100.0
2-114.5633.6917.0720.0174.0333.0117.01.650985700.0
3-114.5733.6414.01501.0337.0515.0226.03.191773400.0
4-114.5733.5720.01454.0326.0624.0262.01.925065500.0
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", "
\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
population
01015.0
11129.0
2333.0
3515.0
4624.0
......
16995907.0
169961194.0
169971244.0
169981298.0
16999806.0
\n", "

17000 rows × 1 columns

\n", "

" ] }, "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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
0-114.3134.1915.05612.01283.01015.0472.01.493666900.0
1-114.4734.4019.07650.01901.01129.0463.01.820080100.0
2-114.5633.6917.0720.0174.0333.0117.01.650985700.0
3-114.5733.6414.01501.0337.0515.0226.03.191773400.0
4-114.5733.5720.01454.0326.0624.0262.01.925065500.0
..............................
16995-124.2640.5852.02217.0394.0907.0369.02.3571111400.0
16996-124.2740.6936.02349.0528.01194.0465.02.517979000.0
16997-124.3041.8417.02677.0531.01244.0456.03.0313103600.0
16998-124.3041.8019.02672.0552.01298.0478.01.979785800.0
16999-124.3540.5452.01820.0300.0806.0270.03.014794600.0
\n", "

16164 rows × 9 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", "
\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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
0-114.3134.1915.05612.01283.01015.0472.01.493666900.0
1-114.4734.4019.07650.01901.01129.0463.01.820080100.0
2-114.5633.6917.0720.0174.0333.0117.01.650985700.0
3-114.5733.6414.01501.0337.0515.0226.03.191773400.0
4-114.5733.5720.01454.0326.0624.0262.01.925065500.0
..............................
16995-124.2640.5852.02217.0394.0907.0369.02.3571111400.0
16996-124.2740.6936.02349.0528.01194.0465.02.517979000.0
16997-124.3041.8417.02677.0531.01244.0456.03.0313103600.0
16998-124.3041.8019.02672.0552.01298.0478.01.979785800.0
16999-124.3540.5452.01820.0300.0806.0270.03.014794600.0
\n", "

14891 rows × 9 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", "
\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
count
housing_median_age
52.01052
36.0715
35.0692
16.0635
17.0576
34.0567
33.0513
26.0503
18.0478
25.0461
32.0458
37.0437
15.0416
19.0412
28.0400
27.0397
24.0389
31.0384
30.0384
20.0383
23.0382
29.0374
21.0373
14.0347
22.0323
38.0318
42.0308
39.0302
44.0296
43.0286
13.0249
40.0249
45.0235
41.0232
10.0226
11.0208
5.0199
46.0196
12.0192
8.0178
47.0175
9.0172
4.0161
7.0151
48.0135
6.0129
50.0112
49.0111
2.049
3.046
51.032
1.02
\n", "

" ] }, "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": [ "
" ], "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/VU0QFCXWIXlxzA2PY254HHPD45gbXmWMuSAoKvzl9UYVqkJCQtCtWzcAQHR0NC5duqRXZ926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\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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BookChapterVersecountverse
0011In the beginning God created the heaven and th...
1012And the earth was without form, and void; and ...
2013And God said, Let there be light: and there wa...
3014And God saw the light, that it was good: and G...
4015And God called the light Day, and the darkness...
...............
950416And Cain went out from the presence of the LOR...
960417And Cain knew his wife; and she conceived, and...
970418And unto Enoch was born Irad: and Irad brings ...
980419And Lamech took unto him two wives: the name o...
990420And Adah bare Jabal: he was the father of such...
\n", "

100 rows × 4 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
verse
0In the beginning God created the heaven and th...
1And the earth was without form, and void; and ...
2And God said, Let there be light: and there wa...
3And God saw the light, that it was good: and G...
4And God called the light Day, and the darkness...
......
95And Cain went out from the presence of the LOR...
96And Cain knew his wife; and she conceived, and...
97And unto Enoch was born Irad: and Irad brings ...
98And Lamech took unto him two wives: the name o...
99And Adah bare Jabal: he was the father of such...
\n", "

100 rows × 1 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BookChapterVersecountverse
0011In the beginning God created the heaven and th...
1012And the earth was without form, and void; and ...
2013And God said, Let there be light: and there wa...
3014And God saw the light, that it was good: and G...
4015And God called the light Day, and the darkness...
...............
152805022And Joseph dwelt in Egypt, he, and his father'...
152905023And Joseph saw Ephraim's children of the third...
153005024And Joseph said unto his brethren, I die: and ...
153105025And Joseph took an oath of the children of Isr...
153205026So Joseph died, being an hundred and ten years...
\n", "

1533 rows × 4 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Chapter
01
12
23
34
45
......
145146
146147
147148
148149
149150
\n", "

150 rows × 1 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
COUNT(*)
031102
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\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", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
COUNT(DISTINCT(Book))
066
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\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" ] } ] } ] }