Pandas DataFrames and Series as interactive datatables!
Install the package with
pip install itables
Activate the interactive mode for all series and dataframes with
from itables import init_notebook_mode
init_notebook_mode(all_interactive=True)
or use itables.show
to show just one Series or DataFrame as an interactive table.
(NB: In Jupyter Notebook, Jupyter NBconvert and Jupyter Book, you need to call init_notebook_mode()
before using show
).
Read more about itables
and advanced use cases in the documentation.
In particular, the show
method let you pass custom parameters to datatables.net's DataTable()
's constructor - see the advanced parameters examples.
itables
has been tested in the following editors:
- Jupyter Notebook
- Jupyter Lab
- Jupyter nbconvert (i.e. the tables are still interactive in the HTML export of a notebook)
- Jupyter Book
- Google Colab
- VS Code (for both Jupyter Notebooks and Python scripts)
- PyCharm (for Jupyter Notebooks)
You can run our examples notebooks directly on , without having to install anything on your side.
If the table just says "Loading...", then maybe
- You loaded a notebook that is not trusted (run "Trust Notebook" in View / Activate Command Palette)
- Or you are offline?
At the moment itables
does not have an offline mode. While the table data is embedded in the notebook, the jquery
and datatables.net
are loaded from a CDN, see our require.config and our table template, so an internet connection is required to display the tables.
When the data in a table is larger than maxBytes
, which is equal to 64KB by default, itables
will display only a subset of the table - one that fits into maxBytes
. If you wish, you can deactivate the limit with maxBytes=0
, change the value of maxBytes
, or similarly set a limit on the number of rows (maxRows
, defaults to 0) or columns (maxColumns
, defaults to pd.get_option('display.max_columns')
).
Note that datatables support server-side processing. At a later stage we may implement support for larger tables using this feature.
from itables.sample_dfs import get_indicators
import itables.options as opt
opt.lengthMenu = [2, 5, 10, 20, 50, 100, 200, 500]
opt.maxBytes = 10000
df = get_indicators()
df.values.nbytes
df
To show the table in full, we can modify the value of maxBytes
either locally:
show(df, maxBytes=0)
or globally:
opt.maxBytes = 2 ** 20
df