docstr: Pretty tabulated string of all the cached data, and column names
code: def _tabulate(self, tablefmt="simple", rollups=False, rows=10):
      """Pretty tabulated string of all the cached data, and column names"""
      if not self.is_valid():
          self.fill(rows=rows)
      # Pretty print cached data
      d = OrderedDict()
      # If also printing the rollup stats, build a full row-header
      if rollups:
          col = next(iter(self._data.values()))  # Get a sample column
          lrows = len(col["data"])  # Cached rows being displayed
          d[""] = [
              "type",
              "mins",
              "mean",
              "maxs",
              "sigma",
              "zeros",
              "missing",
          ] + list(map(str, range(lrows)))
      # For all columns...
      for k, v in self._data.items():
          x = v["data"]  # Data to display
          t = v["type"]  # Column type
          if t == "enum":
              domain = v["domain"]  # Map to cat strings as needed
              x = [
                  "" if math.isnan(idx) else domain[int(idx)]
                  for idx in x
              ]
          elif t == "time":
              x = [
                  ""
                  if math.isnan(z)
                  else time.strftime(
                      "%Y-%m-%d %H:%M:%S", time.gmtime(z / 1000)
                  )
                  for z in x
              ]
          if rollups:  # Rollups, if requested
              mins = (
                  v["mins"][0]
                  if v["mins"] and v["type"] != "enum"
                  else None
              )
              maxs = (
                  v["maxs"][0]
                  if v["maxs"] and v["type"] != "enum"
                  else None
              )
              # Cross check type with mean and sigma. Set to None if of type enum.
              if v["type"] == "enum":
                  v["mean"] = v["sigma"] = v["zero_count"] = None
              x = [
                  v["type"],
                  mins,
                  v["mean"],
                  maxs,
                  v["sigma"],
                  v["zero_count"],
                  v["missing_count"],
              ] + x
          d[k] = x  # Insert into ordered-dict
      return tabulate.tabulate(d, headers="keys", tablefmt=tablefmt)
  
imports: from h2o.utils.compatibility import *
  from collections import OrderedDict
  import copy
  import gc
  import inspect
  import math
  import time
  import numbers
  import tabulate
  import h2o
  from h2o.backend.connection import H2OConnectionError
  from h2o.utils.shared_utils import _is_fr, _py_tmp_key
  from h2o.model.model_base import ModelBase
  from h2o.expr_optimizer import optimize
label_desc: Use image node_id 22 for calling the H2OCache obj's underlying member method code with example usage: obj._tabulate(tablefmt, rollups, rows) and returns: tabulate