Add webinar example notebook, update prose in docs

This commit is contained in:
Seth Michael Larson 2020-07-08 14:44:40 -05:00 committed by GitHub
parent de9c836c5e
commit 5897b4587c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 4105 additions and 919 deletions

View File

@ -50,10 +50,12 @@ _Note, this project is still very much a work in progress and in an alpha state;
# What is it?
eland is a Elasticsearch client Python package to analyse, explore and manipulate data that resides in Elasticsearch.
Where possible the package uses existing Python APIs and data structures to make it easy to switch between numpy,
pandas, scikit-learn to their Elasticsearch powered equivalents. In general, the data resides in Elasticsearch and
not in memory, which allows eland to access large datasets stored in Elasticsearch.
Eland is a Python Elasticsearch client for exploring and analyzing data
residing in Elasticsearch with a familiar Pandas-compatible API.
Where possible the package uses existing Python APIs and data structures to make it easy to switch between numpy,
pandas, scikit-learn to their Elasticsearch powered equivalents. In general, the data resides in Elasticsearch and
not in memory, which allows Eland to access large datasets stored in Elasticsearch.
For example, to explore data in a large Elasticsearch index, simply create an eland DataFrame from an Elasticsearch
index pattern, and explore using an API that mirrors a subset of the pandas.DataFrame API:

View File

@ -753,7 +753,7 @@
{
"data": {
"text/plain": [
"<eland.index.Index at 0x7f5d7e2ee630>"
"<eland.index.Index at 0x7fa97243fe80>"
]
},
"execution_count": 17,
@ -2704,15 +2704,15 @@
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>410.008918</td>\n",
" <td>410.011039</td>\n",
" <td>2470.545974</td>\n",
" <td>...</td>\n",
" <td>252.064162</td>\n",
" <td>252.282880</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>640.387285</td>\n",
" <td>640.362667</td>\n",
" <td>7612.072403</td>\n",
" <td>...</td>\n",
" <td>503.148975</td>\n",
@ -2720,11 +2720,11 @@
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>842.227593</td>\n",
" <td>9735.860651</td>\n",
" <td>842.233478</td>\n",
" <td>9735.660463</td>\n",
" <td>...</td>\n",
" <td>720.511968</td>\n",
" <td>4.068548</td>\n",
" <td>720.505705</td>\n",
" <td>4.070833</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
@ -2745,9 +2745,9 @@
"mean 628.253689 7092.142457 ... 511.127842 2.835975\n",
"std 266.386661 4578.263193 ... 334.741135 1.939365\n",
"min 100.020531 0.000000 ... 0.000000 0.000000\n",
"25% 410.008918 2470.545974 ... 252.064162 1.000000\n",
"50% 640.387285 7612.072403 ... 503.148975 3.000000\n",
"75% 842.227593 9735.860651 ... 720.511968 4.068548\n",
"25% 410.011039 2470.545974 ... 252.282880 1.000000\n",
"50% 640.362667 7612.072403 ... 503.148975 3.000000\n",
"75% 842.233478 9735.660463 ... 720.505705 4.070833\n",
"max 1199.729004 19881.482422 ... 1902.901978 6.000000\n",
"\n",
"[8 rows x 7 columns]"
@ -3697,7 +3697,7 @@
}
],
"source": [
"print(ed_flights2.info_es())"
"print(ed_flights2.es_info())"
]
}
],

View File

@ -8,4 +8,5 @@ Examples
:maxdepth: 3
demo_notebook
introduction_to_eland_webinar
online_retail_analysis

File diff suppressed because one or more lines are too long

View File

@ -143,7 +143,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"We also offer a `.info_es()` data frame method that shows all info about the underlying index. It also contains information about operations being passed from data frame methods to elasticsearch. More on this later."
"We also offer a `.es_info()` data frame method that shows all info about the underlying index. It also contains information about operations being passed from data frame methods to elasticsearch. More on this later."
]
},
{
@ -182,7 +182,7 @@
}
],
"source": [
"print(df.info_es())"
"print(df.es_info())"
]
},
{
@ -311,7 +311,7 @@
}
],
"source": [
"print(df.tail(2).head(2).tail(2).info_es())"
"print(df.tail(2).head(2).tail(2).es_info())"
]
},
{
@ -813,7 +813,7 @@
}
],
"source": [
"print(df[(df['Country']=='Germany') & (df['Quantity']>90)].info_es())"
"print(df[(df['Country']=='Germany') & (df['Quantity']>90)].es_info())"
]
},
{
@ -1023,21 +1023,21 @@
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>14220.777549</td>\n",
" <td>14223.672348</td>\n",
" <td>1.000000</td>\n",
" <td>1.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>15656.783333</td>\n",
" <td>15666.826230</td>\n",
" <td>2.000000</td>\n",
" <td>2.510000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>17214.162905</td>\n",
" <td>6.607062</td>\n",
" <td>4.216043</td>\n",
" <td>17212.690092</td>\n",
" <td>6.580117</td>\n",
" <td>4.212883</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
@ -1055,9 +1055,9 @@
"mean 15590.776680 7.464000 4.103233\n",
"std 1764.025160 85.924387 20.104873\n",
"min 12347.000000 -9360.000000 0.000000\n",
"25% 14220.777549 1.000000 1.250000\n",
"50% 15656.783333 2.000000 2.510000\n",
"75% 17214.162905 6.607062 4.216043\n",
"25% 14223.672348 1.000000 1.250000\n",
"50% 15666.826230 2.000000 2.510000\n",
"75% 17212.690092 6.580117 4.212883\n",
"max 18239.000000 2880.000000 950.990000"
]
},

View File

@ -1,882 +0,0 @@
.. _implementation/dataframe_supported:
===============================
pandas.DataFrame supported APIs
===============================
The following table lists both implemented and not implemented methods. If you have need
of an operation that is listed as not implemented, feel free to open an issue on the
http://github.com/elastic/eland, or give a thumbs up to already created issues. Contributions are
also welcome!
The following table is structured as follows: The first column contains the method name.
The second column is a flag for whether or not there is an implementation in Modin for
the method in the left column. ``Y`` stands for yes, ``N`` stands for no.
https://github.com/adgirish/kaggleScape/blob/master/results/annotResults.csv represents a prioritised list.
+-------------------------+-------+------------------------------------------------+
| Method | Count | Notes |
+-------------------------+-------+------------------------------------------------+
| pd.read_csv | 1422 | y |
+-------------------------+-------+------------------------------------------------+
| pd.DataFrame | 886 | y |
+-------------------------+-------+------------------------------------------------+
| df.append | 792 | n |
+-------------------------+-------+------------------------------------------------+
| df.mean | 783 | y |
+-------------------------+-------+------------------------------------------------+
| df.head | 783 | y |
+-------------------------+-------+------------------------------------------------+
| df.drop | 761 | y |
+-------------------------+-------+------------------------------------------------+
| df.sum | 755 | y |
+-------------------------+-------+------------------------------------------------+
| df.to_csv | 693 | y |
+-------------------------+-------+------------------------------------------------+
| df.get | 669 | y |
+-------------------------+-------+------------------------------------------------+
| df.mode | 653 | n |
+-------------------------+-------+------------------------------------------------+
| df.astype | 649 | n |
+-------------------------+-------+------------------------------------------------+
| df.sub | 637 | n |
+-------------------------+-------+------------------------------------------------+
| pd.concat | 582 | n |
+-------------------------+-------+------------------------------------------------+
| df.apply | 577 | n |
+-------------------------+-------+------------------------------------------------+
| df.groupby | 557 | n |
+-------------------------+-------+------------------------------------------------+
| df.join | 544 | n |
+-------------------------+-------+------------------------------------------------+
| df.fillna | 543 | n |
+-------------------------+-------+------------------------------------------------+
| df.max | 508 | y |
+-------------------------+-------+------------------------------------------------+
| df.reset_index | 434 | n |
+-------------------------+-------+------------------------------------------------+
| pd.unique | 433 | n |
+-------------------------+-------+------------------------------------------------+
| df.le | 405 | n |
+-------------------------+-------+------------------------------------------------+
| df.count | 399 | y |
+-------------------------+-------+------------------------------------------------+
| pd.value_counts | 397 | y |
+-------------------------+-------+------------------------------------------------+
| df.sort_values | 390 | n |
+-------------------------+-------+------------------------------------------------+
| df.transform | 387 | n |
+-------------------------+-------+------------------------------------------------+
| df.merge | 376 | n |
+-------------------------+-------+------------------------------------------------+
| df.add | 346 | n |
+-------------------------+-------+------------------------------------------------+
| df.isnull | 338 | n |
+-------------------------+-------+------------------------------------------------+
| df.min | 321 | y |
+-------------------------+-------+------------------------------------------------+
| df.copy | 314 | n |
+-------------------------+-------+------------------------------------------------+
| df.replace | 300 | n |
+-------------------------+-------+------------------------------------------------+
| df.std | 261 | n |
+-------------------------+-------+------------------------------------------------+
| df.hist | 246 | y |
+-------------------------+-------+------------------------------------------------+
| df.filter | 234 | n |
+-------------------------+-------+------------------------------------------------+
| df.describe | 220 | y |
+-------------------------+-------+------------------------------------------------+
| df.ne | 218 | n |
+-------------------------+-------+------------------------------------------------+
| df.corr | 217 | n |
+-------------------------+-------+------------------------------------------------+
| df.median | 217 | n |
+-------------------------+-------+------------------------------------------------+
| df.items | 212 | n |
+-------------------------+-------+------------------------------------------------+
| pd.to_datetime | 204 | n |
+-------------------------+-------+------------------------------------------------+
| df.isin | 203 | n |
+-------------------------+-------+------------------------------------------------+
| df.dropna | 195 | n |
+-------------------------+-------+------------------------------------------------+
| pd.get_dummies | 190 | n |
+-------------------------+-------+------------------------------------------------+
| df.rename | 185 | n |
+-------------------------+-------+------------------------------------------------+
| df.info | 180 | y |
+-------------------------+-------+------------------------------------------------+
| df.set_index | 166 | n |
+-------------------------+-------+------------------------------------------------+
| df.keys | 159 | y |
+-------------------------+-------+------------------------------------------------+
| df.sample | 155 | n |
+-------------------------+-------+------------------------------------------------+
| df.agg | 140 | y |
+-------------------------+-------+------------------------------------------------+
| df.where | 138 | n |
+-------------------------+-------+------------------------------------------------+
| df.boxplot | 134 | n |
+-------------------------+-------+------------------------------------------------+
| df.clip | 116 | n |
+-------------------------+-------+------------------------------------------------+
| df.round | 116 | n |
+-------------------------+-------+------------------------------------------------+
| df.abs | 101 | n |
+-------------------------+-------+------------------------------------------------+
| df.stack | 97 | n |
+-------------------------+-------+------------------------------------------------+
| df.tail | 94 | y |
+-------------------------+-------+------------------------------------------------+
| df.update | 92 | n |
+-------------------------+-------+------------------------------------------------+
| df.iterrows | 90 | n |
+-------------------------+-------+------------------------------------------------+
| df.transpose | 87 | n |
+-------------------------+-------+------------------------------------------------+
| df.any | 85 | n |
+-------------------------+-------+------------------------------------------------+
| df.pipe | 80 | n |
+-------------------------+-------+------------------------------------------------+
| pd.eval | 73 | n |
+-------------------------+-------+------------------------------------------------+
| df.eval | 73 | n |
+-------------------------+-------+------------------------------------------------+
| pd.read_json | 72 | n |
+-------------------------+-------+------------------------------------------------+
| df.nunique | 70 | y |
+-------------------------+-------+------------------------------------------------+
| df.pivot | 70 | n |
+-------------------------+-------+------------------------------------------------+
| df.select | 68 | n |
+-------------------------+-------+------------------------------------------------+
| df.as_matrix | 67 | n |
+-------------------------+-------+------------------------------------------------+
| df.notnull | 66 | n |
+-------------------------+-------+------------------------------------------------+
| df.cumsum | 66 | n |
+-------------------------+-------+------------------------------------------------+
| df.prod | 64 | n |
+-------------------------+-------+------------------------------------------------+
| df.unstack | 64 | n |
+-------------------------+-------+------------------------------------------------+
| df.drop_duplicates | 63 | n |
+-------------------------+-------+------------------------------------------------+
| df.div | 63 | n |
+-------------------------+-------+------------------------------------------------+
| pd.crosstab | 59 | n |
+-------------------------+-------+------------------------------------------------+
| df.select_dtypes | 57 | y |
+-------------------------+-------+------------------------------------------------+
| df.pow | 56 | n |
+-------------------------+-------+------------------------------------------------+
| df.sort_index | 56 | n |
+-------------------------+-------+------------------------------------------------+
| df.product | 52 | n |
+-------------------------+-------+------------------------------------------------+
| df.isna | 51 | n |
+-------------------------+-------+------------------------------------------------+
| df.dot | 46 | n |
+-------------------------+-------+------------------------------------------------+
| pd.cut | 45 | n |
+-------------------------+-------+------------------------------------------------+
| df.bool | 44 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_dict | 44 | n |
+-------------------------+-------+------------------------------------------------+
| df.diff | 44 | n |
+-------------------------+-------+------------------------------------------------+
| df.insert | 44 | n |
+-------------------------+-------+------------------------------------------------+
| df.pop | 44 | n |
+-------------------------+-------+------------------------------------------------+
| df.query | 43 | y |
+-------------------------+-------+------------------------------------------------+
| df.var | 43 | n |
+-------------------------+-------+------------------------------------------------+
| df.__init__ | 41 | y |
+-------------------------+-------+------------------------------------------------+
| pd.to_numeric | 39 | n |
+-------------------------+-------+------------------------------------------------+
| df.squeeze | 39 | n |
+-------------------------+-------+------------------------------------------------+
| df.ge | 37 | n |
+-------------------------+-------+------------------------------------------------+
| df.quantile | 37 | n |
+-------------------------+-------+------------------------------------------------+
| df.reindex | 37 | n |
+-------------------------+-------+------------------------------------------------+
| df.rolling | 35 | n |
+-------------------------+-------+------------------------------------------------+
| pd.factorize | 32 | n |
+-------------------------+-------+------------------------------------------------+
| pd.melt | 31 | n |
+-------------------------+-------+------------------------------------------------+
| df.melt | 31 | n |
+-------------------------+-------+------------------------------------------------+
| df.rank | 31 | n |
+-------------------------+-------+------------------------------------------------+
| pd.read_table | 30 | n |
+-------------------------+-------+------------------------------------------------+
| pd.pivot_table | 30 | n |
+-------------------------+-------+------------------------------------------------+
| df.idxmax | 30 | n |
+-------------------------+-------+------------------------------------------------+
| pd.test | 29 | n |
+-------------------------+-------+------------------------------------------------+
| df.iteritems | 29 | n |
+-------------------------+-------+------------------------------------------------+
| df.shift | 28 | n |
+-------------------------+-------+------------------------------------------------+
| df.mul | 28 | n |
+-------------------------+-------+------------------------------------------------+
| pd.qcut | 25 | n |
+-------------------------+-------+------------------------------------------------+
| df.set_value | 25 | n |
+-------------------------+-------+------------------------------------------------+
| df.all | 24 | n |
+-------------------------+-------+------------------------------------------------+
| df.skew | 24 | n |
+-------------------------+-------+------------------------------------------------+
| df.aggregate | 23 | y |
+-------------------------+-------+------------------------------------------------+
| pd.match | 22 | n |
+-------------------------+-------+------------------------------------------------+
| df.nlargest | 22 | n |
+-------------------------+-------+------------------------------------------------+
| df.multiply | 21 | n |
+-------------------------+-------+------------------------------------------------+
| df.set_axis | 19 | n |
+-------------------------+-------+------------------------------------------------+
| df.eq | 18 | n |
+-------------------------+-------+------------------------------------------------+
| df.resample | 18 | n |
+-------------------------+-------+------------------------------------------------+
| pd.read_sql | 17 | n |
+-------------------------+-------+------------------------------------------------+
| df.duplicated | 16 | n |
+-------------------------+-------+------------------------------------------------+
| pd.date_range | 16 | n |
+-------------------------+-------+------------------------------------------------+
| df.interpolate | 15 | n |
+-------------------------+-------+------------------------------------------------+
| df.memory_usage | 15 | n |
+-------------------------+-------+------------------------------------------------+
| df.divide | 14 | n |
+-------------------------+-------+------------------------------------------------+
| df.cov | 13 | n |
+-------------------------+-------+------------------------------------------------+
| df.assign | 12 | n |
+-------------------------+-------+------------------------------------------------+
| df.subtract | 12 | n |
+-------------------------+-------+------------------------------------------------+
| pd.read_pickle | 11 | n |
+-------------------------+-------+------------------------------------------------+
| df.applymap | 11 | n |
+-------------------------+-------+------------------------------------------------+
| df.first | 11 | n |
+-------------------------+-------+------------------------------------------------+
| df.kurt | 10 | n |
+-------------------------+-------+------------------------------------------------+
| df.truncate | 10 | n |
+-------------------------+-------+------------------------------------------------+
| df.get_value | 9 | n |
+-------------------------+-------+------------------------------------------------+
| pd.read_hdf | 9 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_html | 9 | y |
+-------------------------+-------+------------------------------------------------+
| pd.read_sql_query | 9 | n |
+-------------------------+-------+------------------------------------------------+
| df.take | 8 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_pickle | 7 | n |
+-------------------------+-------+------------------------------------------------+
| df.itertuples | 7 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_string | 7 | y |
+-------------------------+-------+------------------------------------------------+
| df.last | 7 | n |
+-------------------------+-------+------------------------------------------------+
| df.sem | 7 | n |
+-------------------------+-------+------------------------------------------------+
| pd.to_pickle | 7 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_json | 7 | n |
+-------------------------+-------+------------------------------------------------+
| df.idxmin | 7 | n |
+-------------------------+-------+------------------------------------------------+
| df.xs | 6 | n |
+-------------------------+-------+------------------------------------------------+
| df.combine | 6 | n |
+-------------------------+-------+------------------------------------------------+
| pd.rolling_mean | 6 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_period | 6 | n |
+-------------------------+-------+------------------------------------------------+
| df.convert_objects | 5 | n |
+-------------------------+-------+------------------------------------------------+
| df.mask | 4 | n |
+-------------------------+-------+------------------------------------------------+
| df.pct_change | 4 | n |
+-------------------------+-------+------------------------------------------------+
| df.add_prefix | 4 | n |
+-------------------------+-------+------------------------------------------------+
| pd.read_excel | 4 | n |
+-------------------------+-------+------------------------------------------------+
| pd.rolling_std | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_records | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.corrwith | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.swapaxes | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.__iter__ | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_sql | 3 | n |
+-------------------------+-------+------------------------------------------------+
| pd.read_feather | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_feather | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.__len__ | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.kurtosis | 3 | n |
+-------------------------+-------+------------------------------------------------+
| df.mod | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_sparse | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.get_values | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.__eq__ | 2 | n |
+-------------------------+-------+------------------------------------------------+
| pd.bdate_range | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.get_dtype_counts | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.combine_first | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df._get_numeric_data | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.nsmallest | 2 | n |
+-------------------------+-------+------------------------------------------------+
| pd.scatter_matrix | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.rename_axis | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.__setstate__ | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.cumprod | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.__getstate__ | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.equals | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.__getitem__ | 2 | y |
+-------------------------+-------+------------------------------------------------+
| df.clip_upper | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.floordiv | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_excel | 2 | n |
+-------------------------+-------+------------------------------------------------+
| df.reindex_axis | 1 | n |
+-------------------------+-------+------------------------------------------------+
| pd.to_timedelta | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.ewm | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.tz_localize | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.tz_convert | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_hdf | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.lookup | 1 | n |
+-------------------------+-------+------------------------------------------------+
| pd.merge_ordered | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.swaplevel | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.first_valid_index | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.lt | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.add_suffix | 1 | n |
+-------------------------+-------+------------------------------------------------+
| pd.rolling_median | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_dense | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.mad | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.align | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.__copy__ | 1 | n |
+-------------------------+-------+------------------------------------------------+
| pd.set_eng_float_format | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.add_suffix | 1 | n |
+-------------------------+-------+------------------------------------------------+
| pd.rolling_median | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.to_dense | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.mad | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.align | 1 | n |
+-------------------------+-------+------------------------------------------------+
| df.__copy__ | 1 | n |
+-------------------------+-------+------------------------------------------------+
| pd.set_eng_float_format | 1 | n |
+-------------------------+-------+------------------------------------------------+
+---------------------------+---------------------------------+----------------------------------------------------+
| DataFrame method | Eland Implementation? (Y/N/P/D) | Notes for Current implementation |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``T`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``abs`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``add`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``add_prefix`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``add_suffix`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``agg`` | Y | |
| ``aggregate`` | | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``align`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``all`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``any`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``append`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``apply`` | N | See ``agg`` |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``applymap`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``as_blocks`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``as_matrix`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``asfreq`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``asof`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``assign`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``astype`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``at`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``at_time`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``axes`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``between_time`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``bfill`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``blocks`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``bool`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``boxplot`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``clip`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``clip_lower`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``clip_upper`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``combine`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``combine_first`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``compound`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``consolidate`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``convert_objects`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``copy`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``corr`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``corrwith`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``count`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``cov`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``cummax`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``cummin`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``cumprod`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``cumsum`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``describe`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``diff`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``div`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``divide`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``dot`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``drop`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``drop_duplicates`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``dropna`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``dtypes`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``duplicated`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``empty`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``eq`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``equals`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``eval`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``ewm`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``expanding`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``ffill`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``fillna`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``filter`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``first`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``first_valid_index`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``floordiv`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``from_csv`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``from_dict`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``from_items`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``from_records`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``ftypes`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``ge`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``get`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``get_dtype_counts`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``get_ftype_counts`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``get_value`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``get_values`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``groupby`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``gt`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``head`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``hist`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``iat`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``idxmax`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``idxmin`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``iloc`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``infer_objects`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``info`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``insert`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``interpolate`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``is_copy`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``isin`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``isna`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``isnull`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``items`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``iteritems`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``iterrows`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``itertuples`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``ix`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``join`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``keys`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``kurt`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``kurtosis`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``last`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``last_valid_index`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``le`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``loc`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``lookup`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``lt`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``mad`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``mask`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``max`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``mean`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``median`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``melt`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``memory_usage`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``merge`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``min`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``mod`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``mode`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``mul`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``multiply`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``ndim`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``ne`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``nlargest`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``notna`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``notnull`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``nsmallest`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``nunique`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``pct_change`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``pipe`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``pivot`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``pivot_table`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``plot`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``pop`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``pow`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``prod`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``product`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``quantile`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``query`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``radd`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rank`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rdiv`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``reindex`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``reindex_axis`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``reindex_like`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rename`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rename_axis`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``reorder_levels`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``replace`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``resample`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``reset_index`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rfloordiv`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rmod`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rmul`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rolling`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``round`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rpow`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rsub`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``rtruediv`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``sample`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``select`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``select_dtypes`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``sem`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``set_axis`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``set_index`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``set_value`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``shape`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``shift`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``size`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``skew`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``slice_shift`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``sort_index`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``sort_values`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``sortlevel`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``squeeze`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``stack`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``std`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``style`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``sub`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``subtract`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``sum`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``swapaxes`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``swaplevel`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``tail`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``take`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_clipboard`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_csv`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_dense`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_dict`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_excel`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_feather`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_gbq`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_hdf`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_html`` | Y | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_json`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_latex`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_msgpack`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_panel`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_parquet`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_period`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_pickle`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_records`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_sparse`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_sql`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_stata`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_string`` | Y | Default sets `max_rows=60` |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_timestamp`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``to_xarray`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``transform`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``transpose`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``truediv`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``truncate`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``tshift`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``tz_convert`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``tz_localize`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``unstack`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``update`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``values`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``var`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``where`` | N | |
+---------------------------+---------------------------------+----------------------------------------------------+
| ``xs`` | N | Deprecated in pandas |
+---------------------------+---------------------------------+----------------------------------------------------+

View File

@ -8,4 +8,3 @@ Implementation Notes
:maxdepth: 2
details.rst
dataframe_supported.rst

View File

@ -2,9 +2,9 @@
.. module:: eland
****************************************************************
eland: pandas-like data analysis toolkit backed by Elasticsearch
****************************************************************
**************************************************************
Eland: DataFrames and Machine Learning backed by Elasticsearch
**************************************************************
**Date**: |today| **Version**: |version|
@ -13,9 +13,12 @@ eland: pandas-like data analysis toolkit backed by Elasticsearch
`Issues & Ideas <https://github.com/elastic/eland/issues>`__ |
`Q&A Support <https://discuss.elastic.co>`__ |
:mod:`eland` is an open source, Apache2-licensed elasticsearch Python client to analyse, explore and manipulate data that resides in elasticsearch.
Where possible the package uses existing Python APIs and data structures to make it easy to switch between Numpy, Pandas, Scikit-learn to their elasticsearch powered equivalents.
In general, the data resides in elasticsearch and not in memory, which allows eland to access large datasets stored in elasticsearch.
Eland is a Python Elasticsearch client for exploring and analyzing data
residing in Elasticsearch with a familiar Pandas-compatible API.
Where possible the package uses existing Python APIs and data structures to make it easy to switch between numpy,
pandas, scikit-learn to their Elasticsearch powered equivalents. In general, the data resides in Elasticsearch and
not in memory, which allows Eland to access large datasets stored in Elasticsearch.
Installing Eland
~~~~~~~~~~~~~~~~
@ -32,6 +35,14 @@ Eland can also be installed from `Conda Forge <https://anaconda.org/conda-forge/
$ conda install -c conda-forge eland
Getting Started
~~~~~~~~~~~~~~~
If it's your first time using Eland we recommend looking through the
:doc:`examples/index` documentation for ideas on what Eland is capable of.
If you're new to Elasticsearch we recommend `reading the documentation <https://www.elastic.co/elasticsearch>`_.
.. toctree::
:maxdepth: 2
:hidden:
@ -44,6 +55,7 @@ Eland can also be installed from `Conda Forge <https://anaconda.org/conda-forge/
* :doc:`reference/index`
* :doc:`reference/supported_apis`
* :doc:`reference/io`
* :doc:`reference/general_utility_functions`
* :doc:`reference/dataframe`
@ -54,7 +66,6 @@ Eland can also be installed from `Conda Forge <https://anaconda.org/conda-forge/
* :doc:`implementation/index`
* :doc:`implementation/details`
* :doc:`implementation/dataframe_supported`
* :doc:`development/index`

View File

@ -10,6 +10,7 @@ methods. All classes and functions exposed in ``eland.*`` namespace are public.
.. toctree::
:maxdepth: 2
supported_apis
io
general_utility_functions
dataframe

File diff suppressed because it is too large Load Diff

View File

@ -124,7 +124,10 @@ def docs(session):
if es_active:
session.install("jupyter-client", "ipykernel")
for filename in os.listdir(BASE_DIR / "docs/source/examples"):
if filename.endswith(".ipynb"):
if (
filename.endswith(".ipynb")
and filename != "introduction_to_eland_webinar.ipynb"
):
session.run(
"jupyter",
"nbconvert",

View File

@ -0,0 +1,60 @@
# Licensed to Elasticsearch B.V under one or more agreements.
# Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
# See the LICENSE file in the project root for more information
"""Script that is used to create the compatibility matrix in the documentation"""
import re
import eland
import pandas
import inspect
is_supported = []
supported_attr = re.compile(
r"(?:[a-zA-Z0-9][a-zA-Z0-9_]*|__[a-zA-Z0-9][a-zA-Z0-9_]*__)"
)
def main():
for prefix, pd_obj, ed_obj in [
("ed.DataFrame.", pandas.DataFrame, eland.DataFrame),
("ed.Series.", pandas.Series, eland.Series),
]:
total = 0
supported = 0
for attr in sorted(dir(pd_obj), key=lambda x: (x.startswith("__"), x.lower())):
val = getattr(pd_obj, attr)
if inspect.isclass(val) or inspect.ismodule(val):
continue
total += 1
suffix = ""
if inspect.ismethod(val) or inspect.isfunction(val):
suffix = "()"
if supported_attr.fullmatch(attr):
supported += hasattr(ed_obj, attr)
is_supported.append((prefix + attr + suffix, hasattr(ed_obj, attr)))
print(
prefix.rstrip("."),
f"{supported} / {total} ({100.0 * supported / total:.1f}%)",
)
column1_width = max([len(attr) + 1 for attr, _ in is_supported])
row_delimiter = f"+{'-' * (column1_width + 5)}+------------+"
print(row_delimiter)
print(f"| Method or Property{' ' * (column1_width - 15)} | Supported? |")
print(row_delimiter.replace("-", "="))
for attr, supported in is_supported:
print(
f"| ``{attr}``{' ' * (column1_width - len(attr))}|{' **Yes** ' if supported else ' No '}|"
)
print(row_delimiter)
if __name__ == "__main__":
main()