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.0.6.tar.gz (27.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.0.6-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aiedatools-0.0.6.tar.gz
  • Upload date:
  • Size: 27.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.0.6.tar.gz
Algorithm Hash digest
SHA256 ed0a45d4284d31114cac872431702bcf884c1dc968dc276ee12d670868972117
MD5 4afcf45bc246c020e48a407092cc37fc
BLAKE2b-256 0ab2e331124071ab6e10cc41a2d8016ba95dbfcd6ac9077c446c9e53422bf85b

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiedatools-0.0.6.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.0.6-py3-none-any.whl.

File metadata

  • Download URL: aiedatools-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 27.0 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.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6500aa84880f7cb1716b8ec2052d437754f4b3c0d63d1bace3325ea11c306efa
MD5 f7fd0c9316d92a0b7b1a2b406956887c
BLAKE2b-256 3ee89ade63df91ae3df092aae6c17e58e9fa5de1ceb2a48f6338f8cc491c8271

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiedatools-0.0.6-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