code: def get_group_value_report(group_value_df):
      """
  
      :param group_value_df:
      :return:
      """
      group_value_report = {}
      the_false_df = group_value_df.loc[
          (group_value_df["Unsupervised Fairness"] == False)
          | (group_value_df["Supervised Fairness"] == False)
      ]
      for index, row in the_false_df.iterrows():
          report = ""
          metrics = []
          group = row["group_variable"] + " = " + row["group_value"]
          text1 = group + " does not have "
          report += text1
          text2 = ""
          if row["Unsupervised Fairness"] is False:
              text2 += "Unsupervised Fairness "
              text3 = ""
              if row["Statistical Parity"] is False:
                  text3 += "(no Statistical Parity"
                  ref_val = 0.0
                  ref_group_value = group_value_df.loc[
                      (
                          group_value_df["group_variable"]
                          == row["group_variable"]
                      )
                      & (
                          group_value_df["group_value"]
                          == row["ppr_ref_group_value"]
                      )
                  ]["ppr"].values[0]
                  ppr_text = (
                      "{:.0f}% of the group is selected, compared to {:.0f} % of the "
                      "reference group ".format(
                          row["ppr"] * 100, ref_group_value * 100
                      )
                      + row["group_variable"]
                      + " = "
                      + row["ppr_ref_group_value"]
                  )
                  metrics.append(ppr_text)
              if row["Impact Parity"] is False:
                  if text3 == "":
                      text3 += "(no Impact Parity)"
                  else:
                      text3 += ", no Impact Parity)"
                  pprev_text = ""
              else:
                  text3 += ")"
              text2 += text3
          if row["Supervised Fairness"] is False:
              if text2 != "":
                  text2 += " neither "
              text2 += "Supervised Fairness "
              text3 = ""
              if row["TypeI Parity"] is False:
                  text3 += "(no Type I Parity"
              if row["TypeII Parity"] is False:
                  if text3 == "":
                      text3 += "(no Type II Parity)"
                  else:
                      text3 += ", no Type II Parity)"
              else:
                  text3 += ") "
              text2 += text3
          report += text2
          group_value_report[group] = [report, metrics]
  
      return group_value_report
  
imports: import datetime
  import logging
  import pandas
  from markdown2 import markdown
  from tabulate import tabulate
label_desc: Use image node_id 1 for calling a global function with example usage: get_group_value_report(group_value_df) and returns: group_value_report