code: def test_df_utils_func():
      log.info("testing: df_utils Test")
      df = pd.read_csv(PEYTON_FILE, nrows=95)
      df, _, _ = df_utils.check_dataframe(df, check_y=False)
  
      # test find_time_threshold
      df, _, _, _ = df_utils.prep_or_copy_df(df)
      time_threshold = df_utils.find_time_threshold(
          df,
          n_lags=2,
          n_forecasts=2,
          valid_p=0.2,
          inputs_overbleed=True,
      )
      df_train, df_val = df_utils.split_considering_timestamp(
          df,
          n_lags=2,
          n_forecasts=2,
          inputs_overbleed=True,
          threshold_time_stamp=time_threshold,
      )
  
      # test find_time_threshold
      df_utils.find_valid_time_interval_for_cv(df)
  
      # test unfold fold of dicts
      df1 = df.copy(deep=True)
      df1["ID"] = "df1"
      df2 = df.copy(deep=True)
      df2["ID"] = "df2"
      df_global = pd.concat((df1, df2))
      folds_dict = {}
      start_date, end_date = df_utils.find_valid_time_interval_for_cv(
          df_global
      )
      for df_name, df_i in df_global.groupby("ID"):
          # Use data only from the time period of intersection among time series
          mask = (df_i["ds"] >= start_date) & (df_i["ds"] <= end_date)
          df_i = df_i[mask].copy(deep=True)
          folds_dict[df_name] = df_utils._crossvalidation_split_df(
              df_i,
              n_lags=5,
              n_forecasts=2,
              k=5,
              fold_pct=0.1,
              fold_overlap_pct=0,
          )
      df_utils.unfold_dict_of_folds(folds_dict, 5)
      with pytest.raises(AssertionError):
          df_utils.unfold_dict_of_folds(folds_dict, 3)
  
      # init data params with a list
      df_utils.init_data_params(df_global, normalize="soft")
      df_utils.init_data_params(df_global, normalize="soft1")
      df_utils.init_data_params(df_global, normalize="standardize")
  
imports: import logging
  import math
  import os
  import pathlib
  import matplotlib.pyplot
  import numpy
  import pandas
  import pytest
  import torch
  from neuralprophet import NeuralProphet, df_utils, set_random_seed
  from neuralprophet.data.process import _handle_missing_data, _validate_column_name
label_desc: Use image node_id 3 for calling a global function with example usage: test_df_utils_func() without return types