code: def read_tabular(filename, dtype_conversion=None):
      
      if dtype_conversion is None:
          dtype_conversion = {}
      name, ext = filename.split(".", 1)
      ext = ext.lower()
      # Completely empty columns are interpreted as float by default.
      dtype_conversion["comment"] = str
      if "csv" in ext:
          df = pd.read_csv(filename, dtype=dtype_conversion, encoding="utf-8")
      elif "tsv" in ext:
          df = pd.read_table(filename, dtype=dtype_conversion, encoding="utf-8")
      elif "xls" in ext or "xlsx" in ext:
          df = pd.read_excel(filename, dtype=dtype_conversion, encoding="utf-8")
      # TODO: Add a function to parse ODS data into a pandas data frame.
      else:
          raise ValueError("Unknown file format '{}'.".format(ext))
      return df
docs: Read a tabular data file which can be CSV, TSV, XLS or XLSX.
  
      Parameters
      ----------
      filename : str or pathlib.Path
          The full file path. May be a compressed file.
      dtype_conversion : dict
          Column names as keys and corresponding type for loading the data.
          Please take a look at the `pandas documentation
          <https://pandas.pydata.org/pandas-docs/stable/io.html#specifying-column-data-types>`__
          for detailed explanations.
  
      Returns
      -------
      pandas.DataFrame
          The data table.