Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

onceover

Onceover profiles a Polars DataFrame in Rust and returns column summaries, relationships, and data-quality findings. It is also available as a Rust crate for Polars 0.55.

import polars as pl
import onceover

df = pl.DataFrame({
    "order_id": [1, 2, 3, 4],
    "quantity": [2, 1, 4, 3],
    "double_quantity": [4, 2, 8, 6],
})
report = onceover.profile(df)
print(report.overview["headline"])

Inspect the result through these properties:

  • report.findings lists candidate keys, repeated rows, column relationships, date gaps, and other results. Each entry names the columns involved and contains the measurements used to report it.

  • report.columns contains counts, statistics, value frequencies, and a suggested role for each column. These summaries use all rows.

  • report.coverage lists the checks that ran or were skipped and their sample sizes and search limits.

  • report.groups connects findings that involve the same columns.

Part I — Using onceover

Install the package, profile a table, inspect the results, choose work limits, and save reports.

Part II — Case studies

Worked analyses of a vendor extract, redundant features, and churn shifts.

Part III — Methodology

The calculations behind each detector: counts, dependencies, predictions, rules, associations, row clusters, and dated residual changes.

Part IV — Implementation

Rust crates, DataFrame access, counting, parallel execution, and tests.

Appendix

Research references, possible extensions, JSON fields, and a glossary.

Start here

The analysis notebook provides a longer example with charts and checks against planted relationships. The scale benchmark measures runtime, memory, and recovery of known relationships on a large table.

Using the results

A finding describes the rows examined by its detector. Before applying a predictive result to new data, inspect its sample and validation method and test whether it performs as well on that data. If a finding is absent, check coverage to see whether the relevant detector ran and how much of the input it examined.

4 rows × 3 columns (standard budget); 0 functional dependencies, 0 predictive dependencies, 0 conditional rules