ibis-project/ibis

the portable Python dataframe library

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 18 minutes ago
Added to GitGenius on September 9th, 2026
Created on April 17th, 2015
Open Issues & Pull Requests: 538 (+0)
GitHub issues: Enabled
Number of forks: 764
Total Stargazers: 6,660 (+0)
Total Subscribers: 86 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 14.2 hours
Mean response time: 22.9 days
90th percentile: 49.6 days
Tracked items: 519

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 92% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "docs" is answered fastest, typically in about 5 hours, while "new backend" waits about 32 hours. 81% of tracked open issues have had no activity in three months, so the open count overstates what is actively being worked. Only 3% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 274
New in 7 days: 4
Closed in 7 days: 1
Avg open age: 475 days
Stale 30+ days: 261
Stale 90+ days: 248

Recent activity

Opened in 7 days: 0
Closed in 7 days: 1
Comments in 7 days: 0
Events in 7 days: 1

Top labels

  • bug (270)
  • feature (203)
  • docs (43)
  • duckdb (13)
  • ux (11)
  • new backend (10)
  • ci (8)
  • postgres (8)

Detailed Description

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.