🪶 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!
Metadata
Release files for liteprofile 0.1.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 |
|---|---|---|---|---|
| liteprofile-0.1.0.tar.gz | 8.5 kB | Without provenance | Details for liteprofile-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| liteprofile-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for liteprofile-0.1.0-py3-none-any.whl |
Total release size: 17.2 kB
Release files / liteprofile-0.1.0.tar.gz
| Download URL | liteprofile-0.1.0.tar.gz |
|---|---|
| Size | 8.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ec21dbf3b11e6690b26dfd0d0dbad7dd6b4608fae48212e9f8c7e26fe324f416
|
|
BLAKE2b-256 checksum How to use checksums |
706c4923a3ddb157a13046eb788e1b23a3126f9ac6594d5b5012e2e7e941b702
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / liteprofile-0.1.0-py3-none-any.whl
| Download URL | liteprofile-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b8cae42bc4a512a270a8dfa97c51b59b9fde95e8fff262cd4af7ab1a6342deab
|
|
BLAKE2b-256 checksum How to use checksums |
01f727dce2abf81fd14095b895563c303994cbcae6d1aa5dcd4e961fceeffedf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Security for liteprofile 0.1.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.