def prepare_summary_chart( disparity_df, metrics_list, attributes_list, fairness_threshold, chart_height, chart_width, chart_default_sizes, ): ## If a specific list of attributes was not passed, use all from df if fairness_threshold is None: raise ValueError("Fairness threshold cannot be None for the Summary chart.") metrics = __sanitize_metrics(metrics_list) if attributes_list is None: attributes = list(disparity_df["attribute_name"].unique()) else: attributes = to_list(attributes_list) __validate_data_inputs(disparity_df, metrics, attributes, fairness_threshold) # CHART SIZES (chart_height, chart_width) = __calculate_default_sizes( chart_height, chart_width, chart_default_sizes, metrics, attributes ) return (metrics, attributes, chart_height, chart_width)
def attributes(df, attributes): """Validates if attributes exists in the dataframe. :param df: a dataframe from Aequitas :type df: pandas.core.frame.DataFrame :param attributes: an attribute or a list of attributes :type attributes: str or list """ attributes = to_list(attributes) for attribute in attributes: attribute_df = df[df["attribute_name"] == attribute] if len(attribute_df) == 0: raise ValueError( f"Attribute name {attribute} does not exist in the dataframe.")
def metrics(metrics): """Validates if if there are no duplicated metrics, and if all metrics are valid fairness metrics. :param metrics: a metric or a list of metrics :type metrics: str or list """ metrics = to_list(metrics) if len(metrics) != len(set(metrics)): raise ValueError( f"There is at least one duplicated metric in the metrics list.") for metric in metrics: if metric not in METRICS_LIST: raise ValueError(f"{metric} is not a valid metric.")
def __sanitize_metrics(metrics_list): try: return [metric.lower() for metric in to_list(metrics_list)] except AttributeError: print('"metrics_list" must be a list of strings.')