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
v25.0.1
17,158 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

Python
99%
MIT

Agent Lightning

AI Development

18,515

A Microsoft-built training framework that optimizes AI agents with reinforcement learning, automatic prompt optimization, or supervised fine-tuning — with near-zero code changes to your existing agent, in any framework.

View details
85
Repo Health
68
Technical
69
Dependency
Built with
Python 99%
Updated 4 days ago
TypeScript
56%
Other

agenta

AI Development · Developer Tools · Devops

4,788

The open-source LLMOps platform unifying prompt engineering, evaluation, and observability for teams building reliable LLM applications.

View details
91
Repo Health
77
Technical
67
Dependency
Built with
TypeScript 56%
Python 39%
Updated 5 days ago
Python
47%
Other

Airbyte

Data Engineering · Developer Tools

22,143

Open-source ELT platform with 600+ connectors for moving data from any source to warehouses, lakes, and AI agents.

View details
95
Repo Health
80
Technical
67
Dependency
Built with
Python 47%
Kotlin 43%
Updated 4 days ago
Python
89%
Apache 2.0

Apache Airflow

Data Engineering

46,995

Define, schedule, and monitor complex data workflows as Python code — with a powerful UI, 80+ provider integrations, and battle-tested scalability across thousands of production deployments.

View details
96
Repo Health
89
Technical
64
Dependency
Built with
Python 89%
Updated 4 days ago
Python
92%
Apache 2.0

ART

AI Development

10,779

Give your LLM agents on-the-job training—ART lets you apply GRPO reinforcement learning to any multi-step agentic workflow with minimal code changes.

View details
85
Repo Health
82
Technical
73
Dependency
Built with
Python 92%
Updated 5 days ago
Python
66%
Other

AutoGPT

AI Assistants · Automation · Productivity

187,596

Build, deploy, and run autonomous AI agents that automate complex multi-step workflows using a visual block-based graph editor.

View details
93
Repo Health
78
Technical
66
Dependency
Built with
Python 66%
TypeScript 33%
Updated 4 days ago
Python
83%
MIT

autoresearch

AI Agents · AI Development

96,897

Give an AI agent a real LLM training setup and let it experiment autonomously overnight — you wake up to a log of experiments and (hopefully) a better model.

View details
34
Repo Health
77
Technical
80
Dependency
Built with
Python 83%
Jupyter Notebook 17%
Updated 6 months ago
C++
68%
Apache 2.0

ClickHouse

Analytics · Data Engineering · Databases

50,116

Open-source column-oriented database that delivers real-time analytical queries on petabyte-scale data with millisecond latency.

View details
95
Repo Health
90
Technical
64
Dependency
Built with
C++ 68%
Python 14%
Updated 4 days ago
Rust
52%
Apache 2.0

cocoindex

AI Development · Data Engineering

11,607

An incremental data indexing engine that keeps AI agent context perpetually fresh by reprocessing only what changed.

View details
87
Repo Health
85
Technical
65
Dependency
Built with
Rust 52%
Python 48%
Updated 4 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