diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index de259a902334..27af4f03531e 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -1,15 +1,6 @@ * [Home](index.md) * [Install](install.md) * [Docs](docs/index.md) - * [Tutorial](tutorial/index.md) - * [Getting Started](tutorial/01-Introduction-to-Ibis.ipynb) - * [Aggregating and Joining](tutorial/02-Aggregates-Joins.ipynb) - * [Lazy Mode and Logging](tutorial/03-Expressions-Lazy-Mode-Logging.ipynb) - * [More Value Expressions](tutorial/04-More-Value-Expressions.ipynb) - * [Creating and Inserting External Data](tutorial/05-IO-Create-Insert-External-Data.ipynb) - * [Complex Filtering](tutorial/06-ComplexFiltering.ipynb) - * [Analytics Tools](tutorial/07-Analytics-Tools.ipynb) - * [Geospatial Analysis](tutorial/rendered/08-Geospatial-Analysis.ipynb) * [How To Guide](how_to/) * [Execution Backends](backends/) * [User Guide](user_guide/) diff --git a/docs/docs/index.md b/docs/docs/index.md index 582dfeed9ab6..7c01364f43e5 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -4,6 +4,6 @@ Welcome to the ibis documentation! - **Coming from Pandas?**: Check out [ibis for pandas users](../ibis-for-pandas-users.ipynb)! - **Coming from SQL?**: Take a look at [ibis for SQL programmers](../ibis-for-sql-programmers.ipynb)! -- **Want to see some more examples?**: We've got [a set of tutorial notebooks](../tutorial/index.md) for that! +- **Want to see some more examples?**: We've got [a set of tutorial notebooks](https://github.com/ibis-project/ibis-examples) for that! - **Looking for API docs?**: Start [here](../api/expressions/top_level.md)! - **Interested in contributing?**: Our [contribution section](../community/contribute/index.md) has what you need! diff --git a/docs/index.md b/docs/index.md index bc0287f55e47..931c4fdab6e7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,7 +13,7 @@ hide:
[Install](./install.md){ .md-button .md-button--primary } -[Tutorial](./tutorial/index.md){ .md-button } +[Tutorial](https://github.com/ibis-project/ibis-examples){ .md-button }
--- diff --git a/docs/install.md b/docs/install.md index ff5e6b838ad9..5439a8e39756 100644 --- a/docs/install.md +++ b/docs/install.md @@ -42,5 +42,5 @@ hide: After you've successfully installed Ibis, try going through the tutorial:
-[Go to the Tutorial](./tutorial/index.md){ .md-button .md-button--primary } +[Go to the Tutorial](https://github.com/ibis-project/ibis-examples){ .md-button .md-button--primary }
diff --git a/docs/tutorial/01-Introduction-to-Ibis.ipynb b/docs/tutorial/01-Introduction-to-Ibis.ipynb deleted file mode 100644 index 98452472108e..000000000000 --- a/docs/tutorial/01-Introduction-to-Ibis.ipynb +++ /dev/null @@ -1,561 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Getting started\n", - "\n", - "To start using Ibis, you need a Python environment with Ibis installed. Follow the installation instructions for SQLite to setup an environment.\n", - "\n", - "Once you have your environment ready, to start using Ibis simply import the `ibis` module:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import ibis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To make it things easier in this tutorial, we will be using _Ibis interactive mode_. For production code, that will rarely be the case. More details on Ibis non-interactive (aka lazy) mode are covered in the third tutorial, _Expressions, lazy mode and logging queries_.\n", - "\n", - "To set the interactive mode, use:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "ibis.options.interactive = True" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next thing we need is to create a connection object. The connection defines where the data is stored and where the computations will be performed.\n", - "\n", - "For a comparison to pandas, this is not the same as where the data is imported from (e.g. `pandas.read_sql`). pandas loads data into memory and performs the computations itself. Ibis won't load the data and perform any computation, but instead will leave the data in the backend defined in the connection, and will _ask_ the backend to perform the computations.\n", - "\n", - "In this tutorial we will be using a SQLite connection for its simplicity (no installation is needed). But Ibis can work with many different backends, including big data systems, or GPU-accelerated analytical databases. As well as most common relational databases (PostgreSQL, MySQL,...).\n", - "\n", - "Let's download the SQLite database from the `ibis-tutorial-data` GCS (Google Cloud Storage) bucket, then connect to it using `ibis`." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "!curl -LsS -o geography.db 'https://storage.googleapis.com/ibis-tutorial-data/geography.db'" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import tempfile\n", - "\n", - "connection = ibis.sqlite.connect(\n", - " 'geography.db'\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that if you installed Ibis with `pip` instead of `conda`, you may need to install the SQLite backend separately with `pip install 'ibis-framework[sqlite]'`.\n", - "\n", - "### Exploring the data\n", - "\n", - "To list the tables in the `connection` object, we can use the `.list_tables()` method. If you are using Jupyter, you can see all the methods and attributes of the `connection` object by writing `connection.` and pressing the `` key." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['countries', 'gdp']" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "connection.list_tables()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "These two tables include data about countries, and about GDP by country and year.\n", - "\n", - "The data from countries has been obtained from [GeoNames](https://www.geonames.org/countries/).\n", - "The GDP table will be used in the next tutorial, and the data has been obtained from the\n", - "[World Bank website](https://data.worldbank.org/indicator/NY.GDP.MKTP.CD).\n", - "\n", - "Next, we want to access a specific table in the database. We can create a handler to the `countries` table with:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "countries = connection.table('countries')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To list the columns of the `countries` table, we can use the `columns` attribute.\n", - "\n", - "Again, Jupyter users can see all the methods and attributes of the `countries` object by typing `countries.` and pressing ``." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['iso_alpha2',\n", - " 'iso_alpha3',\n", - " 'iso_numeric',\n", - " 'fips',\n", - " 'name',\n", - " 'capital',\n", - " 'area_km2',\n", - " 'population',\n", - " 'continent']" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries.columns" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now access a sample of the data. Let's focus on the `name`, `continent` and `population` columns to start with. We can visualize the values of the columns with:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent population\n", - "0 Andorra EU 84000\n", - "1 United Arab Emirates AS 4975593\n", - "2 Afghanistan AS 29121286\n", - "3 Antigua and Barbuda NA 86754\n", - "4 Anguilla NA 13254\n", - ".. ... ... ...\n", - "247 Yemen AS 23495361\n", - "248 Mayotte AF 159042\n", - "249 South Africa AF 49000000\n", - "250 Zambia AF 13460305\n", - "251 Zimbabwe AF 13061000\n", - "\n", - "[252 rows x 3 columns]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries['name', 'continent', 'population']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The table is too big for all the results to be displayed, and we probably don't want to see all of them at once anyway. For this reason, just the beginning and the end of the results is displayed. Often, the number of rows will be so large that this operation could take a long time.\n", - "\n", - "To check how many rows a table has, we can use the `.count()` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "252" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries.count()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To fetch just a subset of the rows, we can use the `.limit(n)` method, where `n` is the number of samples we want. In this case we will fetch the first `3` countries from the table:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent population\n", - "0 Andorra EU 84000\n", - "1 United Arab Emirates AS 4975593\n", - "2 Afghanistan AS 29121286" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries['name', 'continent', 'population'].limit(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Filters and order\n", - "\n", - "Now that we've got an intuition of the data available in the table `countries`, we will extract some information from it by applying filters and sorting the data.\n", - "\n", - "Let's focus on a single continent. We can see a list of unique continents in the table using the `.distinct()` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 EU\n", - "1 AS\n", - "2 NA\n", - "3 AF\n", - "4 AN\n", - "5 SA\n", - "6 OC\n", - "Name: continent, dtype: object" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries[['continent']].distinct()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will focus on Asia (`AS` in the table). We can identify which rows belong to Asian countries using the standard Python `==` operator:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 False\n", - "1 True\n", - "2 True\n", - "3 False\n", - "4 False\n", - " ... \n", - "247 True\n", - "248 False\n", - "249 False\n", - "250 False\n", - "251 False\n", - "Name: tmp, Length: 252, dtype: bool" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries['continent'] == 'AS'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The result has a value `True` for rows where the condition is true, and the value `False` when it's not.\n", - "\n", - "We can provide this expression to the method `.filter()`, and save the result in the variable `asian_countries` for future use." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent population\n", - "0 United Arab Emirates AS 4975593\n", - "1 Afghanistan AS 29121286\n", - "2 Armenia AS 2968000\n", - "3 Azerbaijan AS 8303512\n", - "4 Bangladesh AS 156118464\n", - "5 Bahrain AS 738004\n", - "6 Brunei AS 395027\n", - "7 Bhutan AS 699847\n", - "8 Cocos [Keeling] Islands AS 628\n", - "9 China AS 1330044000\n", - "10 Georgia AS 4630000\n", - "11 Hong Kong AS 6898686\n", - "12 Indonesia AS 242968342\n", - "13 Israel AS 7353985\n", - "14 India AS 1173108018\n", - "15 British Indian Ocean Territory AS 4000\n", - "16 Iraq AS 29671605\n", - "17 Iran AS 76923300\n", - "18 Jordan AS 6407085\n", - "19 Japan AS 127288000\n", - "20 Kyrgyzstan AS 5776500\n", - "21 Cambodia AS 14453680\n", - "22 North Korea AS 22912177\n", - "23 South Korea AS 48422644\n", - "24 Kuwait AS 2789132\n", - "25 Kazakhstan AS 15340000\n", - "26 Laos AS 6368162\n", - "27 Lebanon AS 4125247\n", - "28 Sri Lanka AS 21513990\n", - "29 Myanmar AS 53414374\n", - "30 Mongolia AS 3086918\n", - "31 Macao AS 449198\n", - "32 Maldives AS 395650\n", - "33 Malaysia AS 28274729\n", - "34 Nepal AS 28951852\n", - "35 Oman AS 2967717\n", - "36 Philippines AS 99900177\n", - "37 Pakistan AS 184404791\n", - "38 Palestine AS 3800000\n", - "39 Qatar AS 840926\n", - "40 Saudi Arabia AS 25731776\n", - "41 Singapore AS 4701069\n", - "42 Syria AS 22198110\n", - "43 Thailand AS 67089500\n", - "44 Tajikistan AS 7487489\n", - "45 Turkmenistan AS 4940916\n", - "46 Turkey AS 77804122\n", - "47 Taiwan AS 22894384\n", - "48 Uzbekistan AS 27865738\n", - "49 Vietnam AS 89571130\n", - "50 Yemen AS 23495361" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "asian_countries = countries['name', 'continent', 'population'].filter(\n", - " countries['continent'] == 'AS'\n", - ")\n", - "asian_countries" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can check how many countries exist in Asia (based on the information in the database) by using the `.count()` method we've already seen:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "51" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "asian_countries.count()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we want to find the most populated countries in Asia. To obtain them, we are going to sort the countries by the column `population`, and just fetch the first 10. To sort by a column in Ibis, we can use the `.order_by()` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent population\n", - "0 Cocos [Keeling] Islands AS 628\n", - "1 British Indian Ocean Territory AS 4000\n", - "2 Brunei AS 395027\n", - "3 Maldives AS 395650\n", - "4 Macao AS 449198\n", - "5 Bhutan AS 699847\n", - "6 Bahrain AS 738004\n", - "7 Qatar AS 840926\n", - "8 Kuwait AS 2789132\n", - "9 Oman AS 2967717" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "asian_countries.order_by('population').limit(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This will return the least populated countries, since `.order_by` will by default order in ascending order (ascending order like in `1, 2, 3, 4`). This behavior is consistent with SQL `ORDER BY`.\n", - "\n", - "To order in descending order we can use `ibis.desc()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent population\n", - "0 China AS 1330044000\n", - "1 India AS 1173108018\n", - "2 Indonesia AS 242968342\n", - "3 Pakistan AS 184404791\n", - "4 Bangladesh AS 156118464\n", - "5 Japan AS 127288000\n", - "6 Philippines AS 99900177\n", - "7 Vietnam AS 89571130\n", - "8 Turkey AS 77804122\n", - "9 Iran AS 76923300" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "asian_countries.order_by(ibis.desc('population')).limit(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is the list of the 10 most populated countries based on the data from [GeoNames](https://www.geonames.org/).\n", - "\n", - "To learn more about Ibis, continue to the next tutorial." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/tutorial/02-Aggregates-Joins.ipynb b/docs/tutorial/02-Aggregates-Joins.ipynb deleted file mode 100644 index 40227dd2a668..000000000000 --- a/docs/tutorial/02-Aggregates-Joins.ipynb +++ /dev/null @@ -1,709 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Aggregating and joining data\n", - "\n", - "This is the second introductory tutorial to Ibis. If you are new to Ibis, you may want to start\n", - "by the first tutorial, _01-Introduction-to-Ibis_.\n", - "\n", - "In the first tutorial, we saw how to operate on the data of a table. We will work again with\n", - "the `countries` table as we did previously." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "!curl -LsS -o geography.db 'https://storage.googleapis.com/ibis-tutorial-data/geography.db'" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent area_km2 population\n", - "0 Andorra EU 468.0 84000\n", - "1 United Arab Emirates AS 82880.0 4975593\n", - "2 Afghanistan AS 647500.0 29121286\n", - "3 Antigua and Barbuda NA 443.0 86754\n", - "4 Anguilla NA 102.0 13254\n", - ".. ... ... ... ...\n", - "247 Yemen AS 527970.0 23495361\n", - "248 Mayotte AF 374.0 159042\n", - "249 South Africa AF 1219912.0 49000000\n", - "250 Zambia AF 752614.0 13460305\n", - "251 Zimbabwe AF 390580.0 13061000\n", - "\n", - "[252 rows x 4 columns]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import os\n", - "import tempfile\n", - "\n", - "import ibis\n", - "\n", - "ibis.options.interactive = True\n", - "\n", - "connection = ibis.sqlite.connect(\n", - " 'geography.db'\n", - ")\n", - "countries = connection.table('countries')\n", - "\n", - "countries['name', 'continent', 'area_km2', 'population']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Expressions\n", - "\n", - "We will continue by exploring the data by continent. We will start by creating an expression\n", - "with the continent names, since our table only contains the abbreviations.\n", - "\n", - "An expression is one or more operations performed over the data. They can be used to retrieve the\n", - "data or to build more complex operations.\n", - "\n", - "In this case we will use a `case` conditional statement to replace values depending on a condition.\n", - "A `case` expression will return a case builder, and must be followed by one or more `when` calls,\n", - "optionally an `else_` call, and must end with a call to `end`, to complete the full expression.\n", - "The expression where `case` is called (`countries['continent']` in this case)\n", - "is evaluated to see if it's equal to any of the first arguments of the calls to `when`. And the second\n", - "argument is returned. If the value does not match any of the `when` values, the value of `else_` is returned." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 Europe\n", - "1 Asia\n", - "2 Asia\n", - "3 North America\n", - "4 North America\n", - " ... \n", - "247 Asia\n", - "248 Africa\n", - "249 Africa\n", - "250 Africa\n", - "251 Africa\n", - "Name: tmp, Length: 252, dtype: object" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "continent_name = (\n", - " countries['continent']\n", - " .case()\n", - " .when('NA', 'North America')\n", - " .when('SA', 'South America')\n", - " .when('EU', 'Europe')\n", - " .when('AF', 'Africa')\n", - " .when('AS', 'Asia')\n", - " .when('OC', 'Oceania')\n", - " .when('AN', 'Antarctica')\n", - " .else_('Unknown continent')\n", - " .end()\n", - " .name('continent_name')\n", - ")\n", - "continent_name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What we did is take the values of the column `countries['continent']`, and we created a calculated\n", - "column with the names of the continents, as defined in the `when` methods.\n", - "\n", - "This calculated column is an expression. The computations didn't happen when defining the `continent_name`\n", - "variable, and the results are not stored. They have been computed when we printed its content.\n", - "\n", - "We can see that by checking the type of `continent_name`:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ibis.expr.types.StringColumn" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(continent_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the next tutorial we will see more about eager and lazy mode, and when operations are being\n", - "executed. For now we can think that the query to the database happens only when we want to see\n", - "the results.\n", - "\n", - "The important part is that now we can use our `continent_name` expression in other expressions.\n", - "For example, since this is a column (a `StringColumn` to be specific), we can use it as a column\n", - "to query the countries table.\n", - "\n", - "Note that when we created the expression we added `.name('continent_name')` to it, so the column\n", - "has a name when being returned." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent_name area_km2 population\n", - "0 Andorra Europe 468.0 84000\n", - "1 United Arab Emirates Asia 82880.0 4975593\n", - "2 Afghanistan Asia 647500.0 29121286\n", - "3 Antigua and Barbuda North America 443.0 86754\n", - "4 Anguilla North America 102.0 13254\n", - ".. ... ... ... ...\n", - "247 Yemen Asia 527970.0 23495361\n", - "248 Mayotte Africa 374.0 159042\n", - "249 South Africa Africa 1219912.0 49000000\n", - "250 Zambia Africa 752614.0 13460305\n", - "251 Zimbabwe Africa 390580.0 13061000\n", - "\n", - "[252 rows x 4 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries['name', continent_name, 'area_km2', 'population']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Just for illustration, let's repeat the same query, but renaming the expression to `continent`\n", - "when using it in the list of columns to fetch." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " name continent area_km2 population\n", - "0 Andorra Europe 468.0 84000\n", - "1 United Arab Emirates Asia 82880.0 4975593\n", - "2 Afghanistan Asia 647500.0 29121286\n", - "3 Antigua and Barbuda North America 443.0 86754\n", - "4 Anguilla North America 102.0 13254\n", - ".. ... ... ... ...\n", - "247 Yemen Asia 527970.0 23495361\n", - "248 Mayotte Africa 374.0 159042\n", - "249 South Africa Africa 1219912.0 49000000\n", - "250 Zambia Africa 752614.0 13460305\n", - "251 Zimbabwe Africa 390580.0 13061000\n", - "\n", - "[252 rows x 4 columns]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries['name', continent_name.name('continent'), 'area_km2', 'population']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Aggregating data\n", - "\n", - "Now, let's group our data by continent, and let's find the total population of each." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " continent_name total_population\n", - "0 Africa 1021238685\n", - "1 Antarctica 170\n", - "2 Asia 4130584841\n", - "3 Europe 750724554\n", - "4 North America 540204371\n", - "5 Oceania 36067549\n", - "6 South America 400143568" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries.group_by(continent_name).aggregate(\n", - " countries['population'].sum().name('total_population')\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see how Asia is the most populated country, followed by Africa. Antarctica is the least populated,\n", - "as we would expect.\n", - "\n", - "The code to aggregate has two main parts:\n", - "- The `group_by` method, that receive the column, expression or list of them to group by\n", - "- The `aggregate` method, that receives an expression with the reduction we want to apply\n", - "\n", - "To make things a bit clearer, let's first save the reduction." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6878963738" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "total_population = countries['population'].sum().name('total_population')\n", - "total_population" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As we can see, if we perform the operation directly, we will get the sum of the total in the column.\n", - "\n", - "But if we take the `total_population` expression as the parameter of the `aggregate` method, then the total is computed\n", - "over every group defined by the `group_by` method." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " continent_name total_population\n", - "0 Africa 1021238685\n", - "1 Antarctica 170\n", - "2 Asia 4130584841\n", - "3 Europe 750724554\n", - "4 North America 540204371\n", - "5 Oceania 36067549\n", - "6 South America 400143568" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries.group_by(continent_name).aggregate(total_population)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we want to compute two aggregates at the same time, we can pass a list to the `aggregate` method.\n", - "\n", - "For illustration, we use the `continent` column, instead of the `continent_names` expression. We can\n", - "use both column names and expressions, and also a list with any of them (e.g. `[continent_names, 'name']`." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " continent total_population average_area\n", - "0 AF 1021238685 5.234534e+05\n", - "1 AN 170 2.802439e+06\n", - "2 AS 4130584841 6.196685e+05\n", - "3 EU 750724554 4.293017e+05\n", - "4 NA 540204371 5.836313e+05\n", - "5 OC 36067549 3.044157e+05\n", - "6 SA 400143568 1.272751e+06" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries.group_by('continent').aggregate(\n", - " [total_population, countries['area_km2'].mean().name('average_area')]\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Joining data\n", - "\n", - "Now we are going to get the total gross domestic product (GDP) for each continent. In this case, the GDP data\n", - "is not in the same table `countries`, but in a table `gdp`." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " country_code year value\n", - "0 ABW 1986 4.054634e+08\n", - "1 ABW 1987 4.876025e+08\n", - "2 ABW 1988 5.964236e+08\n", - "3 ABW 1989 6.953044e+08\n", - "4 ABW 1990 7.648871e+08\n", - "... ... ... ...\n", - "9995 SVK 2002 3.513034e+10\n", - "9996 SVK 2003 4.681659e+10\n", - "9997 SVK 2004 5.733202e+10\n", - "9998 SVK 2005 6.278531e+10\n", - "9999 SVK 2006 7.070810e+10\n", - "\n", - "[10000 rows x 3 columns]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gdp = connection.table('gdp')\n", - "gdp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The table contains information for different years, we can easily check the range with:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1960, 2017)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gdp['year'].min(), gdp['year'].max()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we are going to join this data with the `countries` table so we can obtain the continent\n", - "of each country. The `countries` table has several different codes for the countries. Let's find out which\n", - "one matches the three letter code in the `gdp` table." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " iso_alpha2 iso_alpha3 iso_numeric fips name\n", - "0 AD AND 20 AN Andorra\n", - "1 AE ARE 784 AE United Arab Emirates\n", - "2 AF AFG 4 AF Afghanistan\n", - "3 AG ATG 28 AC Antigua and Barbuda\n", - "4 AI AIA 660 AV Anguilla\n", - ".. ... ... ... ... ...\n", - "247 YE YEM 887 YM Yemen\n", - "248 YT MYT 175 MF Mayotte\n", - "249 ZA ZAF 710 SF South Africa\n", - "250 ZM ZMB 894 ZA Zambia\n", - "251 ZW ZWE 716 ZI Zimbabwe\n", - "\n", - "[252 rows x 5 columns]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries['iso_alpha2', 'iso_alpha3', 'iso_numeric', 'fips', 'name']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `country_code` in `gdp` corresponds to `iso_alpha3` in the `countries` table. We can also see\n", - "how the `gdp` table has `10,000` rows, while `countries` has `252`. We will start joining the\n", - "two tables by the codes that match, discarding the codes that do not exist in both tables.\n", - "This is called an inner join." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " iso_alpha2 iso_alpha3 iso_numeric fips name capital \\\n", - "0 AD AND 20 AN Andorra Andorra la Vella \n", - "1 AD AND 20 AN Andorra Andorra la Vella \n", - "2 AD AND 20 AN Andorra Andorra la Vella \n", - "3 AD AND 20 AN Andorra Andorra la Vella \n", - "4 AD AND 20 AN Andorra Andorra la Vella \n", - "... ... ... ... ... ... ... \n", - "9482 ZW ZWE 716 ZI Zimbabwe Harare \n", - "9483 ZW ZWE 716 ZI Zimbabwe Harare \n", - "9484 ZW ZWE 716 ZI Zimbabwe Harare \n", - "9485 ZW ZWE 716 ZI Zimbabwe Harare \n", - "9486 ZW ZWE 716 ZI Zimbabwe Harare \n", - "\n", - " area_km2 population continent country_code year value \n", - "0 468.0 84000 EU AND 1970 7.861921e+07 \n", - "1 468.0 84000 EU AND 1971 8.940982e+07 \n", - "2 468.0 84000 EU AND 1972 1.134082e+08 \n", - "3 468.0 84000 EU AND 1973 1.508201e+08 \n", - "4 468.0 84000 EU AND 1974 1.865587e+08 \n", - "... ... ... ... ... ... ... \n", - "9482 390580.0 13061000 AF ZWE 2013 1.909102e+10 \n", - "9483 390580.0 13061000 AF ZWE 2014 1.949552e+10 \n", - "9484 390580.0 13061000 AF ZWE 2015 1.996312e+10 \n", - "9485 390580.0 13061000 AF ZWE 2016 2.054868e+10 \n", - "9486 390580.0 13061000 AF ZWE 2017 2.281301e+10 \n", - "\n", - "[9487 rows x 12 columns]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries_and_gdp = countries.inner_join(\n", - " gdp, predicates=countries['iso_alpha3'] == gdp['country_code']\n", - ")\n", - "countries_and_gdp[countries, gdp]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We joined the table with the information for all years. Now we are going to just take the information about the last available year, 2017." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " country_code year value\n", - "0 ABW 2017 2.700559e+09\n", - "1 AFG 2017 2.019176e+10\n", - "2 AGO 2017 1.221238e+11\n", - "3 ALB 2017 1.302506e+10\n", - "4 AND 2017 3.013387e+09\n", - ".. ... ... ...\n", - "242 XKX 2017 7.227700e+09\n", - "243 YEM 2017 2.681870e+10\n", - "244 ZAF 2017 3.495541e+11\n", - "245 ZMB 2017 2.586814e+10\n", - "246 ZWE 2017 2.281301e+10\n", - "\n", - "[247 rows x 3 columns]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gdp_2017 = gdp.filter(gdp['year'] == 2017)\n", - "gdp_2017" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Joining with the new expression we get:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " iso_alpha2 iso_alpha3 iso_numeric fips name capital \\\n", - "0 AW ABW 533 AA Aruba Oranjestad \n", - "1 AF AFG 4 AF Afghanistan Kabul \n", - "2 AO AGO 24 AO Angola Luanda \n", - "3 AL ALB 8 AL Albania Tirana \n", - "4 AD AND 20 AN Andorra Andorra la Vella \n", - ".. ... ... ... ... ... ... \n", - "196 XK XKX 0 KV Kosovo Pristina \n", - "197 YE YEM 887 YM Yemen Sanaa \n", - "198 ZA ZAF 710 SF South Africa Pretoria \n", - "199 ZM ZMB 894 ZA Zambia Lusaka \n", - "200 ZW ZWE 716 ZI Zimbabwe Harare \n", - "\n", - " area_km2 population continent country_code year value \n", - "0 193.0 71566 NA ABW 2017 2.700559e+09 \n", - "1 647500.0 29121286 AS AFG 2017 2.019176e+10 \n", - "2 1246700.0 13068161 AF AGO 2017 1.221238e+11 \n", - "3 28748.0 2986952 EU ALB 2017 1.302506e+10 \n", - "4 468.0 84000 EU AND 2017 3.013387e+09 \n", - ".. ... ... ... ... ... ... \n", - "196 10908.0 1800000 EU XKX 2017 7.227700e+09 \n", - "197 527970.0 23495361 AS YEM 2017 2.681870e+10 \n", - "198 1219912.0 49000000 AF ZAF 2017 3.495541e+11 \n", - "199 752614.0 13460305 AF ZMB 2017 2.586814e+10 \n", - "200 390580.0 13061000 AF ZWE 2017 2.281301e+10 \n", - "\n", - "[201 rows x 12 columns]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries_and_gdp = countries.inner_join(\n", - " gdp_2017, predicates=countries['iso_alpha3'] == gdp_2017['country_code']\n", - ")\n", - "countries_and_gdp[countries, gdp_2017]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have called the `inner_join` method of the `countries` table and passed\n", - "the `gdp` table as a parameter. The method receives a second parameter, `predicates`, that is used to specify\n", - "how the join will be performed. In this case we want the `iso_alpha3` column in `countries` to\n", - "match the `country_code` column in `gdp`. This is specified with the expression\n", - "`countries['iso_alpha3'] == gdp['country_code']`.\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/tutorial/03-Expressions-Lazy-Mode-Logging.ipynb b/docs/tutorial/03-Expressions-Lazy-Mode-Logging.ipynb deleted file mode 100644 index 5b875d0bd075..000000000000 --- a/docs/tutorial/03-Expressions-Lazy-Mode-Logging.ipynb +++ /dev/null @@ -1,707 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Lazy Mode and Logging\n", - "\n", - "So far, we have seen Ibis in interactive mode. Interactive mode (also known as eager mode) makes Ibis return the\n", - "results of an operation immediately.\n", - "\n", - "In most cases, instead of using interactive mode, it makes more sense to use the default lazy mode.\n", - "In lazy mode, Ibis won't be executing the operations automatically, but instead, will generate an\n", - "expression to be executed at a later time.\n", - "\n", - "Let's see this in practice, starting with the same example as in previous tutorials - the geography database." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "!curl -LsS -o geography.db 'https://storage.googleapis.com/ibis-tutorial-data/geography.db'" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import tempfile\n", - "\n", - "import ibis\n", - "\n", - "connection = ibis.sqlite.connect('geography.db')\n", - "countries = connection.table('countries')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In previous tutorials, we set interactive mode to `True`, and we obtained the result\n", - "of every operation." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┓\n",
-       "┃ name                  continent  population ┃\n",
-       "┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━┩\n",
-       "│ stringstringint32      │\n",
-       "├──────────────────────┼───────────┼────────────┤\n",
-       "│ Andorra              │ EU        │      84000 │\n",
-       "│ United Arab Emirates │ AS        │    4975593 │\n",
-       "│ Afghanistan          │ AS        │   29121286 │\n",
-       "└──────────────────────┴───────────┴────────────┘\n",
-       "
\n" - ], - "text/plain": [ - "┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┓\n", - "┃\u001b[1m \u001b[0m\u001b[1mname\u001b[0m\u001b[1m \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mcontinent\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mpopulation\u001b[0m\u001b[1m \u001b[0m┃\n", - "┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━┩\n", - "│ \u001b[1;34mstring\u001b[0m │ \u001b[1;34mstring\u001b[0m │ \u001b[1;34mint32\u001b[0m │\n", - "├──────────────────────┼───────────┼────────────┤\n", - "│ Andorra │ EU │ \u001b[1;36m84000\u001b[0m │\n", - "│ United Arab Emirates │ AS │ \u001b[1;36m4975593\u001b[0m │\n", - "│ Afghanistan │ AS │ \u001b[1;36m29121286\u001b[0m │\n", - "└──────────────────────┴───────────┴────────────┘" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ibis.options.interactive = True\n", - "\n", - "countries['name', 'continent', 'population'].limit(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But now let's see what happens if we leave the `interactive` option to `False` (the default),\n", - "and we operate in lazy mode." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
r0 := AlchemyTable: countries\n",
-       "  iso_alpha2  string\n",
-       "  iso_alpha3  string\n",
-       "  iso_numeric int32\n",
-       "  fips        string\n",
-       "  name        string\n",
-       "  capital     string\n",
-       "  area_km2    float64\n",
-       "  population  int32\n",
-       "  continent   string\n",
-       "\n",
-       "r1 := Selection[r0]\n",
-       "  selections:\n",
-       "    name:       r0.name\n",
-       "    continent:  r0.continent\n",
-       "    population: r0.population\n",
-       "\n",
-       "Limit[r1, n=3]\n",
-       "
\n" - ], - "text/plain": [ - "r0 := AlchemyTable: countries\n", - " iso_alpha2 string\n", - " iso_alpha3 string\n", - " iso_numeric int32\n", - " fips string\n", - " name string\n", - " capital string\n", - " area_km2 float64\n", - " population int32\n", - " continent string\n", - "\n", - "r1 := Selection[r0]\n", - " selections:\n", - " name: r0.name\n", - " continent: r0.continent\n", - " population: r0.population\n", - "\n", - "Limit[r1, n=3]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ibis.options.interactive = False\n", - "\n", - "countries['name', 'continent', 'population'].limit(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What we find is the graph of the expressions that would return the desired result instead of the result itself.\n", - "\n", - "Let's analyze the expressions in the graph:\n", - "\n", - "- We query the `countries` table (all rows and all columns)\n", - "- We select the `name`, `continent` and `population` columns\n", - "- We limit the results to only the first `3` rows\n", - "\n", - "Now consider that the data is in a database, possibly in a different host than the one executing Ibis.\n", - "Also consider that the results returned to the user need to be moved to the memory of the host executing Ibis.\n", - "\n", - "When using interactive (or eager) mode, if we perform one operation at a time, we would do:\n", - "\n", - "- We would move all the rows and columns from the backend (database, big data system, etc.) into memory\n", - "- Once in memory, we would discard all the columns but `name`, `continent` and `population`\n", - "- After that, we would discard all the rows, except the first `3`\n", - "\n", - "This is not very efficient. If you consider that the table can have millions of rows, backed by a\n", - "big data system like Spark or Impala, this may not even be possible (not enough memory to load all the data).\n", - "\n", - "The solution is to use lazy mode. In lazy mode, instead of obtaining the results after each operation,\n", - "we build an expression (a graph) of all the operations that need to be done. After all the operations\n", - "are recorded, the graph is sent to the backend which will perform the operation in an efficient way - only\n", - "moving to memory the required data.\n", - "\n", - "You can think of this as writing a shopping list and requesting someone to go to the supermarket and buy\n", - "everything you need once the list is complete. As opposed as getting someone to bring all the products of\n", - "the supermarket to your home and then return everything you don't want.\n", - "\n", - "Let's continue with our example, save the expression in a variable `countries_expression`, and check its type." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ibis.expr.types.relations.Table" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries_expression = countries['name', 'continent', 'population'].limit(3)\n", - "type(countries_expression)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The type is an Ibis `TableExpr`, since the result is a table (in a broad way, you can consider it a dataframe).\n", - "\n", - "Now we have our query instructions (our expression, fetching only 3 columns and 3 rows) in the variable `countries_expression`.\n", - "\n", - "At this point, nothing has been requested from the database. We have defined what we want to extract, but we didn't\n", - "request it from the database yet. We can continue building our expression if we haven't finished yet. Or once we\n", - "are done, we can simply request it from the database using the method `.execute()`." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "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", - "
namecontinentpopulation
0AndorraEU84000
1United Arab EmiratesAS4975593
2AfghanistanAS29121286
\n", - "
" - ], - "text/plain": [ - " name continent population\n", - "0 Andorra EU 84000\n", - "1 United Arab Emirates AS 4975593\n", - "2 Afghanistan AS 29121286" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries_expression.execute()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can build other types of expressions, for example, one that instead of returning a table,\n", - "returns a columns." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
r0 := AlchemyTable: countries\n",
-       "  iso_alpha2  string\n",
-       "  iso_alpha3  string\n",
-       "  iso_numeric int32\n",
-       "  fips        string\n",
-       "  name        string\n",
-       "  capital     string\n",
-       "  area_km2    float64\n",
-       "  population  int32\n",
-       "  continent   string\n",
-       "\n",
-       "Selection[r0]\n",
-       "  selections:\n",
-       "    population_in_millions: r0.population / 1000000\n",
-       "
\n" - ], - "text/plain": [ - "r0 := AlchemyTable: countries\n", - " iso_alpha2 string\n", - " iso_alpha3 string\n", - " iso_numeric int32\n", - " fips string\n", - " name string\n", - " capital string\n", - " area_km2 float64\n", - " population int32\n", - " continent string\n", - "\n", - "Selection[r0]\n", - " selections:\n", - " population_in_millions: r0.population / 1000000" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "population_in_millions = (countries['population'] / 1_000_000).name(\n", - " 'population_in_millions'\n", - ")\n", - "population_in_millions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we check its type, we can see how it is a `FloatingColumn` expression." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ibis.expr.types.numeric.FloatingColumn" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(population_in_millions)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can combine the previous expression to be a column of a table expression." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
r0 := AlchemyTable: countries\n",
-       "  iso_alpha2  string\n",
-       "  iso_alpha3  string\n",
-       "  iso_numeric int32\n",
-       "  fips        string\n",
-       "  name        string\n",
-       "  capital     string\n",
-       "  area_km2    float64\n",
-       "  population  int32\n",
-       "  continent   string\n",
-       "\n",
-       "r1 := Selection[r0]\n",
-       "  selections:\n",
-       "    name:                   r0.name\n",
-       "    continent:              r0.continent\n",
-       "    population_in_millions: r0.population / 1000000\n",
-       "\n",
-       "Limit[r1, n=3]\n",
-       "
\n" - ], - "text/plain": [ - "r0 := AlchemyTable: countries\n", - " iso_alpha2 string\n", - " iso_alpha3 string\n", - " iso_numeric int32\n", - " fips string\n", - " name string\n", - " capital string\n", - " area_km2 float64\n", - " population int32\n", - " continent string\n", - "\n", - "r1 := Selection[r0]\n", - " selections:\n", - " name: r0.name\n", - " continent: r0.continent\n", - " population_in_millions: r0.population / 1000000\n", - "\n", - "Limit[r1, n=3]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "countries['name', 'continent', population_in_millions].limit(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since we are in lazy mode (not interactive), those expressions don't request any data from the database\n", - "unless explicitly requested with `.execute()`.\n", - "\n", - "## Logging queries\n", - "\n", - "For SQL backends (and for others when it makes sense), the query sent to the database can be logged.\n", - "This can be done by setting the `verbose` option to `True`." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SELECT t0.name, t0.continent, t0.population / CAST(:param_1 AS REAL) AS population_in_millions \n", - "FROM main.countries AS t0\n", - " LIMIT :param_2\n" - ] - }, - { - "data": { - "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", - "
namecontinentpopulation_in_millions
0AndorraEU0.084000
1United Arab EmiratesAS4.975593
2AfghanistanAS29.121286
\n", - "
" - ], - "text/plain": [ - " name continent population_in_millions\n", - "0 Andorra EU 0.084000\n", - "1 United Arab Emirates AS 4.975593\n", - "2 Afghanistan AS 29.121286" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ibis.options.verbose = True\n", - "\n", - "countries['name', 'continent', population_in_millions].limit(3).execute()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By default, the logging is done to the terminal, but we can process the query with a custom function.\n", - "This allows us to save executed queries to a file, save to a database, send them to a web service, etc.\n", - "\n", - "For example, to save queries to a file, we can write a custom function that given a query, saves it to a\n", - "log file." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "\n", - "def log_query_to_file(query: str) -> None:\n", - " \"\"\"Log queries to `./tutorial_queries.log`.\"\"\"\n", - " fname = Path() / 'tutorial_queries.log'\n", - " query = query.replace(\"\\n\", \" \")\n", - " with fname.open(mode='a') as f:\n", - " # log on a single line\n", - " f.write(f\"{query}\\n\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then we can set the `verbose_log` option to the custom function, execute one query,\n", - "wait one second, and execute another query." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "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", - "
namecontinentpopulation_in_millions
0AndorraEU0.084000
1United Arab EmiratesAS4.975593
2AfghanistanAS29.121286
\n", - "
" - ], - "text/plain": [ - " name continent population_in_millions\n", - "0 Andorra EU 0.084000\n", - "1 United Arab Emirates AS 4.975593\n", - "2 Afghanistan AS 29.121286" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ibis.options.verbose_log = log_query_to_file\n", - "\n", - "countries.execute()\n", - "countries['name', 'continent', population_in_millions].limit(3).execute()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This has created a log file in `$PWD/tutorial_queries.log` where the executed queries have been logged." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 1\tSELECT t0.iso_alpha2, t0.iso_alpha3, t0.iso_numeric, t0.fips, t0.name, t0.capital, t0.area_km2, t0.population, t0.continent FROM main.countries AS t0\n", - " 2\tSELECT t0.name, t0.continent, t0.population / CAST(:param_1 AS REAL) AS population_in_millions FROM main.countries AS t0 LIMIT :param_2\n", - " 3\tSELECT t0.iso_alpha2, t0.iso_alpha3, t0.iso_numeric, t0.fips, t0.name, t0.capital, t0.area_km2, t0.population, t0.continent FROM main.countries AS t0\n", - " 4\tSELECT t0.name, t0.continent, t0.population / CAST(:param_1 AS REAL) AS population_in_millions FROM main.countries AS t0 LIMIT :param_2\n" - ] - } - ], - "source": [ - "!cat -n $PWD/tutorial_queries.log" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/tutorial/04-More-Value-Expressions.ipynb b/docs/tutorial/04-More-Value-Expressions.ipynb deleted file mode 100644 index 40a43a62d725..000000000000 --- a/docs/tutorial/04-More-Value-Expressions.ipynb +++ /dev/null @@ -1,526 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# More Value Expressions\n", - "Let's walk through some more value expressions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!curl -LsS -o geography.db 'https://storage.googleapis.com/ibis-tutorial-data/geography.db'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import tempfile\n", - "\n", - "import ibis\n", - "\n", - "ibis.options.interactive = True\n", - "\n", - "connection = ibis.sqlite.connect(\n", - " 'geography.db'\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Type casting\n", - "\n", - "The Ibis type system supports the most common data types used in analytics, including support for nested types like lists, structs, and maps.\n", - "\n", - "Type names can be used to cast from one type to another." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries = connection.table('countries')\n", - "countries" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries = connection.table('countries')\n", - "countries.population.cast('float').sum()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries.area_km2.cast('int32').sum()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Case / if-then-else expressions\n", - "\n", - "\n", - "We support a number of variants of the SQL-equivalent `CASE` expression, and will add more API functions over time to meet different use cases and enhance the expressiveness of any branching-based value logic." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expr = (\n", - " countries.continent.case()\n", - " .when('AF', 'Africa')\n", - " .when('AN', 'Antarctica')\n", - " .when('AS', 'Asia')\n", - " .when('EU', 'Europe')\n", - " .when('NA', 'North America')\n", - " .when('OC', 'Oceania')\n", - " .when('SA', 'South America')\n", - " .else_(countries.continent)\n", - " .end()\n", - " .name('continent_name')\n", - ")\n", - "\n", - "expr.value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If the `else_` default condition is not provided, any values not matching one of the conditions will be `NULL`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expr = (\n", - " countries.continent.case()\n", - " .when('AF', 'Africa')\n", - " .when('AS', 'Asia')\n", - " .when('EU', 'Europe')\n", - " .when('NA', 'North America')\n", - " .when('OC', 'Oceania')\n", - " .when('SA', 'South America')\n", - " .end()\n", - " .name('continent_name_with_nulls')\n", - ")\n", - "\n", - "expr.value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To test for an arbitrary series of boolean conditions, use the `case` API method and pass any boolean expressions potentially involving columns of the table:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expr = (\n", - " ibis.case()\n", - " .when(countries.population > 25_000_000, 'big')\n", - " .when(countries.population < 5_000_000, 'small')\n", - " .else_('medium')\n", - " .end()\n", - " .name('size')\n", - ")\n", - "\n", - "countries['name', 'population', expr].limit(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Simple ternary-cases (like the Python `X if COND else Y`) can be written using the `ifelse` function:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expr = (countries.continent == 'AS').ifelse('Asia', 'Not Asia').name('is_asia')\n", - "\n", - "countries['name', 'continent', expr].limit(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Set membership\n", - "\n", - "\n", - "The `isin` and `notin` functions are like their pandas counterparts. These can take:\n", - "\n", - "- A list of value expressions, either literal values or other column expressions\n", - "- An array/column expression of some kind" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "is_america = countries.continent.isin(['NA', 'SA'])\n", - "countries[is_america].continent.value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also check for membership in an array. Here is an example of filtering based on the top 3 (ignoring ties) most frequently-occurring values in the `string_col` column of alltypes:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "top_continents = countries.continent.value_counts().limit(3).continent\n", - "top_continents_filter = countries.continent.isin(top_continents)\n", - "expr = countries[top_continents_filter]\n", - "\n", - "expr.count()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is a common enough operation that we provide a special analytical filter function `topk`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries.continent.topk(3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Cool, huh? More on `topk` later." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Null Checking\n", - "\n", - "Like their pandas equivalents, the `isnull` and `notnull` functions return True values if the values are null, or non-null, respectively. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expr = (\n", - " countries.continent.case()\n", - " .when('AF', 'Africa')\n", - " .when('EU', 'Europe')\n", - " .when('AS', 'Asia')\n", - " .end()\n", - " .name('top_continent_name')\n", - ")\n", - "\n", - "expr.isnull().value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Functions like `isnull` can be combined with `case` expressions or functions like `ifelse` to replace null values with some other value. `ifelse` here will use the first value supplied for any `True` value and the second value for any `False` value. Either value can be a scalar or array. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expr2 = expr.isnull().ifelse('Other continent', expr).name('continent')\n", - "expr2.value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Distinct-based operations\n", - "\n", - "\n", - "Ibis supports using `distinct` to remove duplicate rows or values on tables or arrays. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries[['continent']].distinct()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This can be combined with `count` to form a reduction metric:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "metric = countries[['continent']].distinct().count().name('num_continents')\n", - "metric" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## String operations\n", - "\n", - "\n", - "What's supported is pretty basic right now. We intend to support the full gamut of regular expression munging with a nice API, though in some cases some work will be required on SQLite's backend to support everything. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries[['name']].limit(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At the moment, basic substring operations (`substr`, with conveniences `left` and `right`) and Python-like APIs such as `lower` and `upper` (for case normalization) are supported. So you could count first letter occurrences in a string column like so:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "expr = countries.name.lower().left(1).name('first_letter')\n", - "expr.value_counts().order_by(ibis.desc('first_letter_count')).limit(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For fuzzy and regex filtering/searching, you can use one of the following\n", - "\n", - "- `like`, works as the SQL `LIKE` keyword\n", - "- `rlike`, like `re.search` or SQL `RLIKE`\n", - "- `contains`, like `x in str_value` in Python" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries[countries.name.like('%GE%')].name" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries[countries.name.lower().rlike('.*ge.*')].name" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries[countries.name.lower().contains('ge')].name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Timestamp operations\n", - "\n", - "\n", - "Date and time functionality is relatively limited at present compared with pandas, but we'll get there. The main things we have right now are\n", - "\n", - "- Field access (year, month, day, ...)\n", - "- Timedeltas\n", - "- Comparisons with fixed timestamps" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "independence = connection.table('independence')\n", - "\n", - "independence[\n", - " independence.independence_date,\n", - " independence.independence_date.month().name('month'),\n", - "].limit(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Somewhat more comprehensively" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def get_field(f):\n", - " return getattr(independence.independence_date, f)().name(f)\n", - "\n", - "\n", - "fields = [\n", - " 'year',\n", - " 'month',\n", - " 'day',\n", - "] # datetime fields can also use: 'hour', 'minute', 'second', 'millisecond'\n", - "projection = [independence.independence_date] + [get_field(x) for x in fields]\n", - "independence[projection].limit(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For timestamp arithmetic and comparisons, check out functions in the top level `ibis` namespace. This include things like `day` and `second`, but also the `ibis.timestamp` function:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "independence[\n", - " independence.independence_date.min(),\n", - " independence.independence_date.max(),\n", - " independence.count().name('nrows'),\n", - "].distinct()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "independence[independence.independence_date > '2000-01-01'].count()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Some backends support adding offsets. For example:\n", - "\n", - "```python\n", - "independence.independence_date + ibis.interval(days=1)\n", - "ibis.now() - independence.independence_date\n", - "```" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/tutorial/05-IO-Create-Insert-External-Data.ipynb b/docs/tutorial/05-IO-Create-Insert-External-Data.ipynb deleted file mode 100644 index c42ef5cdd988..000000000000 --- a/docs/tutorial/05-IO-Create-Insert-External-Data.ipynb +++ /dev/null @@ -1,279 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Creating and Inserting Data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import tempfile\n", - "from pathlib import Path\n", - "from urllib.request import urlretrieve\n", - "\n", - "tempdir = Path(tempfile.gettempdir())\n", - "geography_db_file = tempdir / 'geography.db'\n", - "\n", - "if geography_db_file.exists():\n", - " geography_db_file.unlink()\n", - "\n", - "_ = urlretrieve(\n", - " 'https://storage.googleapis.com/ibis-tutorial-data/geography.db',\n", - " geography_db_file,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "import ibis\n", - "\n", - "ibis.options.interactive = True\n", - "\n", - "connection = ibis.sqlite.connect(geography_db_file)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating new tables from Ibis expressions\n", - "\n", - "\n", - "Suppose you have an Ibis expression that produces a table:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries = connection.table('countries')\n", - "\n", - "continent_name = (\n", - " countries.continent.case()\n", - " .when('AF', 'Africa')\n", - " .when('AN', 'Antarctica')\n", - " .when('AS', 'Asia')\n", - " .when('EU', 'Europe')\n", - " .when('NA', 'North America')\n", - " .when('OC', 'Oceania')\n", - " .when('SA', 'South America')\n", - " .else_(countries.continent)\n", - " .end()\n", - " .name('continent_name')\n", - ")\n", - "\n", - "expr = countries[countries.continent, continent_name].distinct()\n", - "expr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To create a table in the database from the results of this expression, use the connection's `create_table` method:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "connection.create_table('continents', expr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "continents = connection.table('continents')\n", - "continents" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Tables can be similarly dropped with `drop_table`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "connection.drop_table('continents')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating new tables from in-memory Pandas dataframes\n", - "\n", - "Pandas and NumPy are convenient to create test data in memory as a dataframe. This can then be turned into an Ibis expression using `ibis.memtable`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "\n", - "def make_students_df(num_records, random_seed=None):\n", - " rng = np.random.default_rng(random_seed)\n", - " return pd.DataFrame(\n", - " {\n", - " \"firstname\": rng.choice([\"Alice\", \"Bob\", \"Jane\", \"John\"], size=num_records),\n", - " \"birth_date\": (\n", - " pd.to_datetime(\"2021-01-01\")\n", - " + pd.to_timedelta(rng.integers(0, 365, size=num_records), unit=\"D\")\n", - " ),\n", - " \"math_grade\": rng.normal(55, 10, size=num_records).clip(0, 100).round(1),\n", - " }\n", - " )\n", - "\n", - "students_df = make_students_df(21, random_seed=42)\n", - "students_memtable = ibis.memtable(students_df)\n", - "students_memtable\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By default `ibis.memtable` uses the `duckdb` in-memory backend to execute queries against the Pandas dataframe data efficiently.\n", - "\n", - "We can then materialize it as a physical table for a specific backend if necessary:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "students_db_file = tempdir / \"ibis_tutorial_students.duckdb\"\n", - "if students_db_file.exists():\n", - " students_db_file.unlink()\n", - "\n", - "connection = ibis.duckdb.connect(students_db_file)\n", - "connection.create_table('students', students_memtable)\n", - "students = connection.table('students')\n", - "students.group_by(students.birth_date.month()).aggregate(\n", - " count=students.count(),\n", - " avg_math_grade=students.math_grade.mean(),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that NumPy, Pandas and `ibis.memtable` are only suitable to generate data that fits in memory. To generate data larger than memory, we can generate data in chunks and iteratively insert the chunks using `connection.insert(tablename, pandas_dataframe)`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "connection.insert(students.get_name(), make_students_df(10_000, random_seed=43))\n", - "students.count()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "connection.insert(students.get_name(), make_students_df(10_000, random_seed=44))\n", - "students.count()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "students.group_by(students.birth_date.month()).aggregate(\n", - " count=students.count(),\n", - " avg_math_grade=students.math_grade.mean(),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Inserting data into existing tables\n", - "\n", - "\n", - "Some backends support inserting data into existing tables from expressions. This can be done using `connection.insert('table_name', expr)`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.10.6 ('base')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - }, - "vscode": { - "interpreter": { - "hash": "c91744e846ab1fb46a81a92b1fa828c0e6b1381e7e12fd7b2bb300d813000458" - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/tutorial/06-ComplexFiltering.ipynb b/docs/tutorial/06-ComplexFiltering.ipynb deleted file mode 100644 index b537317beabc..000000000000 --- a/docs/tutorial/06-ComplexFiltering.ipynb +++ /dev/null @@ -1,227 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Complex Filtering\n", - "\n", - "The filtering examples we've shown to this point have been pretty simple, either comparisons between columns or fixed values, or set filter functions like `isin` and `notin`. \n", - "\n", - "Ibis supports a number of richer analytical filters that can involve one or more of:\n", - "\n", - "- Aggregates computed from the same or other tables\n", - "- Conditional aggregates (in SQL-speak these are similar to \"correlated subqueries\")\n", - "- \"Existence\" set filters (equivalent to the SQL `EXISTS` and `NOT EXISTS` keywords)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "!curl -LsS -o geography.db 'https://storage.googleapis.com/ibis-tutorial-data/geography.db'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import tempfile\n", - "\n", - "import ibis\n", - "\n", - "ibis.options.interactive = True\n", - "\n", - "connection = ibis.sqlite.connect(\n", - " 'geography.db'\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using scalar aggregates in filters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries = connection.table('countries')\n", - "countries.limit(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We could always compute some aggregate value from the table and use that in another expression, or we can use a data-derived aggregate in the filter. Take the average of a column. For example the average of countries size:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries.area_km2.mean()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use this expression as a substitute for a scalar value in a filter, and the execution engine will combine everything into a single query rather than having to access the database multiple times. For example, we want to filter European countries larger than the average country size in the world. See how most countries in Europe are smaller than the world average:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cond = countries.area_km2 > countries.area_km2.mean()\n", - "expr = countries[(countries.continent == 'EU') & cond]\n", - "expr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conditional aggregates\n", - "\n", - "\n", - "Suppose that we wish to filter using an aggregate computed conditional on some other expressions holding true.\n", - "\n", - "For example, we want to filter European countries larger than the average country size, but this time of the average in Africa. African countries have an smaller size compared to the world average, and France gets into the list:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "conditional_avg = countries[countries.continent == 'AF'].area_km2.mean()\n", - "countries[\n", - " (countries.continent == 'EU') & (countries.area_km2 > conditional_avg)\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## \"Existence\" filters\n", - "\n", - "\n", - "Some filtering involves checking for the existence of a particular value in a column of another table, or amount the results of some value expression. This is common in many-to-many relationships, and can be performed in numerous different ways, but it's nice to be able to express it with a single concise statement and let Ibis compute it optimally.\n", - "\n", - "An example could be finding all countries that had **any** year with a higher GDP than 3 trillion US dollars:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gdp = connection.table('gdp')\n", - "gdp" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cond = ((gdp.country_code == countries.iso_alpha3) & (gdp.value > 3e12)).any()\n", - "\n", - "countries[cond]['name']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note how this is different than a join between `countries` and `gdp`, which would return one row per year. The method `.any()` is equivalent to filtering with a subquery." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Filtering in aggregations\n", - "\n", - "\n", - "Suppose that you want to compute an aggregation with a subset of the data for _only one_ of the metrics / aggregates in question, and the complete data set with the other aggregates. Most aggregation functions are thus equipped with a `where` argument. Let me show it to you in action:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "arctic = countries.name.isin(\n", - " [\n", - " 'United States',\n", - " 'Canada',\n", - " 'Finland',\n", - " 'Greenland',\n", - " 'Iceland',\n", - " 'Norway',\n", - " 'Russia',\n", - " 'Sweden',\n", - " ]\n", - ")\n", - "\n", - "metrics = [\n", - " countries.count().name('# countries'),\n", - " countries.population.sum().name('total population'),\n", - " countries.population.sum(where=arctic).name('population arctic countries'),\n", - "]\n", - "\n", - "(countries.group_by(countries.continent).aggregate(metrics))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/tutorial/07-Analytics-Tools.ipynb b/docs/tutorial/07-Analytics-Tools.ipynb deleted file mode 100644 index 7ae1dc35eeb0..000000000000 --- a/docs/tutorial/07-Analytics-Tools.ipynb +++ /dev/null @@ -1,238 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Analytics Tools" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "!curl -LsS -o geography.db 'https://storage.googleapis.com/ibis-tutorial-data/geography.db'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import tempfile\n", - "\n", - "import ibis\n", - "\n", - "ibis.options.interactive = True\n", - "\n", - "connection = ibis.sqlite.connect(\n", - " 'geography.db'\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Frequency tables\n", - "\n", - "Ibis provides the `value_counts` API, just like pandas, for computing a frequency table for a table column or array expression. You might have seen it used already earlier in the tutorial. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "countries = connection.table('countries')\n", - "countries.continent.value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This can be customized, of course:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "freq = countries.group_by(countries.continent).aggregate(\n", - " [\n", - " countries.count().name('# countries'),\n", - " countries.population.sum().name('total population'),\n", - " ]\n", - ")\n", - "freq" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Binning and histograms\n", - "\n", - "\n", - "Numeric array expressions (columns with numeric type and other array expressions) have `bucket` and `histogram` methods which produce different kinds of binning. These produce category values (the computed bins) that can be used in grouping and other analytics.\n", - "\n", - "Some backends implement the `.summary()` method, which can be used to see the general distribution of a column.\n", - "\n", - "Let's have a look at a few examples." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alright then, now suppose we want to split the countries up into some buckets of our choosing for their population:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "buckets = [0, 1e6, 1e7, 1e8, 1e9]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `bucket` function creates a bucketed category from the prices:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bucketed = countries.population.bucket(buckets).name('bucket')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's have a look at the value counts:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bucketed.value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The buckets we wrote down define 4 buckets numbered 0 through 3. The `NaN` is a pandas `NULL` value (since that's how pandas represents nulls in numeric arrays), so don't worry too much about that. Since the bucketing ends at 100000, we see there are 4122 values that are over 100000. These can be included in the bucketing with `include_over`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bucketed = countries.population.bucket(buckets, include_over=True).name(\n", - " 'bucket'\n", - ")\n", - "bucketed.value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `bucketed` object here is a special **_category_** type" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bucketed.type()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Category values can either have a known or unknown **_cardinality_**. In this case, there's either 4 or 5 buckets based on how we used the `bucket` function.\n", - "\n", - "Labels can be assigned to the buckets at any time using the `label` function:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "bucket_counts = bucketed.value_counts()\n", - "\n", - "labeled_bucket = bucket_counts.bucket.label(\n", - " ['< 1M', '> 1M', '> 10M', '> 100M', '> 1B']\n", - ").name('bucket_name')\n", - "\n", - "expr = bucket_counts[labeled_bucket, bucket_counts].order_by('bucket')\n", - "expr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Nice, huh?\n", - "\n", - "Some backends implement `histogram(num_bins)`, a linear (fixed size bin) equivalent." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/tutorial/index.md b/docs/tutorial/index.md deleted file mode 100644 index cda38bcde642..000000000000 --- a/docs/tutorial/index.md +++ /dev/null @@ -1,11 +0,0 @@ -# Introduction to Ibis - -Ibis is a Python framework to access data and perform analytical computations from different sources, in a standard way. - -In a way, you can think of Ibis as writing SQL in Python, with a focus on analytics, more than simply accessing data. And aside from SQL databases, you can use it with other backends, including big data systems. - -Why not simply use SQL instead? SQL is great and widely used. However, SQL has different flavors for different database engines, and SQL is very difficult to maintain when your queries are very complex. Ibis solves both problems by standardizing your code across backends and making it maintainable. Since Ibis is Python, you can structure your code in different files, functions, name variables, write tests, etc. - -This tutorial will guide you through Ibis features and provide practical examples. Some knowledge of Python is assumed and knowledge of SQL will be helpful but not required. - -Ibis is open source - if anything can be improved in this tutorial, or in Ibis itself, please open an issue in the Ibis GitHub repository or open a pull request with the fix. diff --git a/docs/tutorial/rendered/08-Geospatial-Analysis.ipynb b/docs/tutorial/rendered/08-Geospatial-Analysis.ipynb deleted file mode 100644 index 5350de0975b1..000000000000 --- a/docs/tutorial/rendered/08-Geospatial-Analysis.ipynb +++ /dev/null @@ -1,653 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Geospatial Analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One of the most popular extensions to PostgreSQL is PostGIS,\n", - "which adds support for storing geospatial geometries,\n", - "as well as functionality for reasoning about and performing operations on those geometries.\n", - "\n", - "This is a demo showing how to assemble ibis expressions for a PostGIS-enabled database.\n", - "We will be using a database that has been loaded with an [Open Street Map](https://www.openstreetmap.org/)\n", - "extract for Southern California.\n", - "This extract can be found [here](https://download.geofabrik.de/north-america/us/california/socal.html),\n", - "and loaded into PostGIS using a tool like [ogr2ogr](https://gdal.org/programs/ogr2ogr.html)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Preparation\n", - "\n", - "We first need to set up a demonstration database and load it with the sample data.\n", - "If you have Docker installed, you can download and launch a PostGIS database with the following:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cd5e5e60822770ddc628adce3f4d26975fa4cfe0325d81925a6fe70b088253cc\n" - ] - } - ], - "source": [ - "# Launch the postgis container.\n", - "# This may take a bit of time if it needs to download the image.\n", - "!docker run -d -p 5432:5432 --name postgis-db -e POSTGRES_PASSWORD=supersecret mdillon/postgis:9.6-alpine" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we download our OSM extract (about 400 MB):" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "!wget https://download.geofabrik.de/north-america/us/california/socal-latest.osm.pbf" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, we load it into the database using `ogr2ogr` (this may take some time):" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0...10...20...30...40...50...60...70...80...90...100 - done.\n" - ] - } - ], - "source": [ - "!ogr2ogr -f PostgreSQL PG:\"dbname='postgres' user='postgres' password='supersecret' port=5432 host='localhost'\" -lco OVERWRITE=yes --config PG_USE_COPY YES socal-latest.osm.pbf" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Connecting to the database\n", - "\n", - "We first make the relevant imports, and connect to the PostGIS database:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "import geopandas\n", - "\n", - "import ibis\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "client = ibis.postgres.connect(\n", - " url='postgres://postgres:supersecret@localhost:5432/postgres'\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's look at the tables available in the database:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['geography_columns',\n", - " 'geometry_columns',\n", - " 'lines',\n", - " 'multilinestrings',\n", - " 'multipolygons',\n", - " 'other_relations',\n", - " 'points',\n", - " 'raster_columns',\n", - " 'raster_overviews',\n", - " 'spatial_ref_sys']" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "client.list_tables()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see, this Open Street Map extract stores its data according to the geometry type.\n", - "Let's grab references to the polygon and line tables:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "polygons = client.table('multipolygons')\n", - "lines = client.table('lines')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Querying the data\n", - "\n", - "We query the polygons table for shapes with an administrative level of 8,\n", - "which corresponds to municipalities.\n", - "\n", - "We also reproject some of the column names so we don't have a name collision later." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "cities = polygons[polygons.admin_level == '8']\n", - "\n", - "cities = cities[\n", - " cities.name.name('city_name'), cities.wkb_geometry.name('city_geometry')\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can assemble a specific query for the city of Los Angeles,\n", - "and execute it to get the geometry of the city.\n", - "This will be useful later when reasoning about other geospatial relationships in the LA area:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "los_angeles = cities[cities.city_name == 'Los Angeles']\n", - "la_city = los_angeles.execute()\n", - "la_city_geom = la_city.iloc[0].city_geometry\n", - "la_city_geom" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's also extract freeways from the lines table,\n", - "which are indicated by the value `'motorway'` in the highway column:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "highways = lines[(lines.highway == 'motorway')]\n", - "highways = highways[\n", - " highways.name.name('highway_name'),\n", - " highways.wkb_geometry.name('highway_geometry'),\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Making a spatial join\n", - "\n", - "Let's test a spatial join by selecting all the highways that intersect the city of Los Angeles,\n", - "or one if its neighbors.\n", - "\n", - "We begin by assembling an expression for Los Angeles and its neighbors.\n", - "We consider a city to be a neighbor if it has any point of intersection\n", - "(by this critereon we also get Los Angeles itself).\n", - "\n", - "We can pass in the city geometry that we selected above when making our query by marking it as a literal value in `ibis`:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "la_neighbors_expr = cities[\n", - " cities.city_geometry.intersects(\n", - " ibis.literal(la_city_geom, type='multipolygon;4326:geometry')\n", - " )\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "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", - "
city_namecity_geometry
0Inglewood(POLYGON ((-118.346107 33.932694, -118.346076 ...
1Long Beach(POLYGON ((-118.232975 33.714615, -118.231803 ...
2Vernon(POLYGON ((-118.204281 33.988934, -118.204265 ...
3Simi Valley(POLYGON ((-118.6334489 34.2697148, -118.63339...
4Los Angeles(POLYGON ((-118.464911 34.330061, -118.457574 ...
5Gardena(POLYGON ((-118.326689 33.91283, -118.326502 3...
6Commerce(POLYGON ((-118.127398 34.008033, -118.127411 ...
7Glendale(POLYGON ((-118.183869 34.148557, -118.18392 3...
8Rancho Palos Verdes(POLYGON ((-118.417912 33.762329, -118.415164 ...
9Lomita(POLYGON ((-118.30879 33.8022812, -118.308786 ...
10Torrance(POLYGON ((-118.3404761 33.7862518, -118.33789...
11Hawthorne(POLYGON ((-118.3787037 33.901905, -118.378660...
12Calabasas(POLYGON ((-118.6097079 34.1472647, -118.61058...
13Hidden Hills(POLYGON ((-118.6681703 34.1767732, -118.65858...
14Santa Monica(POLYGON ((-118.5534678 33.9843349, -118.53781...
15Culver City(POLYGON ((-118.3865712 33.9768672, -118.38547...
16San Fernando(POLYGON ((-118.454741 34.283709, -118.454756 ...
17Malibu(POLYGON ((-118.9517221 33.9928639, -118.94901...
18El Segundo(POLYGON ((-118.4758021 33.8881822, -118.49898...
19Beverly Hills(POLYGON ((-118.3897334 34.0765007, -118.38986...
20West Hollywood(POLYGON ((-118.3958762 34.091079, -118.395592...
21Carson(POLYGON ((-118.286874 33.7978063, -118.287645...
22Lynwood(POLYGON ((-118.187027 33.905485, -118.186491 ...
23South Pasadena(POLYGON ((-118.1552947 34.09859, -118.1567112...
24Burbank(POLYGON ((-118.292761 34.221654, -118.337462 ...
25Pasadena(POLYGON ((-118.197819 34.237289, -118.197804 ...
26Alhambra(POLYGON ((-118.164835 34.062283, -118.164805 ...
27Monterey Park(POLYGON ((-118.164835 34.062283, -118.164735 ...
28Huntington Park(POLYGON ((-118.204281 33.988934, -118.204265 ...
\n", - "
" - ], - "text/plain": [ - " city_name city_geometry\n", - "0 Inglewood (POLYGON ((-118.346107 33.932694, -118.346076 ...\n", - "1 Long Beach (POLYGON ((-118.232975 33.714615, -118.231803 ...\n", - "2 Vernon (POLYGON ((-118.204281 33.988934, -118.204265 ...\n", - "3 Simi Valley (POLYGON ((-118.6334489 34.2697148, -118.63339...\n", - "4 Los Angeles (POLYGON ((-118.464911 34.330061, -118.457574 ...\n", - "5 Gardena (POLYGON ((-118.326689 33.91283, -118.326502 3...\n", - "6 Commerce (POLYGON ((-118.127398 34.008033, -118.127411 ...\n", - "7 Glendale (POLYGON ((-118.183869 34.148557, -118.18392 3...\n", - "8 Rancho Palos Verdes (POLYGON ((-118.417912 33.762329, -118.415164 ...\n", - "9 Lomita (POLYGON ((-118.30879 33.8022812, -118.308786 ...\n", - "10 Torrance (POLYGON ((-118.3404761 33.7862518, -118.33789...\n", - "11 Hawthorne (POLYGON ((-118.3787037 33.901905, -118.378660...\n", - "12 Calabasas (POLYGON ((-118.6097079 34.1472647, -118.61058...\n", - "13 Hidden Hills (POLYGON ((-118.6681703 34.1767732, -118.65858...\n", - "14 Santa Monica (POLYGON ((-118.5534678 33.9843349, -118.53781...\n", - "15 Culver City (POLYGON ((-118.3865712 33.9768672, -118.38547...\n", - "16 San Fernando (POLYGON ((-118.454741 34.283709, -118.454756 ...\n", - "17 Malibu (POLYGON ((-118.9517221 33.9928639, -118.94901...\n", - "18 El Segundo (POLYGON ((-118.4758021 33.8881822, -118.49898...\n", - "19 Beverly Hills (POLYGON ((-118.3897334 34.0765007, -118.38986...\n", - "20 West Hollywood (POLYGON ((-118.3958762 34.091079, -118.395592...\n", - "21 Carson (POLYGON ((-118.286874 33.7978063, -118.287645...\n", - "22 Lynwood (POLYGON ((-118.187027 33.905485, -118.186491 ...\n", - "23 South Pasadena (POLYGON ((-118.1552947 34.09859, -118.1567112...\n", - "24 Burbank (POLYGON ((-118.292761 34.221654, -118.337462 ...\n", - "25 Pasadena (POLYGON ((-118.197819 34.237289, -118.197804 ...\n", - "26 Alhambra (POLYGON ((-118.164835 34.062283, -118.164805 ...\n", - "27 Monterey Park (POLYGON ((-118.164835 34.062283, -118.164735 ...\n", - "28 Huntington Park (POLYGON ((-118.204281 33.988934, -118.204265 ..." - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "la_neighbors = la_neighbors_expr.execute().dropna()\n", - "la_neighbors" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we join the neighbors expression with the freeways expression,\n", - "on the condition that the highways intersect any of the city geometries:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "la_highways_expr = highways.inner_join(\n", - " la_neighbors_expr,\n", - " highways.highway_geometry.intersects(la_neighbors_expr.city_geometry),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "la_highways = la_highways_expr.execute()\n", - "la_highways.plot()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Combining the results\n", - "\n", - "Now that we have made a number of queries and joins, let's combine them into a single plot.\n", - "To make the plot a bit nicer, we can also load some shapefiles for the coast and land:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "ocean = geopandas.read_file(\n", - " 'https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/physical/ne_10m_ocean.zip'\n", - ")\n", - "land = geopandas.read_file(\n", - " 'https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/physical/ne_10m_land.zip'\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ax = la_neighbors.dropna().plot(figsize=(16, 16), cmap='rainbow', alpha=0.9)\n", - "ax.set_autoscale_on(False)\n", - "ax.set_axis_off()\n", - "land.plot(ax=ax, color='tan', alpha=0.4)\n", - "\n", - "ax = ocean.plot(ax=ax, color='navy')\n", - "la_highways.plot(ax=ax, color='maroon')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -}