Skip to main content

edaSol

A Python library to accelerate Exploratory Data Analysis (EDA).

edaSol provides simple, intuitive functions to quickly understand your dataset's structure, quality, and distributions without writing repetitive boilerplate code.

Features

  • Quick Data Summary - Get data types, null counts, unique values at a glance
  • Data Quality Reports - Comprehensive analysis of missing values, duplicates, and memory usage
  • Outlier Detection - IQR-based outlier identification
  • Categorical Analysis - Statistics for categorical columns
  • Visualization Suite - Distribution plots, correlation heatmaps, boxplots, and more

Installation

pip install edaSol

Or install from source:

git clone https://github.com/SoloWPM23/edaSol.git
cd edaSol
pip install -e .

Quick Start

import pandas as pd
from edaSol import quick_summary, data_quality_report, plot_numerical_dist

# Load your data
df = pd.read_csv('your_data.csv')

# Get a quick summary of all columns
summary = quick_summary(df)
print(summary)

# Generate a comprehensive quality report
report = data_quality_report(df)
print(f"Shape: {report['shape']}")
print(f"Duplicates: {report['duplicates']}")
print(f"Memory: {report['memory_usage']} MB")

# Visualize numeric distributions
plot_numerical_dist(df)

API Reference

Core Functions

quick_summary(df, columns=None)

Returns a summary DataFrame with key statistics for each column.

from edaSol import quick_summary

summary = quick_summary(df)
# Returns: Data Type, Null Count, Null Percent, Unique Count, Sample Value

detect_outliers_iqr(df, column, return_bounds=False)

Detects outliers using the IQR (Interquartile Range) method.

from edaSol import detect_outliers_iqr

# Get outlier indices
outliers = detect_outliers_iqr(df, 'price')

# Get outliers with bounds
outliers, lower, upper = detect_outliers_iqr(df, 'price', return_bounds=True)

describe_categorical(df, columns=None)

Returns descriptive statistics for categorical columns.

from edaSol import describe_categorical

cat_stats = describe_categorical(df)
# Returns: Count, Unique, Top Value, Top Frequency, Top Percent

detect_duplicates(df, subset=None, keep='first')

Finds and returns duplicate rows.

from edaSol import detect_duplicates

duplicates = detect_duplicates(df)
duplicates_by_cols = detect_duplicates(df, subset=['name', 'email'])

data_quality_report(df)

Generates a comprehensive data quality report.

from edaSol import data_quality_report

report = data_quality_report(df)
# Returns dict with: shape, memory_usage, dtypes, missing, duplicates,
# numeric_summary, categorical_summary

Visualization Functions

plot_numerical_dist(df, columns=None, figsize=(12, 4), show=True)

Creates histogram with KDE plots for numeric columns.

from edaSol import plot_numerical_dist

plot_numerical_dist(df)
plot_numerical_dist(df, columns=['age', 'salary'])

plot_correlation_heatmap(df, figsize=(10, 8), annot=True, mask_upper=True, show=True)

Creates a correlation heatmap for numeric columns.

from edaSol import plot_correlation_heatmap

plot_correlation_heatmap(df)
plot_correlation_heatmap(df, mask_upper=False)  # Show full matrix

plot_missing_matrix(df, figsize=(12, 6), show=True)

Visualizes missing values as a heatmap matrix.

from edaSol import plot_missing_matrix

plot_missing_matrix(df)

plot_categorical_dist(df, columns=None, figsize=(12, 4), top_n=10, show=True)

Creates bar plots for categorical columns.

from edaSol import plot_categorical_dist

plot_categorical_dist(df)
plot_categorical_dist(df, top_n=5)  # Show only top 5 categories

plot_boxplots(df, columns=None, figsize=(12, 4), show=True)

Creates boxplots to visualize distributions and outliers.

from edaSol import plot_boxplots

plot_boxplots(df)
plot_boxplots(df, columns=['age', 'income'])

plot_pairplot(df, columns=None, hue=None, diag_kind='kde', show=True)

Creates pairwise scatter plots for numeric columns.

from edaSol import plot_pairplot

plot_pairplot(df)
plot_pairplot(df, hue='category')  # Color by category

Requirements

  • Python >= 3.8
  • pandas >= 1.5.0
  • numpy >= 1.20.0
  • matplotlib >= 3.5.0
  • seaborn >= 0.11.0

License

MIT License

Author

Solo Manurung (solowandika490@gmail.com)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Metadata

Release files for edaSol 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for edaSol 0.1.1
File Size Uploaded
edasol-0.1.1.tar.gz 8.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for edaSol 0.1.1
File Interpreter ABI Platform
edasol-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 17.1 kB

Release files / edasol-0.1.1.tar.gz

Download URL edasol-0.1.1.tar.gz
Size 8.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4235833c78a296ff77c8a89df8eb6aabae5d3272c7a8658aaa883fa9042381bd
BLAKE2b-256 checksum
How to use checksums
28d304e389f264995ea0cd861111635eb43d0f5fe28b67b7942dc31639d24630
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / edasol-0.1.1-py3-none-any.whl

Download URL edasol-0.1.1-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fdee1f24a20d2fa2598f11391ba2dabe96f163d2372bf25dab623bc1a4c6039b
BLAKE2b-256 checksum
How to use checksums
80404f4741f6b0af6a49ba21dd2080d1e710771b5c0429d4c88074c1ddcb59ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release 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