Spaces:
Sleeping
Sleeping
metadata
title: Data Cleaning Env
emoji: π§Ή
colorFrom: blue
colorTo: green
sdk: docker
app_file: app.py
pinned: false
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
π§ AI-Powered Data Cleaning Environment (OpenEnv)
π Overview
This project implements an AI-driven data cleaning environment following the OpenEnv specification.
An LLM-based agent interacts with the environment step-by-step and performs data cleaning actions to improve dataset quality.
The system evaluates:
- Decision-making ability of AI
- Data cleaning strategies
- Efficiency (steps vs quality)
π― Objective
To build an environment where an AI agent can:
- Detect data issues
- Apply cleaning actions
- Maximize final data quality score
βοΈ Environment Design
πΉ Observation Space
Each step returns:
{
"dataset": {...},
"shape": [rows, columns],
"steps": n
}
dataset: current dataset stateshape: dimensionssteps: steps taken so far
πΉ Action Space
Agent can perform:
| Action | Description |
|---|---|
fill_nulls |
Fill missing values |
remove_nulls |
Remove rows with nulls |
deduplicate |
Remove duplicate rows |
convert_types |
Fix incorrect data types |
trim_whitespace |
Clean text formatting |
normalize |
Normalize numeric columns |
inspect_column |
Analyze a column |
Action Format:
{
"type": "action_name",
"column": "column_name"
}
πΉ Reward System
- Positive reward β correct cleaning
- Negative reward β unnecessary/wrong action
Example:
- Fill nulls β
+0.12 - Wrong removal β
-0.08
πΉ Episode Termination
Episode ends when:
done = TrueOR- max steps reached
Final score is computed using:
score β [0, 1]
π§ͺ Tasks
β Task 1: Basic Cleaning
- Handle null values
- Remove duplicates
- Fix data types
β Task 2: Intermediate Cleaning
- Better decision strategies
- Column-wise reasoning
β Task 3: Full Pipeline
- Complete dataset cleaning
- Optimal sequence of actions
π€ AI Agent (Inference)
The agent uses an LLM to:
- Analyze dataset summary
- Choose next action
- Avoid repeating actions
- Improve data quality iteratively
πΉ Strategy Used
Instead of sending full dataset, we send:
- Column statistics (null %, dtype, unique values)
- Duplicate count
- Sample rows
- Action history
π This improves reasoning and reduces noise.
π Baseline Performance
| Task | Score |
|---|---|
| Task 1 | ~0.70 |
| Task 2 | ~0.75 |
| Task 3 | ~0.80 |
π Setup Instructions
1οΈβ£ Clone Repository
git clone <repo-url>
cd data-cleaning-env
2οΈβ£ Install Dependencies
pip install -r requirements.txt
3οΈβ£ Set Environment Variables
Windows (PowerShell):
setx HF_TOKEN "your_token_here"
setx MODEL_NAME "Qwen/Qwen2.5-72B-Instruct"
setx API_BASE_URL "https://router.huggingface.co/v1"
Linux/Mac:
export HF_TOKEN="your_token_here"
export MODEL_NAME="Qwen/Qwen2.5-72B-Instruct"
export API_BASE_URL="https://router.huggingface.co/v1"
4οΈβ£ Run Inference
python inference.py
π‘ API Endpoints
πΉ Reset
POST /reset
πΉ Step
POST /step
Example:
{
"type": "fill_nulls",
"column": "city"
}
πΉ State
GET /state
π³ Docker Setup
Build:
docker build -t data-cleaning-env .
Run:
docker run -p 7860:7860 data-cleaning-env
π Hugging Face Deployment
- Create Space β Docker
- Push code
- Add environment variables:
HF_TOKENMODEL_NAMEAPI_BASE_URL
β Validation
openenv validate
bash validate-submission.sh <your-space-url>
π Project Structure
.
βββ app.py
βββ inference.py
βββ Dockerfile
βββ requirements.txt
βββ README.md
βββ env/
βββ environment.py
βββ actions.py
βββ data_generator.py
βββ issue_injector.py
βββ graders/
β οΈ Constraints
- Runtime < 20 minutes
- Compatible with:
- 2 vCPU
- 8GB RAM
- Must follow OpenEnv spec
π Conclusion
This project demonstrates:
- AI-based decision making
- Reinforcement-style environment
- Automated data cleaning
π©βπ» Authors
- Tanushree Gupta
- Disha Singla