Python library that transforms Pandas and Polars DataFrames into interactive DataTables with sorting, pagination, and filtering capabilities.
npx @tessl/cli install tessl/pypi-itables@2.5.0ITables is a Python library that transforms Pandas and Polars DataFrames into interactive DataTables with sorting, pagination, scrolling, and filtering capabilities. It provides a minimal-dependency solution that works across all major Jupyter environments and extends to multiple application frameworks including Dash, Streamlit, Shiny, and Jupyter Widgets.
pip install itablesimport itablesCommon usage patterns:
from itables import show, init_notebook_mode
import itables.options as optsFor specific framework integrations:
from itables.streamlit import interactive_table
from itables.shiny import DT, init_itables
from itables.dash import ITable
from itables.widget import ITable as WidgetITableimport pandas as pd
from itables import show, init_notebook_mode
# Initialize interactive mode for all DataFrames
init_notebook_mode()
# Create sample data
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 28],
'City': ['New York', 'London', 'Tokyo', 'Paris']
})
# Display as interactive table
show(df)
# Or get HTML representation
html = itables.to_html_datatable(df, caption="Sample Data")Configuration example:
import itables.options as opts
# Configure global options
opts.classes = "display compact"
opts.maxRows = 1000
opts.column_filters = "header"
# Show DataFrame with custom options
show(df, pageLength=25, scrollX=True)ITables follows a modular architecture with clear separation of concerns:
The library serves as an adapter between Python DataFrame libraries (Pandas/Polars) and the DataTables.net JavaScript library, providing seamless interactive table functionality without requiring JavaScript knowledge.
Primary functions for rendering DataFrames as interactive tables in Jupyter environments, with support for both connected (online) and offline modes.
def show(df, caption=None, **kwargs):
"""Render DataFrame as interactive datatable in Jupyter environments"""
def to_html_datatable(df, caption=None, **kwargs):
"""Return HTML representation of DataFrame as interactive datatable"""
def init_notebook_mode(all_interactive=True, connected=False, dt_bundle=None):
"""Load DataTables library and activate interactive mode for all DataFrames"""Comprehensive configuration system supporting both programmatic and file-based configuration, with validation and type checking capabilities.
# Configuration variables (all configurable)
layout: dict # Table layout configuration
showIndex: str | bool # Whether to show DataFrame index
classes: str | list # CSS classes for styling
maxBytes: str | int # Maximum bytes before downsampling
maxRows: int # Maximum rows before downsampling
column_filters: str | bool # Column filtering UI locationSpecialized components and functions for integrating interactive tables into various Python application frameworks.
# Streamlit integration
def interactive_table(df, key=None, caption=None, **kwargs):
"""Render DataFrame as interactive table in Streamlit applications"""
# Shiny integration
def DT(df, caption=None, **kwargs):
"""Render DataFrame as interactive table in Shiny applications"""
# Dash component
class ITable:
"""Dash component for interactive tables"""
# Jupyter Widget
class ITable:
"""AnyWidget-based interactive table widget"""Utilities for data handling, downsampling, sample data generation, and type processing to ensure optimal table performance.
def downsample(df, max_rows=0, max_columns=0, max_bytes=0):
"""Downsample DataFrame to fit size limits"""
# Sample data functions
def get_countries(html=False, climate_zone=False):
"""Return DataFrame with world countries data"""
def generate_random_df(rows, columns, column_types=None):
"""Generate random DataFrame with specified dimensions"""Comprehensive type definitions for configuration options, JavaScript integration, and DataFrame compatibility across Pandas and Polars.
# Type aliases and classes
DataFrameOrSeries = Any # Union of supported DataFrame/Series types
class JavascriptFunction(str): # JavaScript function wrapper
class JavascriptCode(str): # JavaScript code wrapper
class ITableOptions(TypedDict): # Configuration options