code: def _recommend_skew_numeric_primitives(
      entityset: EntitySet,
      target_dataframe_name: str,
      valid_primitives: List[str],
  ) -> set:
      """Get a set of recommended skew numeric primitives given an entity set.
  
      Description:
          Given woodwork initialized dataframe of origin features with only `numeric` semantic tags and an applicable list of `valid_skew_primitives`,
          get a set of primitives which could be applied to address right skewness.
  
      Args:
          entityset (EntitySet): EntitySet that only contains one dataframe.
          target_dataframe_name (str): Name of target dataframe to access in `entityset`.
          valid_primitives (List[str]): List of primitives to compare.
  
      Note:
          We currently only have primitives to address right skewness.
      """
      recommended_skew_primitives: set[str] = set()
      skew_numeric_primitives = set(
          ["square_root", "natural_logarithm"]
      )
      valid_skew_primitives = skew_numeric_primitives.intersection(
          valid_primitives
      )
      if valid_skew_primitives:
          numerics_only_df = entityset[target_dataframe_name].ww.select(
              "numeric"
          )
          recommended_skew_primitives: set[str] = set()
          for col in numerics_only_df:
              # Shouldn't recommend log, sqrt if nans, zeros and negative numbers are present
              contains_nan = numerics_only_df[col].isnull().any()
              all_above_zero = (numerics_only_df[col] > 0).all()
              if all_above_zero and not contains_nan:
                  skew = numerics_only_df[col].skew()
                  # We currently don't have anything in featuretools to automatically handle left skewed data as well as skewed data with negative values
                  if (
                      skew > 0.5
                      and skew < 1
                      and "square_root" in valid_skew_primitives
                  ):
                      recommended_skew_primitives.add("square_root")
                      # TODO: Add Box Cox here when available
                  if (
                      skew > 1
                      and "natural_logarithm" in valid_skew_primitives
                  ):
                      recommended_skew_primitives.add(
                          "natural_logarithm"
                      )
                      # TODO: Add log base 10 transform primitive when available
      return recommended_skew_primitives
  
file_path: featuretools/featuretools/utils/recommend_primitives.py
imports: import logging
  from typing import List
  from featuretools.computational_backends import calculate_feature_matrix
  from featuretools.entityset import EntitySet
  from featuretools.primitives.utils import get_transform_primitives
  from featuretools.synthesis import dfs, get_valid_primitives
label_desc: Use image node_id 3 for calling a global function with example usage: _recommend_skew_numeric_primitives(entityset, target_dataframe_name, valid_primitives) and returns: recommended_skew_primitives