docs: def weighted_mean(data, weights=None):
      """Calculate the weighted mean of a list."""
      if weights is None:
          return mean(data)
      total_weight = float(sum(weights))
      weights = [weight / total_weight for weight in weights]
      w_mean = 0
      for i, weight in enumerate(weights):
          w_mean += weight * data[i]
      return w_mean