Skip to content

High-performance data profiler for Data Scientists. Profile 50GB+ datasets in seconds. Rust core, Python API, SIMD-accelerated. Leverages Apache Arrow & DataFusion SQL Engine.

License

MIT, Apache-2.0 licenses found

Licenses found

MIT
LICENSE
Apache-2.0
LICENSE-APACHE
Notifications You must be signed in to change notification settings

AndreaBozzo/dataprof

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
dataprof logo

dataprof

The High-Performance Profiler for Large Datasets

CI codecov Crates.io License: MIT OR Apache-2.0 PyPI Downloads


Profile 50GB datasets in seconds on your laptop.

DataProf is built for Data Scientists and Engineers who need to understand their data fast. No more MemoryError when trying to profile a CSV larger than your RAM.

Pandas-Profiling vs DataProf on a 10GB CSV:

Feature Pandas-Profiling / YData DataProf
Memory Usage 12GB+ (Crashes) < 100MB (Streaming)
Speed 15+ minutes 45 seconds
Implementation Python (Slow) Rust (Blazing Fast)

Quick Start

Installation

The easiest way to get started is via pip:

pip install dataprof

Python Usage

Forget complex configurations. Just point to your file:

import dataprof

# Analyze a huge file without crashing memory
# Generates a report.html with quality metrics and distributions
dataprof.profile("huge_dataset.csv").save("report.html")

CLI & Rust Usage (Advanced)

If you prefer the command line or are a Rust developer:

# Install via cargo
cargo install dataprof

# Generate report from CLI
dataprof-cli report huge_data.csv -o report.html

More options: dataprof-cli --help | Full CLI Guide

πŸ’‘ Key Features

  • No Size Limits: Profiles files larger than RAM using streaming and memory mapping.
  • Blazing Fast: Written in Rust with SIMD acceleration.
  • Privacy Guaranteed: Data never leaves your machine.
  • Format Support: CSV, Parquet, JSON/L, and Databases (Postgres, MySQL, etc.).
  • Smart Detection: Automatically identifies Emails, IPs, IBANs, Credit Cards, and more.

πŸ“Š Beautiful Reports

Interactive Demo
Animated walkthrough of dataprof features and dashboards

DataProf Demo



Single File Analysis
Interactive dashboards with quality scoring and distributions

Single Report Dashboard



Batch Processing Dashboard
Aggregate metrics from hundreds of files in one view

Batch Dashboard

Documentation

Advanced Examples

Batch Processing (Python)

# Process a whole directory of files in parallel
result = dataprof.batch_analyze_directory("/data_folder", recursive=True)
print(f"Processed {result.processed_files} files at {result.files_per_second:.1f} files/sec")

Database Integration (Python)

# Profile a SQL query directly
await dataprof.analyze_database_async(
    "postgresql://user:pass@localhost/db",
    "SELECT * FROM sales_data_2024"
)

Rust Library Usage

use dataprof::*;

let profiler = DataProfiler::auto();
let report = profiler.analyze_file("dataset.csv")?;
println!("Quality Score: {}", report.quality_score());

Development

# Setup
git clone https://github.com/AndreaBozzo/dataprof.git
cd dataprof
cargo build --release

# Test databases (optional)
docker-compose -f .devcontainer/compose.yml up -d

# Common tasks
cargo test          # Run tests
cargo bench         # Benchmarks
cargo clippy        # Linting

Feature Flags

# Minimal (CSV/JSON only)
cargo build --release

# With Apache Arrow (large files >100MB)
cargo build --release --features arrow

# With Parquet support
cargo build --release --features parquet

# With databases
cargo build --release --features postgres,mysql,sqlite

# Python async support
maturin develop --features python-async,database,postgres

# All features
cargo build --release --all-features

When to use Arrow: Large files (>100MB), many columns (>20), uniform types When to use Parquet: Analytics, data lakes, Spark/Pandas integration

Documentation

User Guides: CLI Reference Database Connectors

🀝 Contributing

We welcome contributions from everyone! Whether you want to:

  • Fix a bug πŸ›
  • Add a feature ✨
  • Improve documentation πŸ“š
  • Report an issue πŸ“

Quick Start for Contributors

  1. Fork & clone:

    git clone https://github.com/YOUR-USERNAME/dataprof.git
    cd dataprof
  2. Build & test:

    cargo build
    cargo test
  3. Create a feature branch:

    git checkout -b feature/your-feature-name
  4. Before submitting PR:

    cargo fmt --all
    cargo clippy --all --all-targets
    cargo test --all
  5. Submit a Pull Request with clear description

All contributions are welcome. Please read CONTRIBUTING.md for guidelines and our Code of Conduct.

License

Dual-licensed under either:

You may use this project under the terms of either license.

About

High-performance data profiler for Data Scientists. Profile 50GB+ datasets in seconds. Rust core, Python API, SIMD-accelerated. Leverages Apache Arrow & DataFusion SQL Engine.

Topics

Resources

License

MIT, Apache-2.0 licenses found

Licenses found

MIT
LICENSE
Apache-2.0
LICENSE-APACHE

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 5