Skip to main content

Lightweight exploratory data analysis for pandas DataFrames

Project description

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, dictionaries, sets, or nested mixtures use safe structural identity for duplicate and categorical analysis.

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

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

framepeek-0.2.0.tar.gz (28.8 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.0-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for framepeek-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0c10d948bb98137e150c27d02abcfa1e7732ab57b5395978b2ebb02d68cf9b89
MD5 f3334233f3da3e20cfaa5e2cfd00bf99
BLAKE2b-256 5b54d0d2c4bb5f14b9abbb8981fbe5feda8120445a7dae910d19394692feabf8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for framepeek-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40e6c9b8c8e117cc45669d14be83dbd526610f5526b8c8485f51fac667c582f7
MD5 feffd926d4bb5b2f47f1c95cfc350d65
BLAKE2b-256 049cde4f456c0c1322ce33253ca19e17410103f416d05b415d3a99ba006c90df

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