code: def _split_data(self):
      if self._data:
          return
  
      logger.debug("No shuffle test train split")
  
      self._data = self.get_data()
  
      if self.sort_by:
          self._data = self._data.sort_values(
              by=self.sort_by, ascending=True
          )
      test_rows = int(len(self._data) * self.test_size)
      valid_rows = test_rows
      train_rows = int(len(self._data) - test_rows - valid_rows)
      self._training_data = self._data.iloc[:train_rows]
      self._validation_data = self._data.iloc[
          train_rows : train_rows + valid_rows
      ]
      self._test_data = self._data.iloc[-test_rows:]
  
file_path: lore/lore/pipelines/time_series.py
imports: from __future__ import absolute_import
  from abc import ABCMeta
  import logging
  import lore
  from lore.util import timed
  import lore.pipelines.holdout
label_desc: Use image node_id 2 for calling the Base obj's underlying member method code with example usage: obj._split_data() without return types