Ibis is a portable Python dataframe library that provides a unified API for data manipulation across more than twenty different backends.
Ibis solves the problem of backend lock-in by decoupling dataframe operations from execution engines. Most Python dataframe libraries tie you to a specific engine, while many databases only expose SQL interfaces. Ibis addresses this by letting you write dataframe expressions in Python that compile to the native language of your chosen backend—typically SQL for databases, or native dataframe operations for in-memory engines. This approach lets you use the same code against DuckDB locally, then switch to Snowflake or BigQuery in production by changing a single line. The tool supports both SQL-generating backends like PostgreSQL and Snowflake, and dataframe-generating backends like Polars and PySpark. It also allows mixing Python and SQL code directly, letting you combine Python's flexibility with SQL's scale and performance.
You should adopt Ibis if you need to work across multiple data systems or want the freedom to switch backends without rewriting your analysis code. It suits teams that iterate locally on smaller datasets and deploy to cloud data warehouses, or organizations with heterogeneous data infrastructure. The tool works out of the box with DuckDB as the default local backend, making it accessible for immediate use. If your workflow involves moving between different databases or cloud platforms, or if you want to avoid vendor lock-in, Ibis eliminates the friction of learning separate APIs for each system.
The project maintains active development with regular updates across its core expression system and backend implementations. Work spans both expanding backend support and deepening the capabilities of existing ones. The codebase shows consistent attention to documentation and user experience, with tutorials and guides kept current alongside feature development. Testing infrastructure covers the breadth of supported backends, ensuring that changes maintain compatibility across the diverse execution environments the tool targets.