Skip to main content

A modern, open-source Python library built for efficient, scalable data profiling and visualization

Project description

aiedatools

aiedatools is a modern, open-source Python library built for efficient, scalable data profiling and visualization. It is designed for data scientists working with Pandas, Polars, and Google BigQuery (currently).


Features

  • Fast, rich profiling summaries across diverse datasets
  • Interactive visualizations for single and multi-variable analysis
  • Google BigQuery → Polars DataFrame workflows with type safety
  • Works with Pandas, Polars, Arrow, dicts, and more
  • Statistical testing (p-value matrix) and correlation heatmaps

Installation

Requires Python >= 3.10. Install via pip:

pip install aiedatools

Dependencies

  • numpy >= 2.0.0
  • pandas >= 2.2.2
  • polars
  • duckdb
  • plotly
  • scipy
  • pyarrow
  • google-cloud-bigquery

Quick Start

1. Table Profiling

from aiedatools import profile_table
import polars as pl
df = pl.read_csv('mydata.csv')
summary = profile_table(df)
print(summary.head())
  • Detects column type (cat/num/date/key)
  • Computes missing rate, unique levels, distributions, outlier indicators

2. Plotting

Categorical with Bar Plot

from aiedatools import plot_cat_bar
plot_cat_bar(df, 'category')
# With target variable:
plot_cat_bar(df, 'category', target_col='score')

Numeric Histogram and Box Plot

from aiedatools import plot_numeric
plot_numeric(df, 'value', plot_type='hist')
plot_numeric(df, 'value', plot_type='box')

3. Two-variable Analysis

Correlation Heatmap and P-value Heatmap

from aiedatools import plot_corr_heatmap, plot_pvalue_heatmap
plot_corr_heatmap(df, var_num=['score', 'age', 'income'])
plot_pvalue_heatmap(df, list_var_num=['score', 'age'], list_var_cat=['category'])

4. BigQuery to Polars

from aiedatools import bq_to_polars
query = "SELECT * FROM `project.dataset.my_table` LIMIT 1000"
df = bq_to_polars(query)

Detailed Usage Examples

Profiling a Polars DataFrame

import polars as pl
from aiedatools import profile_table

df = pl.DataFrame({
    'group': ['A', 'A', 'B', 'B', 'C'],
    'score': [85, 87, 90, 75, 88],
    'age': [20, 20, 21, 19, 22]
})
profile = profile_table(df)
print(profile)

Plotting with Top N Categories and Target

from aiedatools import plot_cat_bar
plot_cat_bar(df, 'group', target_col='score', number_of_bars=2)

Numeric Variable Distribution with KDE Overlay

from aiedatools import plot_numeric
plot_numeric(df, 'score', plot_type=['hist', 'box'])

Custom Correlation Heatmap with Options

from aiedatools import plot_corr_heatmap
plot_corr_heatmap(df, var_num=['score', 'age'], colorscale='Viridis', round_decimals=3, color_by_absolute=True)

BigQuery: Load Results Directly to Polars

from aiedatools import bq_to_polars
query = 'SELECT category, COUNT(*) as cnt FROM `myproject.mydataset.table` GROUP BY category'
df_bq = bq_to_polars(query)
print(df_bq.head())

API Overview

Profile & Plot

  • profile_table(table) — Profile columns, detect types, missingness, value distributions, outliers
  • plot_cat_bar(table, cat_col, target_col=None, number_of_bars=None) — Bar plot for categorical columns, with support for target aggregation, top-N selection, and "other values"
  • plot_numeric(table, num_col, plot_type='hist') — Histogram or box plot of numeric columns

Two-variable Analysis

  • plot_corr_heatmap(df, var_num, ...) — Correlation heatmap for selected columns
  • plot_pvalue_heatmap(df, list_var_num, list_var_cat, ...) — P-value matrix and heatmap (supports numeric, categorical, and mixed pairs)

Cloud-to-Analytics (BigQuery)

  • bq_to_polars(query) — Runs BigQuery SQL and returns a Polars DataFrame, fixing Arrow types for compatibility

Advanced Usage

Custom Column Type Thresholds

You can adjust num_to_cat_threshold and cat_to_key_threshold in profile_table to fine-tune column classification.

profile = profile_table(df, num_to_cat_threshold=10, cat_to_key_threshold=50)

Use with Arrow Tables or Dictionaries

import pyarrow as pa
arrow_table = pa.table({'cat': ['A', 'B'], 'val': [1, 2]})
profile_table(arow_table)

Plot Customization

  • All plotting functions return a Plotly Figure (fig) — you can further modify it (e.g., layout, colors).
_, fig = plot_cat_bar(df, 'group')
fig.update_layout(title='Custom Title')
fig.show()

BigQuery Authentication via Service Account Key

Be sure to authenticate with Google Cloud before using bq_to_polars. This can be done via the GOOGLE_APPLICATION_CREDENTIALS environment variable:

Linux / macOS (bash, zsh, etc.)

Temporary (current session only):
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account-key.json
Permanent (all sessions):

Please get steps from internet.

Windows

Temporary (current session only):

CMD

set GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

Powershell

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Permanent (all sessions):

CMD/Powershell

setx GOOGLE_APPLICATION_CREDENTIALS "C:\path\to\your\service-account-file.json"
Verify

CMD

echo %GOOGLE_APPLICATION_CREDENTIALS%

Powershell

echo $env:GOOGLE_APPLICATION_CREDENTIALS

License

GNU GENERAL PUBLIC LICENSE Version 3

Author

Dr. Mathesis (dr.mathesis@outlook.com)

Project Homepage

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

aiedatools-0.1.0.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

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

aiedatools-0.1.0-py3-none-any.whl (28.3 kB view details)

Uploaded Python 3

File details

Details for the file aiedatools-0.1.0.tar.gz.

File metadata

  • Download URL: aiedatools-0.1.0.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aiedatools-0.1.0.tar.gz
Algorithm Hash digest
SHA256 12b14cbc4627cc582681b2c2adfdb35e45fb9838622fbb4ce5a2969312eb9e92
MD5 61855ad53020649de7f4e59db8e3ba64
BLAKE2b-256 466a5085be8854d6aba75fc720b366a4fc36915644bd5ffeec3ecdcca5b0b324

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiedatools-0.1.0.tar.gz:

Publisher: publish.yml on drmathesis/aiedatools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aiedatools-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aiedatools-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 28.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aiedatools-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c1e2afbf73f587da1f3612e0a120fcf7b78e56eee6a6a43c0d7d3a86813b3212
MD5 e58b5df371a17c4ebfaa6a8976f78406
BLAKE2b-256 e26e4c0750c33e2104481184a4695532fdaffe52d73f373829ae794eba33f810

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiedatools-0.1.0-py3-none-any.whl:

Publisher: publish.yml on drmathesis/aiedatools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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