Skip to main content

A lightweight, fast data profiling library built on Polars (with Pandas fallback).

Project description

🪶 liteprofile

A lightweight, fast alternative inspired by ydata-profiling (pandas-profiling) — built on Polars.


⚡️ Why

liteprofile is inspired by the great work of ydata-profiling.
While that library provides rich and detailed statistical reports, liteprofile focuses on speed, simplicity, and small output for quick exploratory data analysis (EDA).

It’s designed as a complement — use ydata-profiling when you need deep insights, and liteprofile when you need a fast, clear overview.

Tool Focus Typical use-case Output Dependencies
ydata-profiling full statistical profiling comprehensive analysis large HTML report heavy
sweetviz visualization-focused visual EDA HTML dashboard medium
liteprofile lightweight summaries fast checks / CI / CLI Markdown or compact HTML minimal

🚀 Features

  • ⚡ Super-fast summaries with Polars or DuckDB
  • 📊 Numeric stats: mean, std, quantiles, outliers
  • 🔢 Categorical summaries: top frequencies
  • 🔗 Optional numeric correlations
  • 🧠 Smart warnings (constant / missing / high-cardinality)
  • 🧰 CLI and Python API
  • 💾 Outputs: Markdown or minimal HTML
  • 🧩 Easy to extend — build your own “lite” analytics blocks

🧰 Installation

pip install liteprofile
# or from source
pip install git+https://github.com/inezvl/liteprofile.git

💡 Quickstart

From Python

import polars as pl
from liteprofile import profile, profile_html

df = pl.DataFrame({
    "id": [1, 2, 3, 4, 5],
    "city": ["Antwerp", "Ghent", "Ghent", "Brussels", None],
    "price": [100.0, 200.5, 180.2, 300.0, 300.0]
})

# Markdown summary
print(profile(df))

# HTML summary
html = profile_html(df)
with open("report.html", "w", encoding="utf-8") as f:
    f.write(html)

From CLI

python -m liteprofile data.csv --html --out report.html
open report.html

🪶 Example Output (Markdown)

# liteprofile report

## Overview
| metric          | value |
|-----------------|--------|
| rows            | 5      |
| columns         | 3      |
| duplicate_rows  | 0      |

## Columns
| column | dtype | nulls | null_% | unique | mean | std | min | q1 | median | q3 | max | outliers_iqr | sample |
|--------|--------|-------|--------|---------|------|-----|-----|----|---------|----|-----|---------------|---------|
| id     | Int64  | 0 | 0 | 5 | 3 | 1.58 | 1 | 2 | 3 | 4 | 5 | 0 | [1, 2, 3, 4, 5] |
| city   | Utf8   | 1 | 20 | 3 |  |  |  |  |  |  |  |  | ['Antwerp', 'Ghent', 'Ghent', 'Brussels', None] |
| price  | Float64 | 0 | 0 | 3 | 216 | 83.8 | 100 | 180 | 200 | 300 | 300 | 0 | [100.0, 200.5, 180.2, 300.0, 300.0] |

🧩 Roadmap

Feature Status Notes
Core Markdown summary already implemented
HTML summary minimal & lightweight
CLI support python -m liteprofile
DuckDB backend 🧠 planned for large datasets
Sampling mode 🧠 planned for millions of rows
YAML profiles (speed/deep) 🧠 planned toggle stats easily
PyPI release 🚧 coming soon

🧠 Philosophy

liteprofile aims to complement existing data-profiling tools.
Instead of competing, it offers a minimal mode for everyday use — perfect for quick checks before going deeper with heavier frameworks.

Inspired by the community feedback around the need for a “fast mode” in ydata-profiling.


🤝 Contributing

Contributions are welcome!
You can help by:

  • Adding backends (DuckDB, Arrow, SQLite)
  • Enhancing HTML rendering
  • Building small extensions (e.g., histograms, missing-value heatmaps)
  • Benchmarking against other profilers

📜 License

MIT © Inez Van Laer


⭐️ Support

If you like the project:

  • Leave a ⭐️ on GitHub — it really helps
  • Open a Discussion for feedback or feature ideas
  • Tell us what you’d love to see in the next release!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

liteprofile-0.1.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

liteprofile-0.1.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file liteprofile-0.1.0.tar.gz.

File metadata

  • Download URL: liteprofile-0.1.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for liteprofile-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ec21dbf3b11e6690b26dfd0d0dbad7dd6b4608fae48212e9f8c7e26fe324f416
MD5 9daab07691786d450ab4dc2a5c4c083b
BLAKE2b-256 706c4923a3ddb157a13046eb788e1b23a3126f9ac6594d5b5012e2e7e941b702

See more details on using hashes here.

File details

Details for the file liteprofile-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: liteprofile-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for liteprofile-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b8cae42bc4a512a270a8dfa97c51b59b9fde95e8fff262cd4af7ab1a6342deab
MD5 42211ef8aa7a5d3ea5fef8438f230425
BLAKE2b-256 01f727dce2abf81fd14095b895563c303994cbcae6d1aa5dcd4e961fceeffedf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page