code: def profile_distribution(data):
      
      if len(data) == 0:
          return (data, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan)
      else:
          ddof = 1 if len(data) > 1 else 0
          dist_mean = np.mean(data)
          dist_stdev = np.std(data, ddof=ddof)
          dist_min, dist_quartile1, dist_quartile2, dist_quartile3, dist_max = np.percentile(data, [0,25,50,75,100])
          dist_skew = skew(data)
          dist_kurtosis = kurtosis(data)
      return (data, dist_mean, dist_stdev, dist_skew, dist_kurtosis, dist_min, dist_quartile1, dist_quartile2, dist_quartile3, dist_max)
docs: Compute the mean, standard deviation, min, quartile1, quartile2, quartile3, and max of a vector
  
      Parameters
      ----------
      data: array of real values
  
      Returns
      -------
      features = dictionary containing the min, max, mean, and standard deviation