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.

Library
PyPI
v26.0.0
17,215 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
95 /100 Excellent
Development Activity 100
Maintenance 84
Community 96
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
87 /100 Excellent
Architecture 87
Code Quality 90
Innovation 82
Learning Curve 90

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

Rust
95%
Other

Databend

Data Engineering · Databases

9,477

Open-source enterprise data warehouse unifying analytics, vector search, full-text search, and AI agent orchestration in a single Rust-built engine on S3.

View details
93
Repo Health
84
Technical
77
Dependency
Built with
Rust 95%
Updated yesterday
Python
66%
MIT

Flowfile

Data Engineering

398

Visual ETL that compiles to Polars — build pipelines on a canvas, export as standalone Python, and run anywhere without platform lock-in.

View details
83
Repo Health
81
Technical
66
Dependency
Built with
Python 66%
TypeScript 17%
Vue 16%
Updated 2 days ago
TypeScript
39%
Apache 2.0

Label Studio

AI Development · Data Engineering

28,540

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.

View details
93
Repo Health
87
Technical
64
Dependency
Built with
TypeScript 39%
JavaScript 27%
Python 25%
Updated 2 days ago
Rust
43%
Apache 2.0

LanceDB

AI Development · Databases

11,757

Open-source, embedded vector database built on the Lance columnar format for fast multimodal search across billions of vectors, backed by Y Combinator (W23).

View details
90
Repo Health
86
Technical
72
Dependency
Built with
Rust 43%
Python 27%
HTML 21%
Updated yesterday
Python
71%
MIT

Langflow

AI Agents · AI Development

155,973

Build, test, and deploy AI agents and RAG workflows visually with native API and MCP server export.

View details
90
Repo Health
85
Technical
64
Dependency
Built with
Python 71%
TypeScript 21%
Updated yesterday
Python
62%
Apache 2.0

marimo

Data Engineering · Developer Tools

23,309

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.

View details
90
Repo Health
91
Technical
65
Dependency
Built with
Python 62%
TypeScript 37%
Updated yesterday
C++
66%
Other

Memgraph

AI Development · Databases

4,628

High-performance in-memory graph database for AI context and real-time analytics

View details
90
Repo Health
79
Technical
66
Dependency
Built with
C++ 66%
Python 18%
Updated yesterday
Python
58%
Apache 2.0

MLflow

AI Development · Monitoring

28,512

The open source AI engineering platform for debugging, evaluating, monitoring, and optimizing production LLMs and agents at scale.

View details
96
Repo Health
86
Technical
67
Dependency
Built with
Python 58%
TypeScript 35%
Updated yesterday
Rust
93%
Apache 2.0

Murr

Databases

117

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.

View details
73
Repo Health
72
Technical
75
Dependency
Built with
Rust 93%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers