code: def single_variable_profile(
      predict, model, data, variable, split_points
  ):
      """
      Inner function for calculating variable profile. This function is iterated over all variables.
  
      :param predict:
      :param data: new observations
      :param variable: considered variable
      :param split_points: dataset is split over these points
      :return: ceteris paribus profile for one variable
      """
      # remember ids of selected points
      ids = np.repeat(data.index.values, split_points.shape[0])
      new_data = data.loc[ids, :]
      original = new_data.loc[:, variable].copy()
      new_data.loc[:, variable] = np.tile(split_points, data.shape[0])
  
      yhat = predict(model, new_data)
  
      new_data.loc[:, "_original_"] = original
      new_data.loc[:, "_yhat_"] = yhat
      new_data.loc[:, "_vname_"] = variable
      new_data.loc[:, "_ids_"] = ids
  
      return new_data
  
file_path: DALEX/python/dalex/dalex/predict_explanations/_ceteris_paribus/utils.py
imports: import multiprocessing
  from distutils.version import LooseVersion
  import numpy
  import pandas
  from tqdm import tqdm
label_desc: Use image node_id 3 for calling a global function with example usage: single_variable_profile(predict, model, data, variable, split_points) and returns: new_data