From e3976d49688b6c6be8a874d0cde7681a5c9a388d Mon Sep 17 00:00:00 2001 From: MarsBarLee <46167686+MarsBarLee@users.noreply.github.com> Date: Wed, 8 Feb 2023 11:35:23 -0500 Subject: [PATCH 1/4] Add files --- ...ic-flavor-of-sql-for-python-programmers.md | 1218 +++++++++++++++++ ...2db9528ae260926e1258de124fe156ac24e5ed.png | Bin 0 -> 37004 bytes ...aaeda319436dc88038861ff8ee72bc5bdd140e.png | Bin 0 -> 8284 bytes ...7c33e991c43658e0b328f336af5eb6723531bc.png | Bin 0 -> 21326 bytes 4 files changed, 1218 insertions(+) create mode 100644 apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md create mode 100644 apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/5d2db9528ae260926e1258de124fe156ac24e5ed.png create mode 100644 apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/7caaeda319436dc88038861ff8ee72bc5bdd140e.png create mode 100644 apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png diff --git a/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md b/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md new file mode 100644 index 000000000..a45589aa4 --- /dev/null +++ b/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md @@ -0,0 +1,1218 @@ +--- +title: "Ibis: an idiomatic flavor of SQL for Python programmers" +author: tony-fast +published: June 26, 2020 +description: 'Ibis is an alternative approach using databases that relies on Python rather than SQL experience. This post focuses on writing SQL expressions in Python and how to compose queries visually using Ibis.' +category: [PyData ecosystem] +featuredImage: + src: /posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png + alt: 'Excellent alt-text describing the featured image' +hero: + imageSrc: /posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png + imageAlt: 'Excellent alt-text describing the hero image' +--- + +![The Ibis project logo, which is a black and white tall bird.](/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png) + +[Ibis](https://www.ibis-project.org/) is a mature open-source project +that has been in development for about 5 years; it currently has about +1350 stars on Github. It provides an interface to SQL for Python +programmers and bridges the gap between remote storage & execution +systems. These features provide authors the ability to: + +1. write backend-independent [SQL](https://en.wikipedia.org/wiki/SQL) + expressions in + [Python](https://en.wikipedia.org/wiki/Python_(programming_language)); +2. access different database connections (eg. + [SQLite](https://www.sqlite.org/index.html), + [OmniSci](https://www.omnisci.com/), + [Pandas](http://pandas.pydata.org/)); and +3. confirm visually their SQL queries with [directed acyclic graphs + (DAGs)](https://en.wikipedia.org/wiki/Directed_acyclic_graph). + +Ibis is an alternative approach using databases that relies on Python +rather than SQL experience. Typically, users have to learn an entirely +new syntax or flavor of SQL to perform simple tasks. Now, those familiar +with Python can avoid a new learning curve by using Ibis for composing +and executing database queries using familiar Python syntaxes (i.e., +similar to Pandas and Dask). Ibis assists in formation of SQL +expressions by providing visual feedback about each Python object. This +post focuses on writing SQL expressions in Python and how to compose +queries visually using Ibis. We'll demonstrate this with a SQLite +database---in particular, [Sean Lahman's baseball +database](http://www.seanlahman.com/baseball-archive/statistics/). + +## Connecting to a database + +To get started, we'll need to establish a [database +connection](https://en.wikipedia.org/wiki/Database_connection). Ibis +makes it easy to create connections of different types. Let's go ahead +and do this now with the function +[`ibis.sqlite.connect`](https://docs.ibis-project.org/docs/api.html#sqlite-client) +(in this instance, the database used is a SQLite database): + +``` python +%matplotlib inline +import ibis +import pathlib, requests + +db_path = pathlib.Path.cwd() / 'lahmansbaseballdb.sqlite' + +if not db_path.exists(): # Downloads database if necessary + with open(db_path, 'wb') as f: + URL = 'https://github.com/WebucatorTraining/lahman-baseball-mysql/raw/master/lahmansbaseballdb.sqlite' + req = requests.get(URL) + f.write(req.content) + +client = ibis.sqlite.connect(db_path.name) # Opens SQLite database connection +``` + +The `client` object represents our connection to the database. It is +essential to use the appropriate Ibis connection---SQLite in this case +constructed through the [`ibis.sqlite` +namespace](https://docs.ibis-project.org/docs/api.html#sqlite-client)---for +the particular database. + +This [baseball +database](http://www.seanlahman.com/baseball-archive/statistics/) has 29 +distinct tables; we can see by running the following code: + +``` python +tables = client.list_tables() +print(f'This database has {len(tables)} tables.') +``` + + This database has 29 tables. + +## Selecting and visualizing tables + +Displaying the list `tables`, gives the names of all the tables which +include, among others, tables with identifiers + +``` {python} +[...'appearances'...'halloffame', 'homegames', 'leagues', 'managers',...] +``` + +Let's use the database connection to extract & examine dataframe +representations of the `halloffame` and `appearances` tables from the +baseball database. To do this, we can invoke the [`table` +method](https://docs.ibis-project.org/docs/generated/ibis.impala.api.ImpalaDatabase.table.html) +associated with the `client` object called with the appropriate names. + +``` python +halloffame = client.table('halloffame', database='base') +appearances = client.table('appearances', database='base') +``` + +At the moment, the objects objects `halloffame` and `appearances` just +constructed don't hold any data; instead, the objects are *expressions* +of type `TableExpr` that represent putative operations applied to the +data. The data itself is inert wherever it's actually located---in this +case, within the SQLite database. We can verify this by examining their +types or by using assertions like this: + +``` python +print(f'The object appearances has type {type(appearances).__name__}.') +assert isinstance(halloffame, ibis.expr.types.TableExpr), 'Wrong type for halloffame' +``` + + The object appearances has type TableExpr. + +We can examine the contents of these Ibis table expressions using the +[`TableExpr.limit`](https://docs.ibis-project.org/docs/generated/ibis.expr.api.TableExpr.limit.html) +or the `TableExpr.head` method (similar to the [Pandas `DataFrame.head` +method](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.head.html)). +That is, we can define an object `sample` that represents a sub-table +comprising the first few rows of the `halloffame` table: + +``` python +sample = halloffame.head() +print(f'The object sample is of type {type(sample).__name__}') +``` + + The object sample is of type TableExpr + +Remember, the object `sample` is a `TableExpr` object representing some +SQL query to extracts a sub-table from a larger table. We can view the +actual SQL query corresponding to `sample` by compiling it with the +[`compile` +method](https://docs.ibis-project.org/docs/generated/ibis.expr.api.Expr.compile.html) +and converting the result to a string: + +``` python +str(sample.compile()) +``` + + 'SELECT t0."ID", t0."playerID", t0.yearid, t0."votedBy", t0.ballots, t0.needed, t0.votes, t0.inducted, t0.category, t0.needed_note \nFROM base.halloffame AS t0\n LIMIT ? OFFSET ?' + +Another useful feature of Ibis is its ability to represent an SQL query +as a [DAG (Directed Acyclic +Graph)](https://en.wikipedia.org/wiki/Directed_acyclic_graph). For +instance, evaluating the object `sample` at the interactive command +prompt yields a visualization of a sequence of database operations: + +``` python +sample # This produces the image below in a suitably enabled shell +``` + +![A DAG (Directed Acyclic Graph) of an SQLite table pointing at a limit table.](/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/5d2db9528ae260926e1258de124fe156ac24e5ed.png) + +This image of a DAG is produced using [Graphviz](https://graphviz.org/); +those familiar with [Dask](https://dask.org/) may have used a similar +helpful feature to assemble [task +graphs](https://docs.dask.org/en/latest/graphviz.html). + +Finally, the actual sub-table corresponding to the expression sample can +be extracted using the [`execute` +method](https://docs.ibis-project.org/docs/generated/ibis.expr.api.Expr.execute.html) +(similar to +[`compute`](https://docs.dask.org/en/latest/api.html#dask.compute) in +[Dask](https://docs.dask.org)). The result returned by executing the +expression sample is a +[tidy](https://vita.had.co.nz/papers/tidy-data.pdf) [Pandas +`DataFrame`](https://pandas.pydata.org/docs/reference/frame.html) +object. + +``` python +result = sample.execute() +print(f'The type of result is {type(result).__name__}') +result # Leading 5 rows of halloffame table) +``` + + The type of result is DataFrame + +```{=html} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note
01cobbty011936BBWAA226170222YPlayerNone
12ruthba011936BBWAA226170215YPlayerNone
23wagneho011936BBWAA226170215YPlayerNone
34mathech011936BBWAA226170205YPlayerNone
45johnswa011936BBWAA226170189YPlayerNone
+
+``` + +A similar extraction of the leading five rows from the `appearances` +table (in one line) gives the following table with 23 columns: + +``` python +appearances.head().execute() # Leading 5 rows of appearances table) +``` + +```{=html} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDyearIDteamIDteam_IDlgIDplayerIDG_allGSG_battingG_defense...G_2bG_3bG_ssG_lfG_cfG_rfG_ofG_dhG_phG_pr
011871TRO8NAabercda011111...0010000000
121871RC17NAaddybo0125252525...22030000000
231871CL13NAallisar0129292929...200029029000
341871WS39NAallisdo0127272727...0000000000
451871RC17NAansonca0125252525...22001001000
+

5 rows × 23 columns

+
+``` + +## Filtering and selecting data + +As mentioned earlier, Ibis uses familiar Pandas syntax to build SQL +queries. As an example, let's look at the various kinds of entries in +the `category` column from the `halloffame` table. A nice way to do this +is to extract the relevant column with attribute access and apply the +[`value_counts` +method](https://docs.ibis-project.org/docs/generated/ibis.expr.api.ColumnExpr.value_counts.html). +Remember, an invokation of `execute` is needed to realize the actual +expression. + +``` python +halloffame.category.value_counts().execute() +``` + +```{=html} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
categorycount
0Manager74
1Pioneer/Executive41
2Player4066
3Umpire10
+
+``` + +There are four different types of entries in this column, most of which +are `Player`s. To illustrate filtering and selection, we'll create a +expression `condition` of boolean values corresponding to rows from the +`halloffame` table in which the `category` column has the value +`Player`. The boolean values represented by `condition` can be extracted +from the table `halloffame` using brackets. The final result is bound to +the identifier `players`. + +``` python +condition = halloffame.category == 'Player' +players = halloffame[condition] +``` + +``` python +players.execute() # take a look at this table +``` + +```{=html} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note
01cobbty011936BBWAA226.0170.0222.0YPlayerNone
12ruthba011936BBWAA226.0170.0215.0YPlayerNone
23wagneho011936BBWAA226.0170.0215.0YPlayerNone
34mathech011936BBWAA226.0170.0205.0YPlayerNone
45johnswa011936BBWAA226.0170.0189.0YPlayerNone
.................................
40614187lidgebr012018BBWAA422.0317.00.0NPlayerNone
40624188millwke012018BBWAA422.0317.00.0NPlayerNone
40634189zambrca012018BBWAA422.0317.00.0NPlayerNone
40644190morrija022018VeteransNaNNaNNaNYPlayerNone
40654191trammal012018VeteransNaNNaNNaNYPlayerNone
+

4066 rows × 10 columns

+
+``` + +## Joining Ibis tables + +If we want a single view of the `halloffame` players and their +appearances, we need to [join](https://en.wikipedia.org/wiki/Join_(SQL)) +the tables `halloffame` and `appearances`. To do this, we'll perform an +[inner +join](https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join) +based on the `playerID` columns of our `players` & `appearances` tables. + +``` python +condition = players.playerID == appearances.playerID +``` + +We notice that both the `players` and the `appearances` tables each have +a column labelled `ID`. This column needs to be excluded from +`appearances`; otherwise the overlapping columns will corrupt the +computed join. Specifically, we want to filter out the `ID` and +`playerID` columns from the `appearances` table. One strategy to do this +is to use a list comprehension. + +``` python +columns = [col for col in appearances.columns if col not in ('playerID', 'ID')] +``` + +Now, we use the [`TableExpr.join` +method](https://docs.ibis-project.org/docs/generated/ibis.expr.api.TableExpr.join.html#ibis.expr.api.TableExpr.join) +to compute an inner join of the `players` table and the filtered +`appearances` table; the result is bound to the identifier +`unmaterialized`. + +``` python +unmaterialized = players.join(appearances[columns], condition) +``` + +## Materializing the join + +We used the identifier `unmaterialized` just above to emphasize that the +resulting expression is *not* a [materialized +view](https://en.wikipedia.org/wiki/Materialized_view) (that would be +required to build new expressions). Without a materialized view, Ibis +raises an exception (as demonstrated here). + +``` python +try: + unmaterialized.distinct() +except Exception as e: + print('Unable to execute "unmaterialized.distinct()"') + print(repr(e)) +``` + + Unable to execute "unmaterialized.distinct()" + IbisError('Table operation is not yet materialized') + +The [`distinct` +method](https://docs.ibis-project.org/docs/generated/ibis.expr.api.TableExpr.distinct.html#ibis.expr.api.TableExpr.distinct) +in the preceding code behaves like the [Pandas +`DataFrame.drop_duplicates` +method](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop_duplicates.html), +i.e., it drops duplicated rows. We can obtain such a materialized view +to circumvent the exception above using the expression's `materialize` +method. + +``` python +join = unmaterialized.materialize().distinct() +``` + +The code above completes the join and binds the resulting expression to +the materialized object `join`; here is a sample of the leading five +rows of our joined data (notice the result has 31 columns). + +``` python +join.head().execute() +``` + +```{=html} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note...G_2bG_3bG_ssG_lfG_cfG_rfG_ofG_dhG_phG_pr
02861aaronha011982BBWAA415312406YPlayerNone...160150000000
13744abbotji012005BBWAA51638713NPlayerNone...160150000000
2147adamsba011937BBWAA2011518NPlayerNone...160150000000
3260adamsba011938BBWAA26219711NPlayerNone...160150000000
4385adamsba011939BBWAA27420611NPlayerNone...160150000000
+

5 rows × 31 columns

+
+``` + +Ibis supports other join strategies as methods of the class `TableExpr`. +The following list comprehension shows us what they are. + +``` python +[method_name for method_name in dir(players) if 'join' in method_name] +``` + + ['anti_join', + 'any_inner_join', + 'any_left_join', + 'asof_join', + 'cross_join', + 'inner_join', + 'join', + 'left_join', + 'outer_join', + 'semi_join'] + +## Executing an expression + +We'll now expand the expression `join` as a Pandas DataFrame object. +We'll use this DataFrame to answer the following question: + +```{=html} +
+How many pitchers have been inducted into the hall of fame? +
+``` +Some of the \"hitters\" have also been \"pitchers\", so we'll need to +filter out rows corresponding to those appearances from the table +`join`. That is, to identify a specific player as a \"pitcher\", we'll +choose those players who played *mostly* as pitchers; in particular, +we'll take 100 games as an arbitrary threshold between pitchers and +non-pitchers. The column `G_p` from the table `join` represents the +numbers of games a player played as a pitcher; the desired filtering +expression, then, is as follows: + +``` python +pitchers = join[join.G_p > 100] +``` + +Next, we group the `pitchers` table based on a specific pair of columns +(stored as a list `cols`) and then count them annually using a `groupby` +with a `count` aggregation. + +``` python +cols = [pitchers.inducted, pitchers.yearID] +grouped_pitchers = pitchers.groupby(cols).count() +``` + +The expression `grouped_pitchers` is still an Ibis `TableExpr`; as +we've seen several times now, it can be realized as a Pandas DataFrame +using the `execute` method. The resulting DataFrame's index can be set +as a multi-index using the `inducted` and `yearID` columns. + +``` python +df = grouped_pitchers.execute().set_index('inducted yearID'.split()) +df +``` + +```{=html} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
count
inductedyearID
N1936105
1937106
1938114
193999
194267
.........
Y20143
20154
20162
20173
20186
+

150 rows × 1 columns

+
+``` + +The dataframe `df` has counts of the number of pitchers who were +(`inducted` index `'Y'`) and were not (`inducted` index `'N'`) inducted +into the baseball Hall of Fame in a given year. We'll pull in all the +relevant counts of inductees into a dataframe `count_inducted_pitchers`. +Notice the use of the Pandas `DataFrame.fillna` method to assign 0s in +rows appropriately (i.e., reflecting that no pitchers were inducted into +the Hall of Fame in those years). + +``` python +count_inducted_pitchers = df.loc['Y'].fillna(0).rename({'count':'Inducted pitchers'}) +count_inducted_pitchers +``` + +```{=html} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
count
yearID
19365
19373
19381
19397
19421
......
20143
20154
20162
20173
20186
+

76 rows × 1 columns

+
+``` + +The Pandas `DataFrame` & `Series` classes have a convenient plotting +interface. We'll use a dictionary `options` to specify keyword +arguments to tidy the final invokation of +[`plot.bar`](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.bar.html). + +``` python +options = dict(figsize=(15, 5), grid=True, legend=None) +count_inducted_pitchers.plot.bar(**options); +``` + +![A bar plot. The X axis ranges from 1937 to 2018. Y axis ranged from - to 8.](/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/7caaeda319436dc88038861ff8ee72bc5bdd140e.png) + +## What next? + +That's it! In future posts, we'll explore other backends and visualize +more Ibis objects. If you'd like to contribute to Ibis, please take a +look at [Ibis contributing +guide](https://docs.ibis-project.org/contributing.html) and +[OpenTeams](https://openteams.com/). + diff --git a/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/5d2db9528ae260926e1258de124fe156ac24e5ed.png b/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/5d2db9528ae260926e1258de124fe156ac24e5ed.png new file mode 100644 index 0000000000000000000000000000000000000000..74353e6c1baace7316950eea7275c9dbee83b939 GIT binary patch literal 37004 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 H>e&APYqh3- literal 0 HcmV?d00001 diff --git a/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png b/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png new file mode 100644 index 0000000000000000000000000000000000000000..1542238ab00fd16bdfe904463aef66b8c61a734b GIT binary patch literal 21326 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 wxbxR1ZImIXPSp7w(^b literal 0 HcmV?d00001 From 70f09c664f69a6a918b827b5c75762da4caa980e Mon Sep 17 00:00:00 2001 From: MarsBarLee <46167686+MarsBarLee@users.noreply.github.com> Date: Wed, 8 Feb 2023 13:42:37 -0500 Subject: [PATCH 2/4] Update hero and feature images --- ...atic-flavor-of-sql-for-python-programmers.md | 10 ++++------ ...d47c33e991c43658e0b328f336af5eb6723531bc.png | Bin 21326 -> 0 bytes .../feature.png | Bin 0 -> 11897 bytes .../hero.png | Bin 0 -> 68764 bytes 4 files changed, 4 insertions(+), 6 deletions(-) delete mode 100644 apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png create mode 100644 apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/feature.png create mode 100644 apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/hero.png diff --git a/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md b/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md index a45589aa4..da94c769e 100644 --- a/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md +++ b/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md @@ -5,15 +5,13 @@ published: June 26, 2020 description: 'Ibis is an alternative approach using databases that relies on Python rather than SQL experience. This post focuses on writing SQL expressions in Python and how to compose queries visually using Ibis.' category: [PyData ecosystem] featuredImage: - src: /posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png - alt: 'Excellent alt-text describing the featured image' + src: /posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/feature.png + alt: 'The Ibis project logo, which is a tall, black and white bird.' hero: - imageSrc: /posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png - imageAlt: 'Excellent alt-text describing the hero image' + imageSrc: /posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/hero.png + imageAlt: 'The Ibis project logo, which is a tall, black and white bird.' --- -![The Ibis project logo, which is a black and white tall bird.](/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png) - [Ibis](https://www.ibis-project.org/) is a mature open-source project that has been in development for about 5 years; it currently has about 1350 stars on Github. It provides an interface to SQL for Python diff --git a/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png b/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/d47c33e991c43658e0b328f336af5eb6723531bc.png deleted file mode 100644 index 1542238ab00fd16bdfe904463aef66b8c61a734b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21326 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 wxbxR1ZImIXPSp7w(^b diff --git a/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/feature.png b/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/feature.png new file mode 100644 index 0000000000000000000000000000000000000000..90d4d8fdd18d14b88ba7477ddaa8450d740551eb GIT binary patch literal 11897 zcmZ8{2RN4R|MnwgZ$kEHs3Z#6J2X`)Wn^V#B-zeUW|#n`@;*& z^?80VR#xA1ELfx5-cHc)ZWWeSEF8-{%yBf`Rm@dSe|C9o=*{fG3fj}n9XU1k8 zE&El>E|*p`*q3*Y)>z(>V$q-x&KbOJLJ|&P`Jp+aMkB1n6iSJI$a64-uxN~&lEWwB z{-0m$G3HXEdHKGh|^gSg82lBGlMTUvfa z_mKGbi-{_NTwLM)>&w(FEiGdmFZD$Yjy-0lqt>{0N<(AQgMCI}w{NqMNJ*{r$(rGk z*S^;-UYYt@eBJDp`B+=>;EX5Z#XWY<#rSAWi*$B&_T-vV$~yD}+_}T{;^oVs{8p73 zj{)ECR+ZJ)mmKTs>qV87`BQabp9ctCJv^iq!8S8DSNl}?28pDgpfJ6#P>0(Oj90sy zJGWIp)$i85dmQ)f-K%VCW7!l)N>udFK7XE*j-FoXa>MPq-Yw+gZCMNW`WvZ zYUb&&c2N#a&T2B5?fm)k(PhWdXj4V;+?BDa>oixdUL9XOovJ;wG&6ka+&SOj(NCW~ zN!pROhlGZzZ)d}wkFVe5=BmAO`j+ed+pwp%Hzg%yQ(vKD&HO|+D>wI2*TRv;!#YeM z&f+_FQW+IG#Fclqw^x;V&HkDbd>0l*^*Sr-+OLk?r7OyG>5e}9k7p-xUF{g_=|`ti_|xc7_9%wrEX z{>`>JySaVvU!N6p_>#8;6=v~G8pf1Mk@ z!Ozd{>FKE^#L`jBC?g{yeyNl@Jw5$GzBMChFqm0I&DfaF$H(VcYAU6pqhoDdoke%H z$yA4|UGZ2$APZA^MuzC#y~kGk+McP8wWrqKD3EdbD%bPn3kAtQtLoLp4Iy}CG6e`m)rmaSVmg;v!c3!>KK?#0LNzJB!MhYwpGKYl#b z`5-trcU0cFDte&J@K z1NlBRH{UNmf9_mpaIj`sFR!%i?YXz@>Bk;Q`u+37y@gd&E|oNw-B>(jXh=tT@%nX0 zM#ioK2M+w|+;8WH3LZLTZk{|>@ZiCNro%rLhkpIKnQijE+}$_lQkj{xby!M@$ao$K zdueH@Bh!@p4}D&poS~O=)YSgU6%9SToJ+r7zILe!B5@7ks?LKX z^5@SJorml$5w~f})M4^b5iBVwnZJ^gm&ewcr225RRgg3{H#hx(%e2GW^^CFcaUEtY zD&nEM*Z&pI6~x3a^}e;6?RPXO_t~cZ{CL&ti}|N6UflhzzqWQW3PNY`&o?RG71!zI zyo&YJh2J&b-g^wZ_a~PUt7NTvbX@Mjg$qK54sj(Mx~lEw=9bv^@zbYjw40RAlJnB) zYBvu9sV!B9`NfMDYUsX$HZ8RVroN%>zk4Z2Zwm@eU%W``;o&hdI@*1;UN>J2sHd}@ zSn%8QS%qU;9ym-*#7FDTqh9;_PoM4odl?AqVq7f8BgEKSt zdN2N2>-t@5AyvMye&ZIuBImIO;_85dO_Y>zckc!lI`*ZYN@y4vL(|iD7#kb2pac6? zwI8bx#U&D_o5mG$?(A7JAR{AVvRdkDq^_#L>-7=HwH(z@DB9<9Q<^ zml*_A_$In@>X&Cns8H3^#9(M>=(ghH{9+KUm}*%cGuB_G=&2;&KGh$6 zsm!~owRI}-m+%Qe#!{Wf{E=EgpFSPE_wZpVUd6d{=U!xIKUjX=!cA$(fT95q?%A{F zl)irODY1~pk9nkJWRg*s9y)rOY;>W-t=ZVvB+aWg1AYmp^Y->8e?Bo~Q5it-=ztYn zU92FprKKeY7nkV%{mij~s@gt2N+Kd6EbQ#Fb@VMBQ~igvwW*9vOy1bGizsPR%gV=h3su%V5wnNv+ICqr?W5QFKY14ym)j2>5REbNx9$)(E$7QL$kD!Vft!kvCnP9n(=8quI-MB4z~bU% z#djXFKTjz6EU^sN$L6^CIyp(SJdqFfU0o2~x$|eV;fChs(ClmpjOX^U8y*-7 z)g2vki7U&$-wjCmulsy0_vPi}FE zldi0qwbeyTvX=^`-9jhmLn()h(U*A3*Dzwx-Wp;Y)h#Vd$~P9Yruxgw?d)E1m`}@s zD|k*1Qe+z!2LX{%Oy0XM{cYSopg?|=kihHU==jF0YSVbTo-Z!&9T>u`=9+E`$l*fL?(9*bxQCAOrgwKX=H zPySAPLP9>?RDP2Gdb~-AYh;<{Owh#NUs-v1cS1u#a>qYsJEaFQ~k0j}Us*g%iw4mx!FE1}CMn*=efa3S>^T)=+#39>y4$3wY_~Kr-X5XglT!x(W6I;B(hGQH898z2q4M2jOZ3#>D;sM zZ~1z$=x%ZG%ODc;*WKK#FwisIcvV$Z7nVnp@_+sM<-O>!G;O}HIN;x%8I96BKut|u z95B|I$wkl1Y=hc)Ai;aknqlw0eOVsgw7gEq-PXSQ^l8iaY~zpO;^L10NePnXo9OB3 zEk)uYCdhKv|9qAIIXT%>==5#RyFaMz*EX$B#dqvT?_b-#V@GFi{d?e<#emOjw6Pkf z!y849Ke^2bhYkYyr~()TRi120*#-v7i08Yxg_=5_mVKwBiHQkSK(v7J0xwB>gU8nBQVoy zQ}w4$H+SsXm2cmj{iZ9+=pe}f+?CPgTZnUPSgR1Dh^nffqWh#8X1^pRB%iW3hmrs@ zeo~1WN!hjuy?D_^xm?+pEI~9&9d}(c@2-RXvkh^gfXaVetmg-`#W+$N`wEMESKWOZ zw~(5i$g_{OCOs@xUKpwgCk6n9+4}nGRiCAyaJlP08I+Wiz%x6A*4UV?C7w*Pi;9l6 z!ZfkOHSRB;|AIQ=mAUa6Qtod3=h8i=>4(5EylmJaL->`w?=cD} zJ)+&bsd%;>buTV2A3t#*;THR@lae3|vSyW}^QTT#f)8E*QRNw7dbV}%`P}c{zf-;V z>yHH(Rrr+|tNmMB9C%$?`lPt1NRmWshC`cQq{V5u+X{`%%~sS*d_+sR1Wr%2h70;N zfEN}?6ntEs$f>vh(h`67F8h1up-mG#Z$zVFV{<&-qZ%$tNl7uDN-hPVIS3XyK2U}U zPh3o1UcQM;zC&R~K|v8sK4j{Gprdw4v z%tjjGY`e4hTb?S@gPG&PpxT-3SA?QNCN#NH_$(|edS0E&yZ}f|*Q;|MYg1Q93(d*d zpARrojK1vX*nIM-(nq)D=9^j~=JhfBmdVM<^GEw39l4w9Ps`i#sAZm(d~>YFxgy0EdnmR?b$BoI44 zHIT%w-#)t#e{(V4`VD?~t?bwczvGv@P?KVp(7WZ978Yrya^Ca5h$+!? zcbDFy$Vl4juC8hH9Y2OS0H5O~6<+?xR@c+Ge;-~x zBfrAi!;F3X9jD}^57x&D+H`ewkw5D|xmou2_lt{)220glxOj0}f{Z;Uya{eapC!o~ ze@BjF{rCMm5u}e#tw$G9{&?^hBzzXW@6>Hqy_rv7W)28@I#M zhuV&Vv*mrfyX#mihl1O$+J9?nKgwku+`E@sTdT#xk+mfvCdL}{V7P<<#r`=%&xUm2 zp@a!>f6H5Ma>`e3Qkc!Lx=f(r{}!FxA@r8gxia-sK)A0D~% z!A&7<@$Q2MJ7=3VkzgC`Ow<(Kw=en+m0dDOc+a5$pPIk3v&9mJTc#>DBoeLXKxS^e zd8kuP>Vbxp%Z@3%SkeS=}?uE!Y_CCWTA?~UsRQYdt7LHO7h|A=c zd}_!RG(VEk{7IvssTpiid$U-a>*?vaP-|&i}NWwD3e%*4>z3*B_s@5(G&WGrf3Me8!1{I=7c0 zl!1YP4&Q4dPkircGqAa{>M@z|?3qv~Bb#nNN;*=`b&Q3w(z@wUmBgjehJ`=h8mX8C zj3;zof-(@#B`zs>+jsfL!yI3y!`pl}))vX5f@8V{%WdC|o>04ddHc_%_~4CyqpG=u zh1yzLn#pb7|Fg%L`jK{1kFRE zudh#3KbZSakwuDFe0+RQxvwI?B=_oo%8M7$Wu~Jt_Fd21Cb}-gB{2%q%<{*l`wbsI4wdlz-JjiRAJ_Z4w;+nbEXn6D?R$uQ%gG-X z80-yrC&oT<`XStWo_+ZLT6Vu_Bfc$u)FJU(o!WK z>`_BYOC2B;W=x&iku>>Xg~W*0q4Zn_NDct}1C1LS7pX|c_4V&U@JWGz7P?KGkJ+>H zCXA*J+A(}b?(Sm^O}1w`n)3WP6=86IV>_?^^CAX3*{$)xz8dUo`qY+96wn{-Sw@GN zl2ir5!or{%M^hZg4L5JzbRKD7HLmdE$A^Q#Rl0Y?aRybZADQegqiZpe8~3xS9hOGLdDk}kY+2hSGv z^5t$%rKhf6O57%LUB}PF|K{W4b6%OVyI^Rzr$j47$ROv^2UGvGP>^g;T}naUIaXo` z5m*A?*b*J-IiI5g)xW;JejwvX|2YV;VPL8h;ja}HIh$|_yN*0_prfN3gn5QOXb`^&4)c9@*xbRvIKw?JKc5hV z#wD(_Xv2tz2({CvSxJQ7G~m0)4~0ONe5z+~RjvQ^+qWFou3e*HV9>I*-WkTQEeH5paSNr`#)M-P*n}CjDGg1H^CnPM)Vs5Oxt*z}vK{Q-rEghZVU!9r6^4#5J zUu9+rb4FPevPXUBdGE2Gfq{W|yELI1we|JGGsE?yfU00>O#_2>Lmqis?&xk8+r7IA zGj|4~`fG_BJ*ug#tE;Xukn)YsvWr5H=+Q`G5szi;b78a|a{652W}lXp)}Sn(Wh?_Sx@Bz{wxUV*b5UkC#q&@&D zbO4W=e?n$n-T~wH?u>D9ad5%5K`g)>GjniYfRcw!N(N#=tPho()#%6mM>ai{p)W5l zFUTIA@w`y#Db}%u`f7T5xRFr6)*$>CxEbJ&6u7nSb~e1Y_*8f{-#NWH;xI+7kG2R) zO0qyZa?4!dfV!aM<>j@tv-|ipR9jbHZRnX6B&?*%NP}VbHeTLg5C+2RIeYfrTuC4t zG&Xkjp^1qoOlgPy(rqwBv1=co0B7LN6DB@vrI?r)Iq$g_bJE)8=EC4jQ0tpvMW(`c z*}8QrEK3pzi$dNJ&^kK&CEv#E7U3mUiK5VKu;-@c*WzoTJcz{q2Ea&jWKLS_-B5Ws_lW-}=Ooiz;6fybsuY7Gwz zq`=TjhV`YA#4Hd?jXw)68e%k?HxWk9r%!ZQh6O?BRx7I=H>0AiE&egtym_(?19O3mO^MvWb*zm7M7W?oejc-(gM)*xaC&=t-PW&P(S?sFcVj_ZL{wDDbJ~o7 zSN7Ij1sc2K985>GMB*x|swjZA^G^1VBXZ7zYKiZXRQ*+;RQih;W9w_MNxziJTS38C z*w{AV?fUxqq8x=46?tiCX$eelb(Kb#LsGNmX2BM~E+Y&suqwj*K68dGB{enf@#CAX zUyF}76x^Jf9?}H9h#*WtK*kO4!-nFpu4Ssx#rqNO-g#tIwWS~9x+S2@15j^hXb5=s z?hpVlZ31>P5u9M2gJUM6NglxhQ=Bh@-9rE%RC><0FexfQK|wwhpQ4kF5NZeqzk`J} zG&X9+3MfnB(TGk&CgSeyPWXFZk%W;xJ_@;wSrv{_*VNZ%UtV6urrfc6UsSY|xG?2= z|G|UrEAta_*S>FteAo;r?C`ZHE=+q@vjD%mSR9fsIKG?Uz_oq;91JmyaT5ktQRBpk z6D8j&GJd6WtLk9#gs}I}C2<70F;SQk` zrMmG?zr+E5TUuY8N}s}<4*-r1BTjpvp8zl8#zb7p>K>pgs0j-zYaqlhk-yc{P!9O5 z?!#?)()Bd%F@{pUJZEROdwqFSa5ELvcW~Jv|Bdn{Z+=U9ltR0kv+bUPFo2*N$z%)Pl{s_RAeK9J?3iCm6;1n?B1--DBrItn;&}3ek1*s3`VPZ2 zE-5MY-#?$?@F`bUSNNbiea}~;flw%jO)iwU?#9rgAi-;qgZ}ngU$&Y2TAY8ffSZTM z;`8$pkEHF$iUVvnpu|0I+!+3Je=kw`U|ZAJEDN-^^ffl&XP=Lz1p;P?5!uk%s)I@V zRLLs{X$XOBSR>hH2T2Xn3>iaPM@I;H8zS~uMn*WRsJ5Ds5ih8UObnm=nG8SF+6)YE zi}_!jZsoe-ak_&)euR#V*%Gw`H&&h){r2_~i~ar@k9p~+Q(RHt;O!9u{u}%#CrvxM zaU<1(u)_J|UD8@8K&?XoRGPSl>e?K8^9!AZjYcO!8WM>~nm7xPJV2A;y5yrm7^MW= znwgn#3U50<6XGfJBuP%MGc+lq^ei@aucV$!!H zsm9uUelEOy`({D^e^LPtE#;e`1u?j;I_LmUSbwmQ)8MJ?6qb?M3V}7fxLA*%K5cd% z(rBJtC!Yj>NsgrfWQF=93xn4ky3-Q{S8r-=Ym+ssTT zFE4MT*Wwn02ov3_C%2zRRR@ZdfzcD=m>b$2(F6-8C)MDOSvpajm=GusLJJ^NAzV5* zuiS^6jI;DEc6W5NO>>8IP&ALK-Rp((lWSSeMA~1k`Rj8Avx3K;TcEzj6J!|=UF{Ev zjb+xp#Vwqe#YFO38lol`F%)QSLBah(EL-#~&b7oS^0vY=XQ88efgv!T$cq5wAj~u< zZlZqCg{hEyIcq-fL)+e6H6=7)X(=BGAtxnGXtj1u;_c@#RQ;kyk-rcq4h!W#V|_Gl zI1<3l;zWp=rRC+o)=@mB0CZ+pWaJUehsSjDHM@~V^}hGWF_t8$85;7`T3k!a(43#2 z55;W3GKpgYbW|F@B2MmQO}{=|$0%-8c-%=IqYvKPfZbCEIFa}6-yeb*a^bCQoU4nl zMneJ-7gclDfPKwOemPj|MoGm`IXzS}@KRY(QE{9dYin<4YI3-(Kx_Ah$iryq=`}q) zi@v(3B$-aM*Y;svt9!Q_Zf6r#RjufkVI#94Sx%psnoBJBCMpH6W#E&WPVDO-ldE+E zeYg9jWt&_ zHfDCY!Az^C7WA3!cT|*@KVmunr>?9|IBf@VfTLA?eZ0WH`$kSzuH1yP+Lh^ugko%b zoPq?Pge)-3S)j3_Mb177RL{LOTxZyQ0&0hfifaDK0L%@A@-xr`0!p5z{`Z3!#K{h1 z=eYmJEOxq3pyQdcRp@4N6d7HitE>CMBOyfE1IK&xi4YPjIcq{?d4xS)G5S|3COf$s z_2_V0me#HX_qD+~-e4pdcE5b}%A!5xFk@GD<`6{amPjqKnIk)y4|~z_4|Whh_l4WH z+rpZto&lgUeR``hB~R|nocgr0vQwr}74mg$8J!e~Y^Eo1ACJOc!b zyojdpgvbnDP}jY#F{CDU`qCwd#Khkluo!+PhW*Ii3m)^9Jw(6aC0lT$(4J4w01X%b%Kgt zN%Rb_A5J!U=M+uOC@%KOYW!d!<+uEU>v*CiYV#1rxD+@7daS^f~Har7m2;ZG6O zfzIDIYSb|wvy9%I*Bt=crstB-f|-Qxfb<(oxFZEXuqj@?^qv0edk;O~0@f7q|2#S) zHAtIrnfEzsPx`~T`S~@3RRQ&ODCUPNwu(pzAol29$FMk|mQI%PFhL?YySQArmyt4& zf~=c{j;@+G_~Jf!0ixogk)q{CO#T} ze}7O=i^-lh1y7ymXlN>-d08=+m1Ze~H1k=#4oI8z~rKqCr~GSs@JlP^-u2NEVX z5r|b>bE4CDEJ8V{U^R)h$V~`W4=-^Wb2?+(H?xD4l z`_H$+g5%;?F-Ry>OqVz0dA4mc$BTw<BejU5crRXv85g^3(R->ygg%!Ghh{w6Iy;H;01B>SB*fd7R-!)v0}Fy;wW2xkdx90Ndk6d!*i=^Fwp91c4S zRtqB2#Vew#{pe(c%48Q}?>okQzq|X2Qb4f|!_CfbRA?Mgz}J z@Zyq5uu?g;ZlxeWBedn)=%MzXLHIbkyN4lV$e3qMp~2i8g1POCl->ba4kGQYk?M^F z2M8@ooEf^gpK1TDx!wEsQ@ZX?a>mG_BDu>}R-Gk@ zXeB7EHk^FfVnD;dElI-p0!k7ZnXsB*L)T;2nORvKW-g243l5vEGRy?Y->7{7r7gL)T4toOy#S86kR8KP7f8ZRBuIH95sizjVs={Xl-Q` zies1M3x(vm0~WP3o2jWONny-_F+`5ApcirAnJ9Jj?mBJ@OH0^X+uya2$!CVD2pj&1 z{B`Y>esGE8HTM4^Ho_Oe#6tKiA}d?i!G**jvORm|)*|1+P9csfx5-fBK(h<5T{xs6nf;ZP9olRNl8_K1F4wPv zQqjRB0aeFQ(MkmF6Ku407zGhz;`REi{(fiJoenz~WRfmB;`W0mf|Z&(Ij#4)LH5zT z#ytoIhZ`$07JpAlBt(#nbk>?@~4h!*OttYjC0s*>M(Ttz{i z_%n16W>L%@ku)oug*|Emd(nmKxtEfFPA3cbK>N3&TDyH`n-2kf$gD>Aq&%^NP@Lch sVG#+(O8)|H{G6iKo-Sy>4oNkaC@4#{5G`+1$} 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 literal 0 HcmV?d00001 From d88e4d492d48d04352accb4cfa2c6628141fe764 Mon Sep 17 00:00:00 2001 From: MarsBarLee <46167686+MarsBarLee@users.noreply.github.com> Date: Wed, 8 Feb 2023 13:50:53 -0500 Subject: [PATCH 3/4] Update hero --- .../hero.png | Bin 68764 -> 52470 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/hero.png b/apps/labs/public/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers/hero.png index 6cb03d401b79476202c8b6bd991a4daa9fd993a6..add07f97420d5b75a28215dd797950454243bf76 100644 GIT binary patch literal 52470 zcmeFZ_dnO||30p+wxS(bl~N*7_N+w7XxK6;dxXr$Xsd*blC6mB?Cc~V+2fh5tdJG5 z`5dQu{qX(a`yafo+x2=~*Hw8uALn`A$8j9@<9t58pm1i>hTR*esHir{oIQPsifVN@ z71hf3>(<~`?%vgSM@6-VO6K%QrJKRO+8orL_XU)Ubu@K;xVq)S<}F(`pO)Inlza@{^UA2VPA#gA#!Fxk;ZkOf2y^7YBs1bGV#dyp;FApWpv@f ziY7{t9Zg^G46DE4wYKNGs$C=~#Rn`yr<_OJe6**#{|9X4x|NY_r+l~K=4XXdkl>aLQ|5q6Q z|Jy|Tkk)d`pnH{-rOxFqi@$q%dJeO*UzCw~{H46Sp|zD09Z4po$qavQShwz3o4M-Q zvyVO&742YVPE-gHX5X{tgi4&UU5-{^VPT3I=TPo(DyrK-Ygh2%!M88pZ5dKgRP@E8 z(p{HahT3ve&v-E_gv_ zbds{Og&XSYOAS(EZcPoJlaaY7E&cG4qT-G%TV92S?^(TOO~zCPTB9(p??`LX0%?++ zY_=0WFD9s`N(b>@zoe}liqBV8SC9GpSz5-Y!K9(H@E+fdAE#{x8|8hr<1wLPw+`>$ z|H+jFFH&23X~&KoWqsr9hYp>^vhLiugP*QT)XK5>@oD|)RjZ8Z-(Jj~YQOc|$ETL- z78>z;`pqZ)!>7Jy7Yb3h-kz(@p_*8q?>uMoyIbbDzkgWf=kJz3YtFDVd`s5dK~Ep^ z?VH+z`}g0zc_Vf5s zdiAhTSwkcC*Do_B2^UQq>ZQKQ5WcG)S8ZYxtgh}`Nk!GV@$aK;j1;032OAUW+*n-R z>X*ML>$lN<*IRZltUfb;@`%)#GjTZVp$k2IAx*AJa~&jl`1tu_EjseaVi12VZgw>JmQ2&0FVAPobrxU$`0>L%k(!34(dU3Hugm;R99-Is=ex*J4!7l` z+mC45jD|VHJ66Px@9nx=A&EU*&pF0UOVD4C4z*|vb!E8?!29a zrDN|$Lz#1Oa!OU9Vhu?;5(|?_t_}DEC2j3Q9^KDr_Qr^V>z@DK>7tfa0+Wc{&*!Sz z7gbbVh%#3lpafPJ9N54AXMkbo#ihlCmUmw`jt9sMP?Ex4M?|DwEn2g%I8~r3DJkjJ zUyIN(;#gIUCsH+sl=swnvz|$_{C;X-rpi@CUA^f5WzCv3hlPbT`uqC>j~jY^_GID+ zs%U)Jpq#SF^ZGiOTW3#ojZ5QpG< zQn2}5EkmDGmY=V01VzVHYa5$fb$6MsK7UY44ksQXS+nBrJ8s{(bHGqyE?_6OcKqz@ zEFMQoODR~ID=dmspEj<5PkJi#cQ-1Kx)os(I@G(kl&r1C4^WCfefrtbv6vAh z7x4Q2{rmj!qqT<*AGYcIutHf?HSX=(vu8XRz3cjwl$89iPWL7uUXVF_dC1*lT(Zs}rE2~oPSpQtdQa;2J7;YnW`jY|%eS(J3&S=9D3I ziS2x7E8BN#lydQf2}Km>n2Zb+L}YEiaYGVCz6Z~L=^E1<7t`YM|1;bcmy&Xfgz|rD zHdfzW@n4!nhdAj5xz0yu zyUge#DYfhp(4ttqL|=dXDkoWFD07&bo3gYxvSczj(6A_+ai>?;T9qEtd7M$nUjTUS&Z6q9fWOuJ_`&Cq;Xw>=P z4(Y(iCnR+=hqh_58n5%L4f^xj_;@*lXLE`^HHoD6J^w!CDP^!>#C7RbPj|QGjf5t% z#(4Eqzh}?(xEEi$c^#M`@RG56Heabo_X# z{7R$#@nnXUObg0*l|+*B+#juE*~>n{_QUaE^W6s>Cu+{@*uK4c$q7}>Nj%JqzlD#| zX(LQ}TV_j=11*A*sVRNw3Hl8cRpKdY>r}K_v7Wv@og3HH)Lt^X&fh35Dally=5!YS zql>ybTjS*tc?;z;_r%O4365EeceV8UN%+hmOQd+4+e#+|Dw!eY$5gx%^lD_n-c;fMz`j zd=%5_zuB(RH$G!CJ$e;ks(s@+&YAgU=L#&Q+~j&#!Ru83JIIlgmLcGaI+2mw2*eU~ z`W>wTpwDUFP1JO+Nb<#=KmW^!4BLehrAIuD;ME zfKpd|=U>H(Gc_`*&bZ!^XcA?GI3~?m>h$TflluPt$jj(Z$8$O}UsSnfv;RWJN~Skm z06`%k&V|{*!Hm!S{0?z&$Vy<3CnyDr4b|Bsl@9-vJ`xfW6BV!%7bPW&^eIA&Gz68@ z)YJ?$F3fvn+YQA=hq-91U%!4=Zm(SqpjjVn_>rCEQaOPUuU{)&z8vQzv8aZ2PqIea zp=U>k;Ej)?v*h_(|M&d-d~H(rOS-atW#7NQNR@B+&k2B@{{=#vXlXD_z z$}x}Nlg5P0=_puODP684VmzacM`I%ikk(6R}Ft3zHQVE{ft|=Ys?+R8E|@E$zt|vwj;Jfp&)v z9U9f4w6?|r$(iCbk#MtrG7Ay_udjc5chVwv?BNr4_Z_=;$G&_?r?01HgkG{JREt*< z;P~IpWM^w|`46U;0(cRaK!TOcH^$>|j_~*I-v`=qGLIcQ<`)t&#FDjFhS}>(nA7ja zq~MAD`KG&D&@w#K>9=j+~)m6O2 zB>k|EkU9dicAz1yYEbWmIIX|yTua9Qb}^7g_u-n2bm6F|O+$7|Cm+oH8B)~M?UEYN zQC2?SRlOJJ-L|xdTk}sS5r4uJk#EopDqWWOOG#D*PPDvo|#fzOd zJOKQjl)-D)t^pj>e$NgoIK;zqF(xKv*Q)B;zSN-9l$12vK^1_(Lr0EONR($sMxI_v z%Pg8?J?jpb-EEhH^L+dJ_itHoiGv5voR?Tg`}pxAuff-sGz;li?t8j_JO8D}3eoiY z$%-^^hvIAf)vru6Gy<>b>H<#nOgeIBe+HM4kkB!#3?3UP9-P#+%9~hXJ%=uPWo*=(A`j=d=>E29+9BjoI^n2+Ey5ONx*8~{FC3@3tsT-n%S4XZ+r1&Ivn$U08^ zd?oHYdq`At{)wp=vln1WeQm8()2O-+%0&01qwSwx>dHz=nsy0QeRXIhX^xX74x*u^ zu`Ga}dA6-#6U(3A*J_@Lm*Hl3@$kWeGV@H1qetIu;>fWxNL45B92pbWE+8tZ2~>5M zi%UgWxnT$8mMHT=|9RKiJO8cKNT&k4Pp?Oi&m%}dX zIP$)WM&H07qxtQ#+qbFY1CB`%Kzs3GjedcGPMRr&3mrXO*#yt|AK=z_jtIJ@npE`t zS(91*z-YP{!oq`DjDT$cC+@h0*rrs&L4x8hTzCdtn>eeH*^&Sr(?9yXNI(-n=EUW_ z%PMVkEOw9pshrPP8!xZYPWLw+vDrMV(oYHIwRqo-ERzr9B@GzpH8v@!AZjr4dP@`# zO4|hjgRejS7uZ%gZK@kpBu||}|Fo=IRekZ|#ohd7FF$*+xJpiqIp$eqY5GLY&N_l9 zY1d7fXI_p|NvN%fIAie^TXZ|))L*EpoTZt_u_g}N`Q*_fqlhOOXAmxcxmJ=>j~+c5 z9cdY|)1hqqb-g8{KX0l%=an#Cp?Sl6(I<%u`4G#3>*gQT>yLjL?}vTmc; z57f(a%v9RXr$*upw{PEWQ!#ZTr;V^iPmrLtbUY?)$G@131$slXPccQmm19$6P`1$} zm^LIN0X^GjaejtkOY2(}dGg*GV?2Gs`t{!XftwB=IU>Je#R`g3f!M7-)vK{L<{SR< zBMoKJGtbD{;3blildmh)Ovc2=E7{p)G$!dJjX00o3KXzt-yxF2U2MjW`k-K!vyfYL z9)Td~Mw8b&$H&KK40Hu-{mHh0G%JAU(#l#vQBiD! z;hHwa*U-97ONxzs+SZ(HJ80`xZmppz7Fe=_B_YAq0FRj z*Kr!vq5q_p+n3LPZ|pc@sm8ezjkU}mRc6+S@eJ5Ma5U%-n|pDsN>6AspuzL!&zo}{ zQVACV!ER`5Y`-uH$YH`NEIjMu#wCvSLh3Ad#3tw8Wd~#5zI{L7C^6mnp9dY!DOCBK zSG&>6p8gAihWDCWSeX|8?cw?uUq%|YuLh|&4H`zl@N`qk;k|oL;ztzK)YKSM=CeM2 zJaxVG{Y4T_D8foADvc&?`=w8x{z(XX5v_z%O`b!ZHdy;|N&tgR4(cpvNJ&Yl{@Ujs z+1jd^H~NwK$>YZtLAK-SG1RCIq$|YBP=%A%z*4mB*4Tg=`UMAb_K$Z?al6jAyDSXq za7aijJxPu5c;@dP9kw*z7bs$%D2^5F*ts)91JnQzT_fG(ITBEhUuRnNsC)72H?saF zh#6G1y11nL*sou|Qa1+5u?1B0Qi~U$F^kRpO8rt%aXmc{pRciuRjF>PblK%VYT<6l zYss=U1OSrtAk>{7E5os3$+qs~R15dlc9cPf@`*$Q43MJ*S?k~m>Bd3r(sdXs-lbzUvJd}3)w&zNGu>&% z3J~dskE!%ix>tnP(YQ$x914W1cPs$G8+9>4njI3tCXN@VfN21YapLnM(%n5h_!Jqf z96MzI!2L3WmVvN_=jMts3EP~72zl^)X#H4M3Ggbx63#=WI*K6L5d9#!z5ejw1VI<} z?GDkie}>{ffx#_){%T77Qdy~jogmua?%gKSp?Fa)H_3G*&eC>!l~@<^>;(UQ;^~RD z0Ih9uNnKIVT6yhAdImCe5D}a0GT+6LSvI~n>L&5C?z{w{@cE#FCMBLsC?KJyPMxY8 zWaMUNuOVRA&u=@a+tA$V{0ruLsD}kWv!tY@V*!Q!>5c?NGKo8>Ni2?eK?P`MoBRKC zZZOtkXKARZecR0aCuUwbLTd!wfsBFO@+s3ZDZg|;X7Ap;gd!2z>pcD44L#tYcoM1s zp)=r3%9@&-{^bW!n>eHE9BL-Roc{#4jJfN)g%0EG?Y;Zxl@F^;K|v-5;*tg)9}KOA zj!86Cye~ICq?VdHHyj$l?rcmQZ_EDcSSF&&-JEO2@!B;aq|LLSCj`i`Wwn_@NXV3> zIwHf)&hFS7V7Q%;F&;^h-em0$Yz75Hh|!ay@|DX}n?2xlG}%r zoS7&`KEA%TKdblh@$#PaQHfW31x8JfA6TrCoZQpzx3ERi`~EeG-c~^mSsCD0pzC>- zwJ4Bg{N-RB0ElMhVb-F+}zyPFpSzg=`(hRe2%`pzA-X^ zbV~G?iRmt{@_w7c;^K>UlfDyG7k`9+^^WP!0=zdz$qE|VA-#Q&O0PO^PlDZCW~aLp zf6$Om$X61w=mHBYVGJdEWw`v~v@6w+j-M%VqqWEsPK-o*vnW`|$e&EG zFs^wmWnyexGdmg?Icy8Fs#}8FN13}w-2(nyp^Y&ppkwK?1^l}OQeeLLh|-jkFX8+#6&50r~&7~taJckix5M*(iEblnqC zQbL)f0bUVuuG5yCsCI$R4}#)CSHz^62_ZDN4Wp*-)&Y;kVqL%R!< zaLwnpXpbj6Q!!d$lErKtdY#7qzyuOx({A3gz%YGGiMw{~iZ*Y{4iQ*V_W`o6&$Q5C z5_43-?t!o*$mSmc00M*YU=mSb5HMFVH%|m(bErv|mzPK8UV;n}7!;%o)>;>Reh?!8 zVW;VLqNc`eC}T-4VyX>~a8a z=3PT?br__UeYeDL2Z=q`A;;#sG~~{*bo?jgK&ZA#T3Sc?$Azlw+id+Y7UEK4KvTin zsdK)t6T3Zn4G$q&uF=Bmy6yOF28|k^R=z9v*4sUpp4ud4dS*Vcj7!vW%&Wc|G}YxLW- zn8VdWo z+i2TiNIr<`-X%Qg5G!lf>n}dvf7VF;x0Z$oi%KA(z;L8Dn^F=RpapJX5V0DlXAcp!J%db%n`?uEYM{@{-9SULF+aB3(by4@?(5eRn$FbbR8*1^Z`V_BR2?rcPNP%QxhINpv-!7+(r9O0UKYvig z23lHGNLl;#?IREb>}qMSZ!!0qSFX-R=c)&dOYhrztk5lD(IU|sc5T{Fpys|GavntE z-?^6atwAMS-q2Vft4V~@Y}%xJ^X7Y^V?!D!{`{E?T%fc6DR50KtE!^>M=KhRrXVvb z`fL&MN(5?`=H^p5ZRSKbp%tGF4_1f z7T}MJyA@!DfZ!Tv%}OQW=!Xv<#_#H3JPUAvl0Q0Xi8f2$D5Hstdh%pLR@*Rj=$O}4 zd+=z7t{wSw2D`RzM;EB?a2T3&Bp-;dD#upq9V;80Jm+&tQgR0qQvwtu+u>GqLcpDz za)B<;z9KQOqD!GPUP;%e8oW(|;KpwW+YZ)|~(^ZOeS{MVZ!3zil}9*Xw4N6808A%=fqy5qRCFa_B)K|9aUxb^)F(q8z@TMx-N zcHUXbYgoy+iAB71G!Q^3;lZ*#;ZJ%IrsvOJydXOREvp{dgKc-|7UWjB-Z6H5eiiKP z;(t9viACpQKYm=1)W8#61CR^eqAMf*Hf`F}oM{pE1w;pp89kIR1yo(kmXwi^j*|n( zB{@=T9zT8zD6gWa*(yc*)sz|sNxhS^I<-nX4r6}j$vB+`qKEf|*k{O!C0qr^&`2}# z#`aIt%5u{$=90lIsQW$At|QKP?VgRt$le5WJw+pd%&KgFVNEd?6}J2JvbQ2A8p(VD z@Zw8p>GEgb!0cb@*a0f}es>%y?i)w05OoBp202IAW&XV~5EYYs|NcmM({^kdn|xs8>(~3p=)_BW_9q`xC#7aPIv@DS8#pZ9 z*mpQ*%CA&|RE1gjAmN1s0grZ`EDF`nY$2WqvB`SH-NH6+myVV~NjjqT?u14DOcV*F zM~~L!P5*F5Eq{SlyfF?MSF7+cK3IH=`Oh@%fAR70^&k^O#z7JuhUSPv0d@uvAvM{` zD#dYXI04j25z5s7q>8_)gBd@=9cu;vcNLI>0)}kVWnv6K1w>wTOMK%&@RQ_zNXwFl z)WzIBPrjGa|HTW!^EI-p-Y~mNUv-|!>1YT)d2gd@qW23<_1C0eLY}L^#JAm`>N=Vb zFj=gsjeAWjs|2E6I?=Y|t zdMp`RB1i0sY;p3JSqN7DAh8AeiOqtHF#!Ax9VpK3*SGHyg71KcAhW?agGu}oFE2`) zeMbVOXm5#+<@|Ynu)ZcUHnZU?x!Oq(38DHfTSlHgHzt`0sRtSa2T-8P!fe0y8Ri<` zmmLfYrbcT`0saVm=nK820P&&WvPIsTr%#^-IaW@gou^$Z-tf<3U_743%g=A}{o@12 zp>zriERPwo{n6XboqMu%+qUPvzSe~c`&e0tLqk4@Uw&b3N)_}*8JTAo=B&cvJmH-W zdNRFB<-U;e0UWM<}9-b2tVR1zB$3(`0VQAFQD354EFN1{2; zaq<#+`rfMpu(XiZMQHrI)iD=J1|B3RhFi1RdKEh!AybU7Trwp`7{H)|52(k_Op=K% z5oIt!Nu1M0o0}cBFNi~N>&K}y5GJjoGvX?C^ymf5D{x-B#T?VLZ+>45LO+0ccf;?V zaz2Z8(TbNm5que>JzQOu9y4D;A>#f^*l!#P8aytweN4|Vg4)ez z;zuSf=%R0;qR^Pn{zYuz>OLB>lGSMhO#{OpqU}uC7*D z=*Y#~2!$z(00|&J%tMVwI|~ER;N%_lTt)tn(PSRR=cL%-h+7g~`1ovH*2=kE#;A#h zfZ3}rdw3fQ3xQ*UuiThx&#*X03UoM;srs(?<3Sa>kLf*XcN{!|_au=6SlM~v6u^bl z-vzIONeT@xK`r^zVpje^ylkp}G50CK8(eT~7cPGw>;~Avy!W6NbI4^l5k&>iyFDC1tS)9(XA9=BV za=7g>lqP{mO$%5bL5$x zIG7B~F?qwcYfydxril*?O=CU`yyzlc0_u=Ow&X9=LyQfgAoLkS07+;(;=&4I!>d=i z8JcC>t5+vWyjThn=em1)2O!ju%0EHIn=llB;=L&E5w_4muw__uBobE`^gC!jm++UV z8FIJv?sDHU-`CXCL|_h|>!Q;U?OZhiz@gnogVP377ywieJV5Y{O_kV`(WggSvd1e$ zh_e8AwbgHJL7^JD8@ud=P_vbdjr$!2F?J&jMBmVm1Ko;j#n-Q92}7h)ts|Z4#99n#*a_2+ z_2+7spBYbwos3D)@`FT+5CAl!sYZ|nKK(D-VHQy!!#6}Nc73{U?ET@s?B~9JjZPT) z{X{Dw)-p6;R?KKI35TOmb38A{ZfIah|18{bME--ULT2z#JTQ|HsF;dD=Rw=}Gt!at z_U$2@qy5_=VT|6FT?%k3J;U$g(7<7m`k7HWA#oBSmp@ZsVFKd`Hk5*D!qtW&h&)8(rjF zr*l{=qC79za3UuNz(xQ9!V)o)csWTA#3>NBE9^ens#h3MRxoyi9A*rbVI>?w=+bcZ zAlH9(*McE55L^!>D0^-=N2Ha}6vs+TnA4-*NfkhRE5JJ=KlL^#NfmMz8b3kYTUe!` z#%T))2|?c76`vFrR|k;-DoR82c@`R8M6Anl?PWUa;E+YO4?~WDbc%KzY5dR}=a$%= z$({od%J{Mwe|}0I$ZPCFm_59X9D;)HL*hyj_V3?++Su5b;4Z|Z68ITZeiI-qG&?e) zvbE2aMy~^at^*R*OKl>v=D~q@^Yg^A3xWi1$Q_zFY8G%oVg*9qL1iEkT77-JO#?+h zK)@7@o2bfAqxg(#_d_yvp6!p`CHAYj$I2K^P-t_Q^4n){^D=rmA!3S$KNxhnTi{?OG0S zQi90IoCfVhNoVo5e?!C>S|~+#4buXwJKW*%cu{<qDh$_p+VrhIV zAkAUi;D5dw{K+wA%RydZ4j-4D z0Shwn2s)q&1|1|d0M-a{iI4wvm%a{!ra8wx3EHe542&?aux3CLG~c=$ir3>|bR=Rf zBy3YM-P6c03qWii!7u`n0nQCznv@Y_STM6g_m(9y!?=cXqfhOwrfU%EHZf#^7rZyz1|--)0`0RS109oM!9`==hL^$x-osAIt&7-uP$> z>wE!K&NnbuAxe`b2q;)X99AAEc;hv(UikWUNo=2VAEbpaimFa(5pb8Z*?KgARm(MF zWAFHk5~2f&1}VPFuBkYkg>%3*7p0^gAVVXoM7Hbd>e`}F44#pg^@bNQ9zhw0&Q597 z+CWzbZo6;aDVz-Y!1KEPdb|T>wQqWRNej`o-E5lKLbx%l#QX)kH#ub-nth#9(wvhx zAjxT*LH0=goO$eRK2Ab55iwvW<8d31A?EmQ+Ax3WiBUP$cb)Xk1W+ zpqR9|%ncDk>{7CQM~$*_|58cE6kAsRdiH0VeKwzx+2eQOr*g#I*Xs^-9c6u@OMjY? zZUy_fi=5x2lUEAAzOth5RLLpt-7>c?oT7eq>TpaXC1`H0D9m0yUx|Hv&$xzr&lj#f z(I8HXQtLkscAA=uuwpb$L*#rG6eN4|rXZr@y@u@8EnB=z{kB$vee6>`siLyeediIP zB5`WIe|F?@#xrm4lc28&H(VJ%{J~W1nAx|Z%^BBa(Jpxc+a&p4I%7_=!5SW`} zM<*xWAPp#OOPT!q{HxZisYRIsLlVS7H&7=w+0h|b+5lQYg|eq9G4fp8SedC*rO&h161U%K>}W2w<$n-Ky5;>7pj-! zWMz#_)SW*L>IL!REQbE?Qd8r)-b!(KMModR$nzCY8FYtalqBdWmiG1sd3h&t`O29X z8Q;dlTKHq-Rl~v__LNppzuP;Zfn>=6n8Hc= z&|$on2k0$-;m>8@Md=$i#)SH&r>Bp?l=^TZ{V6vZrqQvnn4(8giJY{wv=A>I78FPT z4_t%$?$f7FkVjx=qa4AqLAn>$)HNt+_SkD_<%>QTCBj7;$9dw6-% z@+GtNFk`eCZVfP~2=w;zJMHK=D^*cmQ2}?=yDuB z{H?%M0vwA{QRsotvYPp~lG8|DU6@b4hKTsX1#myibuj>Bo;v?yd!m*InIJ6d}T=fWS`r3JeaF;b&t4gMxy>Bva#o)YMc~PR^%Tws%laIn+Wf6YYx^w}4bk&&>gZ zTsAW^!@|RXnHa?!{ScDsB`PW^DKJvVv2BBhTfmiHMONeRcQrHHklht{uNmx^+Pf<& zF!MhEe@d`E|DwN#$0o=Cx~SwE83jj!*9&bmFdE}I}^XJ_}VsVUj2=N#^}j808OW8zGyxN7_7&mTPlgB0^NVK{H3F@_%$i7el_ zdGiSvN!}(Vvaz#2uC1-5u4F%a_!0t01zybzm zw|#xLX=U3K8u4mZ^kB_r#S~X+oIZWJdmp2S-Bax9JD_Dkuk&Ym86e7?laeZys<3E% z&x4BHgZn)_m=V^;^;s1i+wH+?Tzen<9D4-t)C06UKRcKNp&C?QDni=BWN3RvYN{?0 zkUSfO4@L&r3m2*#2G8hl;D?5XhY{Rs?CtHLl>#`*JGd4IrGW~fRsx?^3MxI=_z9$e`J;m4h)E%l1L3gS zp00!#`3x_f3{#%?{HP>>%22INYHPQLWh?nnq) zb+5zg6~aM)9NLFfVz*y`V`5v7MmB|8B>~xxlhrBuvT*gRp3jfS#%x7TPw&~wm#9~3 zT+W{wY0dHlV&1xQr=6ClC8=l<=hquyUEWKq+}vK+jnpfJD~WD{+1(d3;shCAiK32< zF!fXeo@<}hK|N0^KW}~*rJmS!$T5L#`GkbX>+2st)SGqWhe&(uu8CFVKqN>kw7XyCXC_j?<%-6RFG$jTT;gM;GJGFIn z{mtodljBt_EetFyEJ)1Kii&hkG3QxcP}_+?3a!2UR9rR9+k=`VEts_ zLoFq^vZbT#JgJN^y|KKH)?q}zaNd+QaU%dHI;>{hnYD= zTl5{dLX7ddcjKPHdI%zsxw*kKOv0O&PdpdXfW0CjL0~RFIy+AkxGbP@Cyl&I6uf-- za<=`5g0V3>EIw#Iq4rLfE^Q^p44BqfD+wJ|P)I2GdJ8{PqIlio$B&Qw{{0%&>05KN z_TQ6eyR>`~=E5)sU?^odKYasUyRR@7&5XE8k8-pA&kL|ro>Z`iV)XmK$j!xjad8|t zv!hEG3mbRj=M4lt8NDUsiBrHOHEd`v7WA^h0Pbf}+8~5s^Soec2AMvkt<8)v1c+H= zzGT53v>#1P%|}n3{D48iW~4m?(=3X;n(6~|6X@xm5ygnrOKNI2E8T2&x<5enUNtm4 zgY#wcU4O6egqj+iwzf9r{6&HH6XWCcke|F}-=3ki$7p)vfHs|8&Xg=;fQQX2ELBjp zih_l#UkX?-qsRY%y3~z34VD5O#lRE>;5VX}1wg_&G{gB@0&iy27*CIMEpBTI0ZT$3 z5wsoH4n-*n;hJXB@B}R$y5&iXOZjd%B;axaNhZk3kOAl|?b`kV?OsPigQVxT&DxK6%X+fh zYP=b=t*nl9xXc}4aT;AQ-dAM^(*LVHFX-2=U)0P|w#ggU{D*Be1Q~wHD72M@C5*#L z%bUU5-+vd<;XUFWV-I9b>6b6puv7SW-{4?5oJhju%qT4LrlVt{ed#XTk30!A4^qTI zLBVf3Z6Ph>_Qu8#Q>yYET`I|cMV zbog*ApEy89i$y^Q1YCGZZDr+>hJ3NT<@Y5fSm!$Tu@Uhg(g5? zSa$aA+eic=hz!1_u~Amufh}bq5TUT}PK$ZYCT{MeS(-S7`HPo|C=`D%W;CB$jW>V~ zKYjkJQIIq`r!as5g7WehOKI$saQM9+700H(b~P=n*T1DW%x;oFS4d(4pTEyZTfDk-C1^83e^VRtIT;FwjbSL5#KMolfPL9-(S zi|MnkApfLzV0cV2^3_(qfu%-9toJvT+?7AiXU1WZi}h zu_M)7PZAQ2z^(}RZ3&%mkZU-IWclLUNJ(Sk3uw}z$Je8Bl%h|8A$9&~u~_?|sOTP` zCHPb!G-t&7oA~&rxazQ7LPBB@#I%3YHnjFZKbO0t!|;`x@%uh|cEZHuFh2Ae(9=8~ z!YJXw=w58qD8%Ob818FE9`JzH0lE%zg zz2sAIF%P8D-pUZDsam%?Scb`nf?zVl{(sNH!m6OoNnN?J2c9w4HqH|yybdjcukJwK z7cZc-tpVU52nu2-kZq++Yfdp?IJ>9|Rl)iW>v-OEGIY z1~LRQ#dKYAQ**P`U_$2aZr}5@36}*RSXyP3@9<`Lh9FvV?+&Dz)(JlMp4+LEe2c(7S)H$U$`RVbt00~!dRC?R&Wxgo7 zT&vFJVOkjpl7wDGD5J|v&n|F;LtI?qeT*U^BIt5p-UP_&VLHTnz1a_7P~DVg*Nz>@ zpgj4r12BuIopfp&dgkQy5u z{qXtoLx|EC)5@GXw*hVb8jOFzq7J`v%YIScu(sBPiu;uQ_(Rm9UqeIOGaCD>bYZq) zLsOWTu)#BK*x4nHJWHg9+xj33GonlLM45bU0ht`ULIWmFC!J)D9kA- zDKC#+T?zdg{?r%TItsufSQf=F1?g*hY8ijTY(uSq-76KYr~J8L5xe2mG6ftCz}+c#k2CA!@$lzrGtb48y1FoSfa5 z0T-itK!x3oFaYVLrA=M+qZA8U=kJ?9UaEQCLs~#uj4|G zDv3N4C*#;0r1&0Z0-4^7#jSVkKwPBmQeGJ@LpI{CA z*-=p7Q?>7RG{$C7C}V0j_gy&_KsFD-A{Qo38b02akMB9^|Bt~zQYxuX6%6qu8o`1$ z?vheziE(h$`LIgZbIf|=4U1TnMli+=%=!8d2)Z~@v!;{>U?S9&glvKik+w^u zv0R67jrEu-XbH`_`*s)fY~8Ut73Xq8-N4 zXK*awChXFO*xA3o@z)j}Tmca`ITtRM`96uIz5DmCqC$rx)e$Y{a;Ev}D|m}soLw&5 zjVQVG{lZAj?jL{qt*RVS4B!2s2g+#H`raG4N?o~rVK^+p!);1U+sU@V@)@%ol5A-augFo5FO?EzfSXfH_N z1(}leVwMLzO3I%-Y>+zhln1ZHihi+6`(~j=?S4_wU_y5tCyYE9g;svR{DA~6w3~)P zF9ZVRUl&Tjl=39hPb*9c;6D9sajxm{86KZ*d4f$*&O!l*#}HH9(j1^ zW9UWN$m^}mt`BRB$Y%j0{l=Fo)BqQ7I6801%0hDM8XAJxU3PY}s<1|tnV%j5iALiJ zy8v<(SAY_Zi(X(HYspB*bnZxI>qo##2iT?XwJRUY_{T8;s!KCgBni!Q?hruDroZfr zOC1ysv``Pg$7#Gm0F))nKDY1+abZrtZ#Nr_rKfLQ1Gvp7WOW~{RV6_~>eQ)^>h>iL zj*hk2wx-ZvOM%kL%FA=!-rKaa8Hy2zBptsQ9g1AENyd{>eJHtpFJ2&&?)v+yf+uSM z%HK)fSOSy4NlgC}7Ev6@^?t|{QjnGshFH&d?njVAVGqF|0Tlt^PD5ZK@RDubMnYSt z{`UU!xWls#$`f4q=j zt5&oOqO^d9ktgFk5rS6?4NGv}hReh)4KM+{*#I}TH^Ls56Drl6qRzP!$O07SV_RFE z3jJOo2?&%#QY1ACni2g1B#JJ4Kgm_xxkJjYC^$HWggcKwhU)zh3Nqvc;sqfKy>Q_I zQ_?8}eC3(HmCp!j=C9^-cY^n!MtBDVI5f7EEyckc4XWb_^~D;Yv=uzX!^0z8f`h{y zW3*A2iIPnk4g(079thRa(i$5dCjt%Z5Ot7@L7LZZ*znPa7mCp-BcnqS3lnv#w^gGe z5tuU%lXf%~A6s{LpXzB_TRxQ2Jv=<#xRmze`}d1rn5qC0AEBLO9B>@| z9Uj{Or9p<{plouXq5)_kr1ew5+*JycRt(q3Luid5i6_bO_A99_4ug>0m_I=h0D7;c?kK>jAotA0Qt(y3#=;3~Vm++FA0XE!I$DliGBEIE z+j-GKXdmP|W)iy7AC*48ps09nSv%_-8S(PQae(7zd6(6 z4^prRPLakxP^HGnFal@~F$*d8hlfD>9>7qfqBkmY{p2xHf|vfPXq8`<8Nvs642y6M zP$>mRZmwOs7VfK0_zn_!aVJ55=FcrHIgJWkv9X6SORs_iqLyjSgzqnb6oi$L0RgU< zFkmt(0DMejs_)1#7MpJY8K`>50NJRKPw9(KFgr?TX=xdLwdi3hOwuGt zcugCh0$O5hVd8Owo&75A8=4wBB+Q~RuxQBJ@o?__2QpkPfhRoYg7gC7iY^1&A~w7V`jn;Ns- zhP4?@?lkUe5#XLcD;N?SOef(YiXjE3b}rp*U@=hn&#)Pk<0nsHI|uZ|&}vq$DPI!P z*2ZC)n_%|(9TdY5(*p3R+2F3H(yVX*{(uQ`FE1}4huH8+;f%C2KQb-p3v&%c0VeH) zfKYgZrB0ln0yO0{s_snrAr9eL_5~-=M<<5cf|$h|H#0IisZ+LZ$)bbeD2ltgP=Cgu z;BMKv^%82x6ogkguxuUF2zqBkxZ&83V#E2bk3BsN;DjcmGrgG%Y;kAu1l0UQgHkNO zil%v)c7GUg6NQl>j3^=BzJ0Uyq~5qu50r>7BSJ;#=x$bi8fO9Lx3seQfff*bqw8~; zQO#ZW?KuJ?*KgXS4{(G($v(!p&vpPlH0V1=^-7;nyD)z#9-ElZL$ctP5M2*7oZ&ul zf*}h~E3a{eic|wYR-_W_LX4(!sLUU+JCz`_wlufNOyh5!d`mOl22gjGxfD%}+3(ffJ z(6ZcT<^0?+f?*&wJFoyj%g)>Bd1&)s+cE=5M+15^&esZ^n*Zk|4t*M9D{@!S?tQ3@kYK9+Yeh_s)Var`xuD z`)NGM(#|gbr{n@)JBE=Z<>j(#S3D`*6cHQy1hwTDyy}qP>4mKJLkz&sYtsQto6rZz zxC3^h^t{N(`xsBdv53gdOm9PKBSN7VR>6s%Fa)gySfCcZ3}-Jy=fKNl7%dP34U`N` z+MTDgK(8DsZ@_7E4M&6KdmpGDgk#|7IgFB39UO!(1k%UX@!)ppQaC7ML{<$Rd-;Kw+R`eKqkH$7dAWnNW+Xtzp%(o>_nxoVmU%&7we< zwPbi;WMK-4ZY8cm;@QC$R~DC-Q==N9LKB5jAJeo?Qn!DZn-h$e@7%8|WwmMwDg$Lllk?<&o~_ZQRHX3l9&EV+jXYB~bzexVI{-3WbC2=#|?( zRko!Fbz%rXSVwvq;yD4BD$XL?$i*YMNxrMGmhxw2NO?iYzYUla=FS`70rS| z1^{m03yY#&zy9&M7bC54oL4P)f<_V#+-;YXlum>3Le*5|&_g0<0I!MI{pti7E3T{a z&1`q1wy+qPr5TLs8W=bS)eB{RuY^QLb125w@YD9g+~?`(ncfSr{`=ryIj$-I)nTU} z;>d7ga^1#_@q-5tH?2x({~<2A*Gvp16&wTY0jxWVFNBb)O3lnfldG6bhYkQ`v8UXB z9AB>X4gtYtthjS2DW7?d}tDa$o5eAgJN(;qW2t z3W?rHzjiB3%9gnI2+xp^WhWIZD!u5*tdRcz-+7#-Eip$KFp&XWybo&zrZJTO$)9m7 z4q#pQk{L;ir0YyE{YGO435aWK5yzbsaQc-P}9_nm}< z>mi@HQ8rSm&#R$qFnoaWGXs354yyoWdxjHJ0}bwA!92L^1>#czaQ>k9n$TeS@9}Z< zY#ZZ*4AhNBsLNp&6%|i+8*GNKi{_B9#B}t^31_$c^NUv|F^VSxrFlFSfD1)lL4gK> zoapF>{~Fz*D=RBop%aja3*2t#!fH8oM=(kwOl>k5OwF4i)PxK)HT%H-UJ6;WCFT8T zrZ4M*whX-aiJ&(K3&xa0rn#vRL!jGTS`5OV!Js=~$?kG^sb_wEp8!t_;mNs)FH)ov zveLt=EwKs;zC<(IiUG>;*&kh94n5CRA9;EvHnhX#3A=>&AO%}MY9mCBIOgTxI=h_W ziMj>zzo}7%i13$AqiJPl7lqe_@^%N+PTiHq%iUcUt%sNlb~$?y`2ayyFB}Z1!vJ3Z z_XQHbO?>xAKP8C;?NZqEwc>y(3^16l9K@g)byLF`lVH;3aP0+n@J@%T^z7W6FXrOt z)u8M^3Dqcppcn(X>k(-JyvuAhkΝM~i6X0*)1Hl>DZJaNUjXn24SX=Y*68j}Zbu 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

P&kGSmq%*cab~O|LwlHt0=NQA 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 Nf2P5V@M&v){a<(Zq*(v} literal 68764 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 From 94299d3817f3169ba9b642f96fbf264d43b862d4 Mon Sep 17 00:00:00 2001 From: gabalafou Date: Tue, 14 Feb 2023 14:33:15 -0300 Subject: [PATCH 4/4] fix html code blocks --- ...ic-flavor-of-sql-for-python-programmers.md | 1560 ++++++++--------- 1 file changed, 779 insertions(+), 781 deletions(-) diff --git a/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md b/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md index da94c769e..c235f0672 100644 --- a/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md +++ b/apps/labs/posts/ibis-an-idiomatic-flavor-of-sql-for-python-programmers.md @@ -1,5 +1,5 @@ --- -title: "Ibis: an idiomatic flavor of SQL for Python programmers" +title: 'Ibis: an idiomatic flavor of SQL for Python programmers' author: tony-fast published: June 26, 2020 description: 'Ibis is an alternative approach using databases that relies on Python rather than SQL experience. This post focuses on writing SQL expressions in Python and how to compose queries visually using Ibis.' @@ -20,7 +20,7 @@ systems. These features provide authors the ability to: 1. write backend-independent [SQL](https://en.wikipedia.org/wiki/SQL) expressions in - [Python](https://en.wikipedia.org/wiki/Python_(programming_language)); + [Python](); 2. access different database connections (eg. [SQLite](https://www.sqlite.org/index.html), [OmniSci](https://www.omnisci.com/), @@ -49,7 +49,7 @@ and do this now with the function [`ibis.sqlite.connect`](https://docs.ibis-project.org/docs/api.html#sqlite-client) (in this instance, the database used is a SQLite database): -``` python +```python %matplotlib inline import ibis import pathlib, requests @@ -75,7 +75,7 @@ This [baseball database](http://www.seanlahman.com/baseball-archive/statistics/) has 29 distinct tables; we can see by running the following code: -``` python +```python tables = client.list_tables() print(f'This database has {len(tables)} tables.') ``` @@ -87,7 +87,7 @@ print(f'This database has {len(tables)} tables.') Displaying the list `tables`, gives the names of all the tables which include, among others, tables with identifiers -``` {python} +```{python} [...'appearances'...'halloffame', 'homegames', 'leagues', 'managers',...] ``` @@ -97,19 +97,19 @@ baseball database. To do this, we can invoke the [`table` method](https://docs.ibis-project.org/docs/generated/ibis.impala.api.ImpalaDatabase.table.html) associated with the `client` object called with the appropriate names. -``` python +```python halloffame = client.table('halloffame', database='base') appearances = client.table('appearances', database='base') ``` At the moment, the objects objects `halloffame` and `appearances` just -constructed don't hold any data; instead, the objects are *expressions* +constructed don't hold any data; instead, the objects are _expressions_ of type `TableExpr` that represent putative operations applied to the data. The data itself is inert wherever it's actually located---in this case, within the SQLite database. We can verify this by examining their types or by using assertions like this: -``` python +```python print(f'The object appearances has type {type(appearances).__name__}.') assert isinstance(halloffame, ibis.expr.types.TableExpr), 'Wrong type for halloffame' ``` @@ -123,7 +123,7 @@ method](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.head.html) That is, we can define an object `sample` that represents a sub-table comprising the first few rows of the `halloffame` table: -``` python +```python sample = halloffame.head() print(f'The object sample is of type {type(sample).__name__}') ``` @@ -137,7 +137,7 @@ actual SQL query corresponding to `sample` by compiling it with the method](https://docs.ibis-project.org/docs/generated/ibis.expr.api.Expr.compile.html) and converting the result to a string: -``` python +```python str(sample.compile()) ``` @@ -149,7 +149,7 @@ Graph)](https://en.wikipedia.org/wiki/Directed_acyclic_graph). For instance, evaluating the object `sample` at the interactive command prompt yields a visualization of a sequence of database operations: -``` python +```python sample # This produces the image below in a suitably enabled shell ``` @@ -171,7 +171,7 @@ expression sample is a `DataFrame`](https://pandas.pydata.org/docs/reference/frame.html) object. -``` python +```python result = sample.execute() print(f'The type of result is {type(result).__name__}') result # Leading 5 rows of halloffame table) @@ -179,281 +179,281 @@ result # Leading 5 rows of halloffame table) The type of result is DataFrame -```{=html} +```html

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note
01cobbty011936BBWAA226170222YPlayerNone
12ruthba011936BBWAA226170215YPlayerNone
23wagneho011936BBWAA226170215YPlayerNone
34mathech011936BBWAA226170205YPlayerNone
45johnswa011936BBWAA226170189YPlayerNone
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note
01cobbty011936BBWAA226170222YPlayerNone
12ruthba011936BBWAA226170215YPlayerNone
23wagneho011936BBWAA226170215YPlayerNone
34mathech011936BBWAA226170205YPlayerNone
45johnswa011936BBWAA226170189YPlayerNone
``` A similar extraction of the leading five rows from the `appearances` table (in one line) gives the following table with 23 columns: -``` python +```python appearances.head().execute() # Leading 5 rows of appearances table) ``` -```{=html} +```html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDyearIDteamIDteam_IDlgIDplayerIDG_allGSG_battingG_defense...G_2bG_3bG_ssG_lfG_cfG_rfG_ofG_dhG_phG_pr
011871TRO8NAabercda011111...0010000000
121871RC17NAaddybo0125252525...22030000000
231871CL13NAallisar0129292929...200029029000
341871WS39NAallisdo0127272727...0000000000
451871RC17NAansonca0125252525...22001001000
-

5 rows × 23 columns

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDyearIDteamIDteam_IDlgIDplayerIDG_allGSG_battingG_defense...G_2bG_3bG_ssG_lfG_cfG_rfG_ofG_dhG_phG_pr
011871TRO8NAabercda011111...0010000000
121871RC17NAaddybo0125252525...22030000000
231871CL13NAallisar0129292929...200029029000
341871WS39NAallisdo0127272727...0000000000
451871RC17NAansonca0125252525...22001001000
+

5 rows × 23 columns

``` @@ -468,56 +468,56 @@ method](https://docs.ibis-project.org/docs/generated/ibis.expr.api.ColumnExpr.va Remember, an invokation of `execute` is needed to realize the actual expression. -``` python +```python halloffame.category.value_counts().execute() ``` -```{=html} +```html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
categorycount
0Manager74
1Pioneer/Executive41
2Player4066
3Umpire10
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
categorycount
0Manager74
1Pioneer/Executive41
2Player4066
3Umpire10
``` @@ -529,206 +529,206 @@ expression `condition` of boolean values corresponding to rows from the from the table `halloffame` using brackets. The final result is bound to the identifier `players`. -``` python +```python condition = halloffame.category == 'Player' players = halloffame[condition] ``` -``` python +```python players.execute() # take a look at this table ``` -```{=html} +```html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note
01cobbty011936BBWAA226.0170.0222.0YPlayerNone
12ruthba011936BBWAA226.0170.0215.0YPlayerNone
23wagneho011936BBWAA226.0170.0215.0YPlayerNone
34mathech011936BBWAA226.0170.0205.0YPlayerNone
45johnswa011936BBWAA226.0170.0189.0YPlayerNone
.................................
40614187lidgebr012018BBWAA422.0317.00.0NPlayerNone
40624188millwke012018BBWAA422.0317.00.0NPlayerNone
40634189zambrca012018BBWAA422.0317.00.0NPlayerNone
40644190morrija022018VeteransNaNNaNNaNYPlayerNone
40654191trammal012018VeteransNaNNaNNaNYPlayerNone
-

4066 rows × 10 columns

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note
01cobbty011936BBWAA226.0170.0222.0YPlayerNone
12ruthba011936BBWAA226.0170.0215.0YPlayerNone
23wagneho011936BBWAA226.0170.0215.0YPlayerNone
34mathech011936BBWAA226.0170.0205.0YPlayerNone
45johnswa011936BBWAA226.0170.0189.0YPlayerNone
.................................
40614187lidgebr012018BBWAA422.0317.00.0NPlayerNone
40624188millwke012018BBWAA422.0317.00.0NPlayerNone
40634189zambrca012018BBWAA422.0317.00.0NPlayerNone
40644190morrija022018VeteransNaNNaNNaNYPlayerNone
40654191trammal012018VeteransNaNNaNNaNYPlayerNone
+

4066 rows × 10 columns

``` ## Joining Ibis tables If we want a single view of the `halloffame` players and their -appearances, we need to [join](https://en.wikipedia.org/wiki/Join_(SQL)) +appearances, we need to [join]() the tables `halloffame` and `appearances`. To do this, we'll perform an [inner join](https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join) based on the `playerID` columns of our `players` & `appearances` tables. -``` python +```python condition = players.playerID == appearances.playerID ``` @@ -739,7 +739,7 @@ computed join. Specifically, we want to filter out the `ID` and `playerID` columns from the `appearances` table. One strategy to do this is to use a list comprehension. -``` python +```python columns = [col for col in appearances.columns if col not in ('playerID', 'ID')] ``` @@ -749,19 +749,19 @@ to compute an inner join of the `players` table and the filtered `appearances` table; the result is bound to the identifier `unmaterialized`. -``` python +```python unmaterialized = players.join(appearances[columns], condition) ``` ## Materializing the join We used the identifier `unmaterialized` just above to emphasize that the -resulting expression is *not* a [materialized +resulting expression is _not_ a [materialized view](https://en.wikipedia.org/wiki/Materialized_view) (that would be required to build new expressions). Without a materialized view, Ibis raises an exception (as demonstrated here). -``` python +```python try: unmaterialized.distinct() except Exception as e: @@ -781,7 +781,7 @@ i.e., it drops duplicated rows. We can obtain such a materialized view to circumvent the exception above using the expression's `materialize` method. -``` python +```python join = unmaterialized.materialize().distinct() ``` @@ -789,183 +789,183 @@ The code above completes the join and binds the resulting expression to the materialized object `join`; here is a sample of the leading five rows of our joined data (notice the result has 31 columns). -``` python +```python join.head().execute() ``` -```{=html} +```html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note...G_2bG_3bG_ssG_lfG_cfG_rfG_ofG_dhG_phG_pr
02861aaronha011982BBWAA415312406YPlayerNone...160150000000
13744abbotji012005BBWAA51638713NPlayerNone...160150000000
2147adamsba011937BBWAA2011518NPlayerNone...160150000000
3260adamsba011938BBWAA26219711NPlayerNone...160150000000
4385adamsba011939BBWAA27420611NPlayerNone...160150000000
-

5 rows × 31 columns

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDplayerIDyearidvotedByballotsneededvotesinductedcategoryneeded_note...G_2bG_3bG_ssG_lfG_cfG_rfG_ofG_dhG_phG_pr
02861aaronha011982BBWAA415312406YPlayerNone...160150000000
13744abbotji012005BBWAA51638713NPlayerNone...160150000000
2147adamsba011937BBWAA2011518NPlayerNone...160150000000
3260adamsba011938BBWAA26219711NPlayerNone...160150000000
4385adamsba011939BBWAA27420611NPlayerNone...160150000000
+

5 rows × 31 columns

``` Ibis supports other join strategies as methods of the class `TableExpr`. The following list comprehension shows us what they are. -``` python +```python [method_name for method_name in dir(players) if 'join' in method_name] ``` @@ -985,21 +985,20 @@ The following list comprehension shows us what they are. We'll now expand the expression `join` as a Pandas DataFrame object. We'll use this DataFrame to answer the following question: -```{=html} -
-How many pitchers have been inducted into the hall of fame? -
+```html +
How many pitchers have been inducted into the hall of fame?
``` + Some of the \"hitters\" have also been \"pitchers\", so we'll need to filter out rows corresponding to those appearances from the table `join`. That is, to identify a specific player as a \"pitcher\", we'll -choose those players who played *mostly* as pitchers; in particular, +choose those players who played _mostly_ as pitchers; in particular, we'll take 100 games as an arbitrary threshold between pitchers and non-pitchers. The column `G_p` from the table `join` represents the numbers of games a player played as a pitcher; the desired filtering expression, then, is as follows: -``` python +```python pitchers = join[join.G_p > 100] ``` @@ -1007,7 +1006,7 @@ Next, we group the `pitchers` table based on a specific pair of columns (stored as a list `cols`) and then count them annually using a `groupby` with a `count` aggregation. -``` python +```python cols = [pitchers.inducted, pitchers.yearID] grouped_pitchers = pitchers.groupby(cols).count() ``` @@ -1017,90 +1016,90 @@ we've seen several times now, it can be realized as a Pandas DataFrame using the `execute` method. The resulting DataFrame's index can be set as a multi-index using the `inducted` and `yearID` columns. -``` python +```python df = grouped_pitchers.execute().set_index('inducted yearID'.split()) df ``` -```{=html} +```html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
count
inductedyearID
N1936105
1937106
1938114
193999
194267
.........
Y20143
20154
20162
20173
20186
-

150 rows × 1 columns

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
count
inductedyearID
N1936105
1937106
1938114
193999
194267
.........
Y20143
20154
20162
20173
20186
+

150 rows × 1 columns

``` @@ -1112,85 +1111,85 @@ Notice the use of the Pandas `DataFrame.fillna` method to assign 0s in rows appropriately (i.e., reflecting that no pitchers were inducted into the Hall of Fame in those years). -``` python +```python count_inducted_pitchers = df.loc['Y'].fillna(0).rename({'count':'Inducted pitchers'}) count_inducted_pitchers ``` -```{=html} +```html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
count
yearID
19365
19373
19381
19397
19421
......
20143
20154
20162
20173
20186
-

76 rows × 1 columns

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
count
yearID
19365
19373
19381
19397
19421
......
20143
20154
20162
20173
20186
+

76 rows × 1 columns

``` @@ -1199,7 +1198,7 @@ interface. We'll use a dictionary `options` to specify keyword arguments to tidy the final invokation of [`plot.bar`](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.bar.html). -``` python +```python options = dict(figsize=(15, 5), grid=True, legend=None) count_inducted_pitchers.plot.bar(**options); ``` @@ -1213,4 +1212,3 @@ more Ibis objects. If you'd like to contribute to Ibis, please take a look at [Ibis contributing guide](https://docs.ibis-project.org/contributing.html) and [OpenTeams](https://openteams.com/). -