class_docstr: Scenario for the entity data imputation task.
  
  This scenario supports the Restaurant and Buy datasets from
  https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9458712. We process the datasets
  as explained in the paper: remove all rows with NaN values and manually select 10% of the rows
  to serve as a test set. A categorical column from this set will be imputed. 20% of the remaining data
  is validation data.
  
  Entity data imputation is a core preprocessing step in structured data ETL pipelines. The task
  is as follows. Given a structured relation A with possible incomplete/NaN call values,
  determine what value should be used to fill in the cell. This task has traditionally relied
  on relational dependencies (e.g., if city = 'San Francisco' then state = 'CA') to infer missing
  values or some ML model trained to learn dependencies between cell values.
  
  An example is
  
      Input: title: adobe creative suite cs3 design premium upsell [ mac ] | price: 1599.0 | manufacturer:
  
  Reference [CORRECT]: adobe
  
  The above example highlights the model will need to reason over input titles and possibly external
  knowledge (e.g. that creative suite is from adobe) to generate the answer.
code: def __init__(self, dataset: str, seed: int = 1234):
      super().__init__()
      self.datasets_paths = {
          "Buy": "https://dbs.uni-leipzig.de/file/Abt-Buy.zip",
          "Restaurant": "https://www.cs.utexas.edu/users/ml/riddle/data/restaurant.tar.gz",
      }
      # Columns to impute
      self.datasets_impute_col = {
          "Buy": "manufacturer",
          "Restaurant": "city",
      }
      assert dataset in self.datasets_paths
      self.dataset = dataset
      self.seed = seed
  
file_path: H2O/h2o_hf/helm/src/helm/benchmark/scenarios/entity_data_imputation_scenario.py
imports: from io import StringIO
  import pandas
  from pathlib import Path
  from typing import List, Tuple
  from helm.common.hierarchical_logger import hlog
  from helm.common.general import ensure_file_downloaded
  from .scenario import Scenario, Instance, Reference, TRAIN_SPLIT, VALID_SPLIT, TEST_SPLIT, CORRECT_TAG, Input, Output
label_desc: Use image node_id 1 to create a new EntityDataImputationScenario object from inherited base classes: Scenario with example: obj = EntityDataImputationScenario(dataset, seed)