def _get_field_uniq_x_coef(self, df: pd.DataFrame, fields: list, coef: float) -> list:
    "\n        This function outputs threshold to number of occurrences different variants of list of columns (fields)\n        In short if coef for ex. is 0.9, then function outputs number of occurrences for all but least 10%\n        of the least used\n        If coef is more 1.0, then 'coef' itself is used as threshold\n        "
    if (coef > 1):
        return math.ceil(coef)
    coef = (0.0 if (coef < 0) else coef)
    occs = df.groupby(fields).size().reset_index(name='Times').sort_values(['Times'], ascending=False)
    num = math.ceil((coef * len(occs)))
    if (num <= 0):
        return (occs.iloc[0]['Times'] + 1)
    else:
        return occs.iloc[(num - 1)]['Times']
This function outputs threshold to number of occurrences different variants of list of columns (fields)
In short if coef for ex. is 0.9, then function outputs number of occurrences for all but least 10%
of the least used
If coef is more 1.0, then 'coef' itself is used as threshold
def _get_field_uniq_x_coef(self, df: pd.DataFrame, fields: list, coef: float) -> list:
    "\n        This function outputs threshold to number of occurrences different variants of list of columns (fields)\n        In short if coef for ex. is 0.9, then function outputs number of occurrences for all but least 10%\n        of the least used\n        If coef is more 1.0, then 'coef' itself is used as threshold\n        "
    if (coef > 1):
        return math.ceil(coef)
    coef = (0.0 if (coef < 0) else coef)
    occs = df.groupby(fields).size().reset_index(name='Times').sort_values(['Times'], ascending=False)
    num = math.ceil((coef * len(occs)))
    if (num <= 0):
        return (occs.iloc[0]['Times'] + 1)
    else:
        return occs.iloc[(num - 1)]['Times']