'Compute distribution of values for the given columns.
:param columns: columns to calculate distributions for
:return: a list of distributions. Type of distribution depends on the
type of the column:
- for discrete, distribution is a 1d np.array containing the
occurrence counts for each of the values.
- for continuous, distribution is a 2d np.array with
distinct (ordered) values of the variable in the first row
and their counts in second.'

def _compute_distributions(self, columns=None):

    raise NotImplementedError
