Cleaning Agent
Intelligent data cleaning agent for automated data quality improvement.
🚀 Features
- Automated Data Quality Analysis: Detect missing values, duplicates, outliers, and data type inconsistencies
- Intelligent Cleaning Strategies: AI-powered decision making for optimal cleaning approaches
- LLM-Driven Cleaning: Leverage Large Language Models to automatically generate and execute Python code for complex data cleaning tasks.
- Multiple Data Format Support: CSV, Excel, JSON, Parquet, and pandas DataFrames
- Comprehensive Reporting: Detailed cleaning reports with metrics and recommendations
- Configurable Parameters: Customize cleaning behavior and thresholds
- Command Line Interface: Easy-to-use CLI for batch processing
- Python API: Simple integration into existing workflows
🏗️ Architecture
The Cleaning Agent follows a modular architecture:
CleaningAgent
├── DataQualityAnalyzer # Analyzes data quality and detects issues
├── CleaningValidator # Validates cleaned data and provides assessment
├── Configuration # Manages agent settings and parameters
└── Models # Data structures for requests, responses, and reports
Data Quality Metrics
- Overall Quality Score: 0-1 scale based on multiple factors
- Missing Value Analysis: Per-column missing value statistics
- Duplicate Analysis: Duplicate row counts and percentages
- Data Type Analysis: Column data type distribution
- Uniqueness Analysis: Unique value counts per column
🔍 Supported Data Quality Issues
Missing Values
- Detection: Automatic identification of columns with missing data
- Handling: Smart imputation strategies (median for numerical, mode for categorical)
- Thresholds: Configurable missing value percentage limits
Duplicate Rows
- Detection: Identifies exact and near-duplicate rows
- Removal: Configurable duplicate removal strategies
- Analysis: Reports duplicate patterns and impact
Data Type Inconsistencies
- Detection: Identifies columns with mixed or inappropriate data types
- Standardization: Converts data types for consistency
- Validation: Ensures data type appropriateness
Outliers
- Detection: Statistical outlier detection using IQR method
- Handling: Configurable outlier treatment (capping, removal, investigation)
- Impact Assessment: Reports outlier impact on data quality
Developer Setup and Testing
Setup Instructions
-
Clone the repository and checkout the feature branch:
git clone https://github.com/stepfnAI/cleaning_agent.git cd cleaning_agent git checkout review
-
Install uv (if not already installed):
# Option A: Using the standalone installer (recommended for macOS/Linux) curl -LsSf https://astral.sh/uv/install.sh | sh # Option B: Using pip (if uv is already in an existing environment) pip install uv
-
Create and activate a virtual environment:
uv venv --python=3.10 venv source venv/bin/activate
-
Install the project in editable mode with development dependencies:
uv pip install -e ".[dev]"
-
Clone and set up the sfn_blueprint dependency:
cd .. git clone https://github.com/stepfnAI/sfn_blueprint.git cd sfn_blueprint source ../cleaning_agent/venv/bin/activate git checkout dev uv pip install -e . cd ../cleaning_agent
-
Set your OpenAI API key:
export OPENAI_API_KEY='your-api-key-here'
Example
- Run the example script:
python examples/basic_usage.py
Running Tests
- Run the test suite:
# Run all tests pytest tests/ -s # Run specific test files pytest tests/test_agent.py -s pytest tests/test_context_integration.py -s pytest tests/test_execution_validation.py -s pytest tests/test_llm_driven_cleaning.py -s pytest tests/test_llm_driven_cleaning_with_sql.py -s
Test Structure
tests/
├── test_agent.py # Agent functionality tests
├── test_context_integration.py # Context integration tests
├── test_execution_validation.py # Execution validation tests
├── test_llm_driven_cleaning.py # LLM-driven cleaning tests
├── tests/test_llm_driven_cleaning_with_sql.py # SQL cleaning tests
Test Dependencies
The following testing dependencies are automatically installed:
pytest>=7.0.0- Test frameworkpytest-cov>=4.0.0- Coverage reportingblack>=23.0.0- Code formattingisort>=5.12.0- Import sortingflake8>=6.0.0- Lintingmypy>=1.0.0- Type checking
📊 Output and Reporting
Cleaning Response
{
"success": True,
"cleaned_data": DataFrame,
"report": {
"report_id": "uuid",
"timestamp": "2024-01-01T00:00:00Z",
"data_summary": {
"original_shape": (1000, 10),
"cleaned_shape": (950, 10),
"rows_removed": 50,
"columns_processed": 10
},
"issues_detected": [...],
"cleaning_operations": [...],
"quality_metrics": {
"original_quality_score": 0.65,
"final_quality_score": 0.89,
"improvement": 0.24
},
"recommendations": [...],
"execution_time": 2.34
},
"message": "Data cleaning completed successfully",
"errors": [],
"metadata": {...}
}
Additional Information
- Python Version: 3.10+
- Dependencies: Managed through
pyproject.toml - Code Style: Follows PEP 8 with Black formatting
Release files for cleaning-agent 0.1.17
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cleaning_agent-0.1.17.tar.gz | 52.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cleaning_agent-0.1.17-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 96.2 kB
Release files / cleaning_agent-0.1.17.tar.gz
| Download URL | cleaning_agent-0.1.17.tar.gz |
|---|---|
| Size | 52.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
40f4c724531d7161bbae5faf2b2db00c6a247cfe7138f53fe547ea7d698e0853
|
|
BLAKE2b-256 checksum How to use checksums |
5f486d80f801d8f7bff9d5f4ff876b754664ed2034f55301c25036b23589249c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.18
|
Release files / cleaning_agent-0.1.17-py3-none-any.whl
| Download URL | cleaning_agent-0.1.17-py3-none-any.whl |
|---|---|
| Size | 44.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0016d6269092b793ade19c03da7f2e88b90fdf91581a77f570890b710b19af0c
|
|
BLAKE2b-256 checksum How to use checksums |
b4318e8dd1340fdd310fa63492e8ddcc87bdd060d51c36dd0831cdd3be6e76e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.18
|