A Python package for manipulating 2-dimensional tabular data structures
datatable
This is a Python package for manipulating 2-dimensional tabular data structures (aka data frames). It is close in spirit to [pandas][] or [SFrame][]; however we put specific emphasis on speed and big data support. As the name suggests, the package is closely related to R's [data.table][] and attempts to mimic its core algorithms and API.
Requirements: Python 3.6+ (64 bit) and pip 20.3+.
Project goals
datatable started in 2017 as a toolkit for performing big data (up to 100GB) operations on a single-node machine, at the maximum speed possible. Such requirements are dictated by modern machine-learning applications, which need to process large volumes of data and generate many features in order to achieve the best model accuracy. The first user of datatable was [Driverless.ai][].
The set of features that we want to implement with datatable is at least the following:
- Column-oriented data storage.
- Native-C implementation for all datatypes, including strings. Packages such
- Support for date-time and categorical types. Object type is also supported,
- All types should support null values, with as little overhead as possible.
- Data should be stored on disk in the same format as in memory. This will
- Work with memory-mapped datasets to avoid loading into memory more data than
- Fast data reading from CSV and other formats.
- Multi-threaded data processing: time-consuming operations should attempt to
- Efficient algorithms for sorting/grouping/joining.
- Expressive query syntax (similar to [data.table][]).
- Minimal amount of data copying, copy-on-write semantics for shared data.
- Use "rowindex" views in filtering/sorting/grouping/joining operators to
- Interoperability with pandas / numpy / pyarrow / pure python: the users
Installation
On macOS, Linux and Windows systems installing datatable is as easy as
pip install datatable
On all other platforms a source distribution will be needed. For more information see Build instructions.
See also
[pandas]: https://github.com/pandas-dev/pandas [sframe]: https://github.com/turi-code/SFrame [data.table]: https://github.com/Rdatatable/data.table [driverless.ai]: https://www.h2o.ai/driverless-ai/