polars-profiling
Profile your Polars DataFrames with a single line of code.
polars-profiling generates a rich, interactive HTML exploratory-data-analysis
report from a Polars DataFrame. It is a fork of
ydata-profiling (formerly
pandas-profiling) rebuilt to run exclusively on Polars — pandas, Spark,
and visions have been removed entirely, and every statistic is computed
natively with Polars expressions.
For each column you get type detection, descriptive statistics, quantiles, histograms, common/extreme values, correlations, missing-value diagnostics, interactions, duplicate-row detection, samples, and automatic data-quality alerts.
Why Polars-only?
| ydata-profiling | polars-profiling | |
|---|---|---|
| Input | pandas / Spark | Polars |
| Compute engine | pandas / numpy | native Polars expressions |
| Heavy dependencies | pandas, visions, seaborn, statsmodels, phik | none of them |
| Telemetry | phones home | none |
The full data path — value counts, distinct/unique, numeric statistics,
quantiles, histograms, correlations, missing-data nullity, duplicates and
sampling — runs through Polars. There is no .to_pandas() anywhere in the
pipeline.
Installation
pip install polars-profiling
Quickstart
import polars as pl
from polars_profiling import ProfileReport
df = pl.read_csv("titanic.csv")
profile = ProfileReport(df, title="Titanic Dataset", explorative=True)
profile.to_file("titanic_report.html")
Or use the DataFrame accessor:
df.profile_report().to_file("report.html")
In a Jupyter notebook
profile = ProfileReport(df, title="Profiling Report")
profile.to_notebook_iframe()
Get the raw statistics (no HTML)
description = ProfileReport(df, progress_bar=False).get_description()
print(description.table["types"]) # {'Numeric': 7, 'Text': 3, 'Categorical': 2}
print(description.variables["Age"]["mean"])
Features
- Type inference — Numeric, Categorical, Boolean, DateTime, Text (with configurable, content-based inference for string columns).
- Univariate statistics — count, distinct/unique, missing, mean, std, variance, min/max, quantiles, MAD, skewness, kurtosis, monotonicity, zeros, negatives, infinities.
- Histograms & frequency tables, common and extreme values.
- Correlations —
auto, Pearson, Spearman, Kendall and Cramér's V, computed natively. - Missing-value diagnostics — count bar, nullity matrix and correlation heatmap.
- Interactions — pairwise scatter plots between continuous variables.
- Duplicate-row detection and head/tail/random samples.
- Data-quality alerts — high correlation, high cardinality, imbalance, missing values, zeros, uniqueness, constants and more.
- Report comparison — diff two datasets side by side.
Configuration
ProfileReport accepts a familiar set of keyword arguments. A few common ones:
ProfileReport(
df,
title="My Report",
minimal=True, # faster, fewer computations
explorative=True, # enable extra analyses
correlations={"pearson": {"calculate": True}},
missing_diagrams={"heatmap": False},
samples={"head": 5, "tail": 5},
type_schema={"col": "categorical"}, # override inferred types
progress_bar=False,
)
Comparing two reports
from polars_profiling import compare
report_a = ProfileReport(df_a, title="A")
report_b = ProfileReport(df_b, title="B")
compare([report_a, report_b]).to_file("comparison.html")
Differences from ydata-profiling
- Input must be a Polars
DataFrame(pandas/Spark are not accepted). phi_kcorrelation is not available (it is a pandas-only package); the other correlation methods are reimplemented natively.- The Great Expectations export converts to pandas at that single boundary only
(and requires the optional
great_expectationspackage, which itself depends on pandas). - No telemetry is collected or sent.
License
MIT — see LICENSE. This project builds on the work of ydata-profiling and pandas-profiling.
Metadata
Release files for polars-profiling 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| polars_profiling-0.2.0.tar.gz | 1.8 MB | With provenance | Details for polars_profiling-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| polars_profiling-0.2.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for polars_profiling-0.2.0-py2.py3-none-any.whl |
Total release size: 2.2 MB
Release files / polars_profiling-0.2.0.tar.gz
| Download URL | polars_profiling-0.2.0.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0a5c8cbb560290edd1495d101dc88f3a91674f9cb45ea91ba3983452b8fb0536
|
|
BLAKE2b-256 checksum How to use checksums |
e22db67c8c07fd6aeb35d6156fcf7bd649ad6fc9f242277713cc969767c64291
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 24, 2026.
Transparency logRelease files / polars_profiling-0.2.0-py2.py3-none-any.whl
| Download URL | polars_profiling-0.2.0-py2.py3-none-any.whl |
|---|---|
| Size | 366.8 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
96eadc9a225957abd03c59d9f91d7b6cacebaaa95be621047d150272055a1eb0
|
|
BLAKE2b-256 checksum How to use checksums |
39eed4c9c352dd7a274428eb035afc24352bae8ce9f6ab2a47b3794e556c3f8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 24, 2026.
Transparency logSecurity for polars-profiling 0.2.0
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 2 files in this release have been uploaded with provenance metadata.
Attestation for polars_profiling-0.2.0.tar.gz
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 Jun 24, 2026.
Transparency logA 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.