data-cleaning-env / quick_score.py
Sumanth2377's picture
feat: initial OpenEnv data-cleaning-env submission v1.0.0
9e2419f
Raw
History Blame Contribute Delete
2.28 kB
from environment.env import DataCleaningEnv
from environment.models import DataCleaningAction
env = DataCleaningEnv()
results = []
for task, actions in [
("csv-doctor", [
("drop_duplicates", {}),
("normalize_format", {"column":"salary","format_type":"strip_currency"}),
("fill_missing", {"column":"age","strategy":"median"}),
("cast_column", {"column":"age","dtype":"int"}),
("fill_missing", {"column":"salary","strategy":"median"}),
("fill_missing", {"column":"email","strategy":"constant","fill_value":"unknown@example.com"}),
("standardize_text", {"column":"name","operations":["title"]}),
("standardize_text", {"column":"department","operations":["strip"]}),
]),
("schema-enforcer", [
("normalize_format", {"column":"phone","format_type":"phone"}),
("normalize_format", {"column":"birth_date","format_type":"date"}),
("normalize_format", {"column":"email","format_type":"email"}),
("normalize_format", {"column":"zip_code","format_type":"zip_code"}),
("normalize_format", {"column":"country","format_type":"text_case","output_format":"upper"}),
("standardize_text", {"column":"first_name","operations":["title"]}),
("standardize_text", {"column":"last_name","operations":["title"]}),
]),
("pipeline-debugger", [
("fix_referential_integrity", {"child_column":"customer_id","parent_table":"customers","parent_column":"customer_id","action":"drop"}),
("drop_duplicates", {"subset":["customer_id","product","price","quantity","order_date"]}),
("clip_outliers", {"column":"price","method":"iqr","threshold":1.5}),
("clip_outliers", {"column":"quantity","method":"iqr","threshold":1.5}),
("merge_tables", {"right_table":"customers","left_on":"customer_id","right_on":"customer_id","how":"left","columns":["segment"]}),
]),
]:
r = env.reset(task_name=task, seed=42)
init = r.observation.current_score
for at, params in actions:
env.step(DataCleaningAction(action_type=at, parameters=params))
final = env.state().current_score
results.append((task, init, final))
print(f"SCORE|{task}|{init:.4f}|{final:.4f}|{final-init:+.4f}|{'PASS' if final > init else 'FAIL'}")