Skip to main content

fast-feature-transform

fast-feature-transform

Feature preprocessing for machine learning, written in C++ with a Python API. Fit a pipeline on Parquet files, save it, then transform one record at a time when serving or whole files when training.

  • Feature parity with category_encoders and scikit-learn's preprocessors.
  • Fast: one record takes 0.13 to 1.2 µs, where scikit-learn takes 32 to 219 µs and category_encoders 0.31 to 1.2 ms.
  • Out-of-core execution: Parquet is read in batches, and fits that need every value spill to disk.

Install

pip install fast-feature-transform

Wheels cover CPython 3.14, standard and free-threaded (python3.14t), on Linux x86_64 and arm64 (glibc 2.28 or later) and on macOS 26 or later on Apple silicon. Elsewhere, build from source as Development describes.

Usage

from fast_feature_transform import OrdinalEncoder, Pipeline, StandardScaler

pipeline = Pipeline(
    [
        ("country", OrdinalEncoder(columns=["country"])),
        ("numbers", StandardScaler(columns=["age", "income"])),
    ]
).fit(["train.parquet"])

pipeline.transform_dict({"country": "CA", "age": 42, "income": 75000.0})  # serving: one record
pipeline.transform_parquet(["train.parquet"], output_dir="train-features")  # batches: Parquet in, Parquet out
pipeline.transform_memmap(["train.parquet"], output_dir="train-mmap")  # training: one packed file for NumPy

pipeline.save("artifacts/preprocessing")
serving = Pipeline.load("artifacts/preprocessing")

Transform latency

Time to transform one record (a dict in, a dict out) and batches of 100,000 and 1,000,000 rows, after fitting on 100,000 rows. For one record, category_encoders and scikit-learn also pay to build their DataFrame or array and to turn the result back into a dict. A batch goes from one Parquet file to another on both sides. This package reads the file's strings as stored, a dictionary of distinct values plus an index per row; category_encoders and scikit-learn read the file with pyarrow into pandas or NumPy, transform it, and write the result with this package's Parquet settings. Medians of seven rounds on an Apple M4, one thread; lower is better.

Transform time for 20 encoders, fast-feature-transform against category_encoders 2.10.0

Transform time for 11 preprocessors, fast-feature-transform against scikit-learn 1.9.0

At a million rows scikit-learn took 1.14 to 5.3 times as long and category_encoders 1.2 to 30 times. Reading and writing Parquet adds time on both sides, which narrows the gap where the transform is cheap or its output wide; it stays widest where the other library's transform is slow. Matching names don't always mean matching behavior: categories are sorted, output types are fixed at fit, and PolynomialEncoder differs from category_encoders by about 1e-5 at 32 categories and by more than 0.5 from 40 to 128, because category_encoders' basis is the less accurate one.

License

MIT. The wheels also contain Apache Arrow and the other libraries that THIRD_PARTY_NOTICES.txt lists, and code adapted from SciPy, each under its own license.

Metadata

Release files for fast-feature-transform 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for fast-feature-transform 0.0.1
File Actions
fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details for fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl
fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details for fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl
fast_feature_transform-0.0.1-cp314-cp314t-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 26.0+ ARM64 Details for fast_feature_transform-0.0.1-cp314-cp314t-macosx_26_0_arm64.whl
fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_aarch64.whl
fast_feature_transform-0.0.1-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details for fast_feature_transform-0.0.1-cp314-cp314-macosx_26_0_arm64.whl

Total release size: 34.9 MB

Release files / fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 7.1 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c682e3d2550ec04404302e420022654676d0dc04a08ab524f75ca3a9cf38ce8e
BLAKE2b-256 checksum
How to use checksums
b32471057ba7e7f83769c75043ea24539bea2af83e460627443b0c08e523e837
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Release files / fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 6.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0b945ee5d9e8d59e928d0af849d94372d4bdacf7aae92ea4d0e3032671f22bbe
BLAKE2b-256 checksum
How to use checksums
4c4f0f7e61c14bdda6fe8a4b267ae07a26f8adde17afe0cd27338252604bdee0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Release files / fast_feature_transform-0.0.1-cp314-cp314t-macosx_26_0_arm64.whl

Download URL fast_feature_transform-0.0.1-cp314-cp314t-macosx_26_0_arm64.whl
Size 4.1 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
1016a9addca6f955f7d412f074ff5c9eff6e2d85a7fc404c3163207ca83de210
BLAKE2b-256 checksum
How to use checksums
802d703ff2fbde24aa91803f946e9f6d264df557b1112291bd7b55689b3d6541
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Release files / fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
Size 7.0 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1ae009f7267b192e59650f740e3239f5de224be4dde4ee19433ba0632e17b939
BLAKE2b-256 checksum
How to use checksums
05957a783e31df68a57f1aa8b29e009ef892f83a0fdd2e62028417be647c08db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Release files / fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL fast_feature_transform-0.0.1-cp314-cp314-manylinux_2_28_aarch64.whl
Size 6.3 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d2abf54d5dac15bcef0c2314a1a7f74c3d4418188133f99d7bd274a7ff4579eb
BLAKE2b-256 checksum
How to use checksums
1802681fabe072c0c468f86c26bd108dfc7a25529c4bd883bd9aa1b64bc44934
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Release files / fast_feature_transform-0.0.1-cp314-cp314-macosx_26_0_arm64.whl

Download URL fast_feature_transform-0.0.1-cp314-cp314-macosx_26_0_arm64.whl
Size 4.1 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
d08bc61bdf26db91a7ffe1068309c5f31659c86c82531b48ee7c6dd620d2e7bd
BLAKE2b-256 checksum
How to use checksums
6fd8d9785c4b4754f6efd1e77cef69ec5192bfb6fe39d9e44ff5ea7b44c34496
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Security for fast-feature-transform 0.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for fast_feature_transform-0.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.1 This release

6 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page