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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec21dbf3b11e6690b26dfd0d0dbad7dd6b4608fae48212e9f8c7e26fe324f416
|
|
| MD5 |
9daab07691786d450ab4dc2a5c4c083b
|
|
| BLAKE2b-256 |
706c4923a3ddb157a13046eb788e1b23a3126f9ac6594d5b5012e2e7e941b702
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8cae42bc4a512a270a8dfa97c51b59b9fde95e8fff262cd4af7ab1a6342deab
|
|
| MD5 |
42211ef8aa7a5d3ea5fef8438f230425
|
|
| BLAKE2b-256 |
01f727dce2abf81fd14095b895563c303994cbcae6d1aa5dcd4e961fceeffedf
|