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.
docstr: Turn structured row into string.
docstr_tok: ["Turn","structured","row","into","string","."]
code: def serialize_row(
      self, row: pd.core.series.Series, columns: List[str]
  ) -> str:
      """Turn structured row into string."""
      res = []
      for c in columns:
          res.append(f"{c}: {row[c]}".strip())
      return ". ".join(res)
  
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 4 for calling the EntityDataImputationScenario obj's underlying member method code with example usage: obj.serialize_row(row, columns) and returns: str