docstr: Create train, validation, and test splits for the dataset.
code: def create_splits(self) -> None:
      """Create train, validation, and test splits for the dataset."""
      if self.data is None:
          raise ValueError(
              'Data is not loaded yet. run "BankAccountFraud.load_data"'
          )
      if self.split_type == "random":
          remainder_df = self.data.copy()
          original_size = remainder_df.shape[0]
          for key, value in self.splits.items():
              adjusted_frac = (
                  original_size / remainder_df.shape[0]
              ) * value
              sample = remainder_df.sample(
                  frac=adjusted_frac, random_state=self.seed
              )
              setattr(self, key, sample)
              sample_indexes = sample.index
              remainder_df = remainder_df.drop(sample_indexes)
  
      elif self.split_type == "month":
          for key, value in self.splits.items():
              setattr(
                  self, key, self.data[self.data["month"].isin(value)]
              )
  
file_path: aequitas/src/aequitas/fairflow/datasets/baf.py
imports: from pathlib import Path
  from typing import Any, Optional, Union
  import pandas
  from validators import url
  from ..utils import create_logger
  from .dataset import Dataset
label_desc: Use image node_id 4 for calling the BankAccountFraud obj's underlying member method code with example usage: obj.create_splits() without return types