code: def obtain_df_splits(data_csv):
      """Split input data csv file in to train, validation and test dataframes.
  
      :param data_csv: Input data CSV file.
      :return test_df, train_df, val_df: Train, validation and test dataframe
              splits
      """
      data_df = read_csv(data_csv)
      # Obtain data split array mapping data rows to split type
      # 0-train, 1-validation, 2-test
      splitter = get_splitter("random")
      train_df, val_df, test_df = splitter.split(
          data_df, LocalTestBackend()
      )
      return test_df, train_df, val_df
  
imports: import glob
  import logging
  import os
  from tempfile import TemporaryDirectory
  import numpy
  import pytest
  from ludwig import visualize
  from ludwig.api import LudwigModel, TrainingStats
  from ludwig.constants import BATCH_SIZE, ENCODER, NAME, PREDICTIONS, PROBABILITIES, PROBABILITY, TRAINER, TYPE
  from ludwig.data.split import get_splitter
  from ludwig.globals import HYPEROPT_STATISTICS_FILE_NAME
  from ludwig.utils.data_utils import read_csv
  from tests.integration_tests.utils import bag_feature, binary_feature, category_feature, generate_data, LocalTestBackend, number_feature, sequence_feature, set_feature, text_feature
label_desc: Use image node_id 3 for calling a global function with example usage: obtain_df_splits(data_csv) and returns: test_df,  train_df,  val_df