Skip to content

About

1 Line of code data quality profiling & exploratory data analysis for Polars DataFrames.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

polars-profiling

Profile your Polars DataFrames with a single line of code.

Build PyPI License Python Polars only

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_k correlation 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_expectations package, 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.

About

1 Line of code data quality profiling & exploratory data analysis for Polars DataFrames.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages