class_docstr: Generate profiles of histograms using default statistical functions.
  
  Profiles are:
  
  - 1 dim histograms, all: 'count', 'filled', 'distinct', 'nan', 'most_probable_value', 'overflow', 'underflow'.
  - 1 dim histograms, numeric: mean, std, min, max, p01, p05, p16, p50, p84, p95, p99.
  - 1 dim histograms, boolean: fraction of true entries.
  - 2 dim histograms: count, phi_k correlation constant, p-value and Z-score of contingency test.
  - n dim histograms: count (n >= 3)
  
  :param str read_key: key of the input test data to read from the datastore
  :param str store_key: key of the output data to store in the datastore
  :param list features: features of data-frames to pick up from input data (optional)
  :param list ignore_features: features to ignore (optional)
  :param list var_timestamp: list of timestamp variables (optional)
  :param str hist_col: key for histogram in split dictionary
  :param str index_col: key for index in split dictionary
  :param dict stats_functions: function_name, function(bin_labels, bin_counts) dictionary
class_docstr_tok: ["Generate","profiles","of","histograms","using","default","statistical","functions",".","Profiles","are",":","-","1","dim","histograms",",","all",":","'count","'",",","'filled","'",",","'distinct","'",",","'nan","'",",","'most_probable_value","'",",","'overflow","'",",","'underflow","'",".","-","1","dim","histograms",",","numeric",":","mean",",","std",",","min",",","max",",","p01",",","p05",",","p16",",","p50",",","p84",",","p95",",","p99",".","-","1","dim","histograms",",","boolean",":","fraction","of","true","entries",".","-","2","dim","histograms",":","count",",","phi_k","correlation","constant",",","p-value","and","Z-score","of","contingency","test",".","-","n","dim","histograms",":","count","(","n",">","=","3",")",":","param","str","read_key",":","key","of","the","input","test","data","to","read","from","the","datastore",":","param","str","store_key",":","key","of","the","output","data","to","store","in","the","datastore",":","param","list","features",":","features","of","data-frames","to","pick","up","from","input","data","(","optional",")",":","param","list","ignore_features",":","features","to","ignore","(","optional",")",":","param","list","var_timestamp",":","list","of","timestamp","variables","(","optional",")",":","param","str","hist_col",":","key","for","histogram","in","split","dictionary",":","param","str","index_col",":","key","for","index","in","split","dictionary",":","param","dict","stats_functions",":","function_name",",","function","(","bin_labels",",","bin_counts",")","dictionary"]
code: def transform(self, data: dict) -> dict:
      self.logger.info(
          f'Profiling histograms "{self.read_key}" as "{self.store_key}"'
      )
      features = self.get_features(list(data.keys()))
  
      profiled = {}
      for feature in features[:]:
          df = self.get_datastore_object(
              data, feature, dtype=pd.DataFrame
          )
          hist_split_list = df.reset_index().to_dict("records")
  
          self.logger.debug(f'Profiling histogram "{feature}".')
          profile_list = self._profile_hist(
              split=hist_split_list, hist_name=feature
          )
          if len(profile_list) > 0:
              profiled[feature] = pd.DataFrame(profile_list).set_index(
                  [self.index_col]
              )
  
      return profiled
  
file_path: popmon/popmon/analysis/profiling/hist_profiler.py
imports: import numpy
  import pandas
  from popmon.base import Module
  from popmon.hist.hist_utils import get_bin_centers, is_numeric, is_timestamp
label_desc: Use image node_id 5 for calling the HistProfiler obj's underlying member method code with example usage: obj.transform(data) and returns: profiled