def calculate_outlier_bounds(df, column_name):
    """
    Calculates outlier bounds based on interquartile range of distribution of values in column 'column_name'
    from data set in data frame 'df'.
    :param df: data frame containing data to be analyzed
    :param column_name: column name to analyze
    :return: dictionary with keys min, max, q1 and q3 keys and corresponding values for outlier minimum, maximum
    and 25th and 75th percentile values (q1,q3)
    """
    bounds = dict(zip(["q1", "q3"], df.approxQuantile(column_name, [0.25, 0.75], 0)))
    iqr = bounds['q3'] - bounds['q1']
    bounds['min'] = bounds['q1'] - (iqr * 1.5)
    bounds['max'] = bounds['q3'] + (iqr * 1.5)
    return bounds