Skip to main content

FramePeek

Lightweight exploratory data analysis for pandas DataFrames.

Documentation

Usage

import framepeek as fp

report = fp.profile(
    df,
    target_column="churn",
    correlation_method="spearman",
    outlier_multiplier=1.5,
    top_n_categories=5,
)

fp.print_report(report)

The report contains overview, columns, missing, duplicates, numeric, categorical, outliers, correlations, target, and warnings. print_report() gives each section a title and prints tables without formatter-generated ellipses.

Each analysis is also available directly:

fp.overview(df)
fp.columns(df)
fp.missing(df)
fp.duplicates(df)
fp.numeric(df)
fp.categorical(df)
fp.outliers(df)
fp.correlations(df)
fp.target(df, target_column="churn")
fp.quality_warnings(df, target_column="churn")

All functions validate their inputs and leave the original DataFrame unchanged. Object columns containing lists, tuples, dictionaries, sets, frozensets, or NumPy arrays use recursive structural identity for duplicate and categorical analysis. Arrays match when their concrete type, shape, dtype, and nested values match. Other unhashable custom objects use scalar boolean equality; objects whose equality raises or returns a non-scalar result are treated as distinct unless they are the same instance. Cyclic references likewise use instance identity at the cycle boundary.

Outputs

Function Return value
overview DataFrame of dataset-level metrics
columns DataFrame with one profile row per column
missing Dictionary containing explicit columns, rows, and co-missingness patterns
duplicates Dictionary containing totals, groups, and examples
numeric DataFrame of descriptive numeric statistics
categorical DataFrame of frequency and cardinality statistics
outliers DataFrame of IQR bounds and potential outlier counts
correlations Dictionary containing matrix and tidy pairs tables
target Dictionary containing categorical or numeric target analysis
quality_warnings DataFrame of actionable quality warnings
profile Dictionary containing metadata and all analyses above
format_report Bounded text representation of a profile
print_report None; prints the bounded text representation
to_serializable Versioned JSON-compatible envelope preserving table labels and conversion fidelity

Thresholds for missingness, cardinality, outliers, correlations, and class imbalance can be configured through the corresponding function parameters. Warning text parsing is sampled reproducibly for large columns. Correlation analysis supports column subsets, limits, pair-only output, top pairs, and reproducible row sampling. Serialization schema 1.0 stores DataFrames as explicit index, column, and data arrays. Mappings with non-string keys use entry records so distinct labels cannot overwrite each other; the envelope's exact field identifies lossy fallback display values. warnings() remains available as a compatibility alias. Pass deep_memory=False to overview() or profile() when a shallow memory estimate is sufficient.

Run the bounded runtime and peak-memory smoke benchmarks with:

python benchmarks/benchmark_profile.py

Development

python -m pip install -e ".[dev]"
python -m ruff check .
python -m mypy src/framepeek
python -m pytest --cov=framepeek --cov-fail-under=100

Download files

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

Source Distribution

framepeek-0.2.1.tar.gz (30.3 kB view details)

Uploaded Source

Built Distribution

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

framepeek-0.2.1-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file framepeek-0.2.1.tar.gz.

File metadata

  • Download URL: framepeek-0.2.1.tar.gz
  • Upload date:
  • Size: 30.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for framepeek-0.2.1.tar.gz
Algorithm Hash digest
SHA256 fa369e6ee18cda26170f38a137a55c6ee027ef873cb5e36b636c0765260e4acf
MD5 5e0fe49d6fdf86c884f66edabf646225
BLAKE2b-256 eba870c50f3973ef1f416e1f1c89763b53744a8695b719c41bb2014c0dadb1ef

See more details on using hashes here.

File details

Details for the file framepeek-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: framepeek-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 24.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for framepeek-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dc09884f4a212c49fae52d512c57daa33ec00e16703a77beb1b0051a4d04ef64
MD5 345d21e22c40a689ad378b21dab6af30
BLAKE2b-256 c7def62edeb560372ec9d9c5c77d9489562c2373d42964bf2bb85313fdf3460c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.2

2 files

This release

0.2.1 This release

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page