Pure-Python Parquet reader/writer · pandas-native · verified against fastparquet 2026.x (2026) · ⚠ maintenance winding down

fastparquet cheat sheet

fastparquet reads & writes the Parquet columnar format from Python, built around pandas. write(path, df) saves a DataFrame; ParquetFile(path).to_pandas() reads it back — with column pushdown, row-group filtering, partitioned datasets, and pluggable compression (snappy/zstd/gzip/…). Heads-up: with pandas 3.0 depending on PyArrow directly, fastparquet is in maintenance/retirement — prefer pyarrow (or df.to_parquet) for new code; this sheet documents fastparquet for existing pandas-2.x usage. Targets fastparquet 2026.x, Python 3.9+.

write read partitions & row groups compression & append remote & migration gotcha / retirement most common

Verified 2026-08-31 against fastparquet.readthedocs.io & the dask/fastparquet repo (fastparquet 2026.5.0, released 2026-05-15; CalVer; Python 3.9+). Deps: numpy, pandas, cramjam (codecs), fsspec (remote). Usually reached via pandas.read_parquet(..., engine="fastparquet") rather than directly.

Outline

write() to save, ParquetFile to read. Then column/row-group selection, partitioned datasets, compression, append, and — for new work — the move to PyArrow.

Write & read

  1. 1Install & status
  2. 2Write a DataFrame
  3. 3Read: ParquetFile
  4. 4Column/row-group select

Datasets & compression

  1. 5Partitioned datasets
  2. 6Compression & options
  3. 7Append & schema
  4. 8Metadata & inspection

Remote & migration

  1. 9Remote (fsspec) & dask
  2. 10Move to PyArrow

Write & Read

The two functions that do 90% of the work — plus how to read only what you need.

1Install & statuspip / read this
2Write a DataFramewrite()
3Read: ParquetFileto_pandas()
4Column/row-group selectread less

Datasets & Compression

Partition for query pruning; pick a codec; append to existing datasets.

5Partitioned datasetspartition_on
6Compression & optionscodecs
7Append & schemagrow a dataset
8Metadata & inspectionthe footer

Remote & Migration

Read cloud storage via fsspec, feed Dask, and move to PyArrow for the future.

9Remote (fsspec) & daskcloud & scale
10Move to PyArrowthe future

Worth memorizing

write(path, df)DataFrame -> Parquet
ParquetFile(path).to_pandas()Parquet -> DataFrame
engine="fastparquet"usually reached via pandas
columns=[...]column pushdown — read less
filters=[(col, "==", v)]row-group/partition pruning
file_scheme="hive"multi-file dataset (needed to append)
partition_on=[...]low-cardinality columns only
compression=snappy (fast) / zstd (smaller)
append=Truegrow a hive dataset (schema must match)
iter_row_groups()bounded-memory streaming read
RETIRINGnew code -> pyarrow / df.to_parquet
Parquet is standardfiles interoperate across engines