PyArrow
Python bindings for Apache Arrow's columnar in-memory format, giving pandas, NumPy, and data pipelines a fast, zero-copy way to move and process tabular data.
Repository Health
Technical Analysis
PyArrow is the official Python implementation of Apache Arrow, a language-independent columnar memory format built for fast analytics and zero-copy data interchange. It wraps the project’s C++ core in a Cython layer, exposing Arrow’s Table, Array, ChunkedArray, and RecordBatch primitives directly to Python while keeping the heavy numerical work in native code.
Beyond in-memory representation, pyarrow bundles readers and writers for Parquet, ORC, CSV, and Feather/IPC, a compute module of vectorized kernels, a Dataset API for scanning partitioned files on local or cloud filesystems, Arrow Flight RPC for streaming data over the network, and interoperability layers for pandas, NumPy, and the C Data Interface/DLPack standards used by other Arrow-aware tools.
What You Get
- Columnar Array/Table/ChunkedArray/RecordBatch types backed by the Arrow C++ memory model
- File format I/O for Parquet, ORC, CSV, JSON, and the Arrow IPC/Feather formats
- A vectorized pyarrow.compute kernel library for filtering, aggregation, and string/temporal operations
- A pyarrow.dataset API for scanning partitioned datasets across local disk, S3, GCS, Azure, and HDFS
- Zero-copy interop with pandas, NumPy, and any library implementing the Arrow C Data Interface or DLPack
- Arrow Flight RPC client/server support for streaming Arrow data over the network
Common Use Cases
- Loading and writing large Parquet datasets faster and with lower memory overhead than pandas alone
- Passing columnar data between Python, R, Java, and C++ processes without serialization overhead
- Building data pipelines that filter and aggregate with pyarrow.compute before or instead of pandas
- Reading partitioned data lakes (Hive-style directories on S3/GCS) via the Dataset API
- Bridging data between DuckDB, Polars, pandas, and ML frameworks through the shared Arrow format
Under The Hood
Architecture
pyarrow wraps the Arrow C++ engine via a Cython bridge layer (lib.pyx/lib.pxd, table.pxi, array.pxi) that exposes cdef classes wrapping shared_ptr<CTable>/CArray/CChunkedArray objects declared in includes/libarrow.pxd; higher-level Python modules (dataset.py, compute.py, csv.py, the parquet/ package) sit on top of these primitives and delegate to native kernels, so nearly all data movement and computation happens in C++ while Python mostly marshals calls and metadata — changing a core abstraction like Table requires touching both the Cython .pxi/.pyx layer and its C++ counterpart in the sibling cpp/ tree.
Tech Stack
Built with scikit-build-core, CMake, and Cython >=3.1 as declared in pyproject.toml, targeting the Arrow C++ libraries (libarrow, libarrow_dataset, libarrow_flight, libparquet, libgandiva) with NumPy as the primary Python-side runtime dependency and optional pandas for interop; requires Python >=3.11, builds cross-platform wheels via a dedicated CI workflow, and exposes optional bindings for GLib, Flight, Gandiva, and Substrait behind separate extension modules.
Code Quality
Extensive test coverage lives under pyarrow/tests (dozens of modules spanning arrays, compute, datasets, Parquet/ORC, Flight, CUDA, and Cython-extension interop), run with pytest and supplemented by hypothesis-based property tests; C++ Status codes are translated into a typed Python exception hierarchy (ArrowInvalid, ArrowTypeError, ArrowKeyError, and friends in error.pxi) rather than being swallowed, docstrings embed runnable doctest examples validated via numpydoc, and CI builds and tests across multiple Python versions and operating systems.
API Design
The public API favors pandas-like ergonomics (pa.table(), pa.array(), .to_pandas()) while keeping columnar/chunked internals explicit through distinctly named types, so zero-copy behavior is opted into rather than hidden; construction functions follow a consistent per-format naming scheme (read_csv/write_csv, read_parquet/write_parquet) and compute kernels are exposed as both free functions and array/table methods, keeping the common “read format, compute, write format” path low on boilerplate, though the still-evolving separate type-stub package means static typing support lags the runtime API.
Used by 28 apps in this directory
Databend
Data Engineering · Databases
Open-source enterprise data warehouse unifying analytics, vector search, full-text search, and AI agent orchestration in a single Rust-built engine on S3.
Flowfile
Data Engineering
Visual ETL that compiles to Polars — build pipelines on a canvas, export as standalone Python, and run anywhere without platform lock-in.
Label Studio
AI Development · Data Engineering
Label Studio is an open-source, multi-type data labeling platform that lets teams annotate images, text, audio, video, and time series data with a configurable XML-based UI and export annotations in formats ready for any ML framework.
LanceDB
AI Development · Databases
Open-source, embedded vector database built on the Lance columnar format for fast multimodal search across billions of vectors, backed by Y Combinator (W23).
Langflow
AI Agents · AI Development
Build, test, and deploy AI agents and RAG workflows visually with native API and MCP server export.
marimo
Data Engineering · Developer Tools
A reactive Python notebook that eliminates hidden state, runs reproducibly, and deploys as a web app or script — stored as pure Python, built for the AI era.
Memgraph
AI Development · Databases
High-performance in-memory graph database for AI context and real-time analytics
MLflow
AI Development · Monitoring
The open source AI engineering platform for debugging, evaluating, monitoring, and optimizing production LLMs and agents at scale.
Murr
Databases
A RocksDB-based NVMe/S3 cache purpose-built for AI inference workloads — a faster Redis replacement optimized for batch, low-latency, zero-copy reads and writes between data pipelines and inference apps.