code: def test_fast_to_df():
      params = ["x1", "x2", "x3"]
      problem = {
          "num_vars": 3,
          "names": params,
          "groups": None,
          "bounds": [
              [-3.14159265359, 3.14159265359],
              [-3.14159265359, 3.14159265359],
              [-3.14159265359, 3.14159265359],
          ],
      }
  
      param_values = fast_sampler.sample(problem, 1000)
      Y = Ishigami.evaluate(param_values)
  
      Si = fast.analyze(problem, Y, print_to_console=False)
      Si_df = Si.to_df()
  
      expected_index = set(params)
      assert isinstance(
          Si_df, pd.DataFrame
      ), "FAST Si: Expected DataFrame, got {}".format(type(Si_df))
      assert (
          set(Si_df.index) == expected_index
      ), "Incorrect index in DataFrame"
  
      col_names = set(["S1", "ST", "S1_conf", "ST_conf"])
      assert (
          set(Si_df.columns) == col_names
      ), "Unexpected column names in DataFrame. Expected {}, got {}".format(
          col_names, Si_df.columns
      )
  
file_path: SALib/tests/test_to_df.py
imports: import numpy
  import pandas
  from SALib.sample import saltelli, morris, finite_diff, fast_sampler, ff, latin
  from SALib.analyze import sobol, morris, dgsm, fast, ff, rbd_fast
  from SALib.test_functions import Ishigami, Sobol_G
label_desc: Use image node_id 4 for calling a global function with example usage: test_fast_to_df() without return types