Why try Ibis?¶
Ibis is a dataframe interface to execution engines with support for 15+ backends. Ibis doesn't replace your existing execution engine, it extends it with powerful abstractions and intuitive syntax.
Ibis works with what you already have, so why not check out our getting started guide?
How does Ibis compare to...¶
Let us stop you there. Ibis is an interface that empowers you to craft complex and powerful queries that execute on your engine of choice.
The answer to, "how does Ibis compare to
X?" is "Ibis helps you use
Get in touch if you're having trouble using
Now that we've said that, here are some other tools that you might compare Ibis with:
Big Data engines like
See above. Ibis works with your existing execution engine, it doesn't replace it.
SQL is the 800 lb gorilla in the room. One of our developers gave a whole talk comparing Ibis and SQL, but we can summarize some key points:
- SQL fails at runtime, Ibis validates expressions as you construct them
- Ibis is written in Python and features some pretty killer tab-completion
- Ibis lets you use SQL when you want to (for our SQL-based backends)
If your SQL-fu is strong, we might not convince you to leave it all behind, but check out our Ibis for SQL Programmers guide and see if it whets your appetite.
pandas is the 800 lb panda in the room. Ibis, like every dataframe API in the
PyData ecosystem, takes a fair bit of inspiration from
And like the other engine comparisons above, Ibis doesn't replace
pandas, it works with
pandas is an in-memory analysis engine -- if your data are bigger than the
amount of RAM you have, things will go poorly.
Ibis defers execution, and is agnostic to the backend that runs a given query.
If your analysis is causing
pandas to hit an out-of-memory error, you can use
Ibis to quickly and easily switch to a different backend that supports
Ibis syntax is similar to
pandas syntax, but it isn't a drop-in replacement.
Check out our Ibis for pandas Users guide if
you'd like to give Ibis a try!
sqlglot are amazing tools and we are big
fans. Ibis uses both of these heavily to validate and generate SQL to send to
our SQL backends.
If you need super-fine-grained control over which SQL primitives are used to construct a query and you are using Python, SQLAlchemy is definitely the tool for you.
If you are looking for a Python-based SQL transpiler, we strongly recommend using SQLGlot.
If you are looking for a dataframe API to construct and execute your analytics queries against a large collection of powerful execution engines, then allow us point you at the Ibis Getting Started guide.