class_docstr: Stores all actual data and typing information for an entityset
  
  Attributes:
      id
      dataframe_dict
      relationships
      time_type
  
  Properties:
      metadata
class_docstr_tok: ["Stores","all","actual","data","and","typing","information","for","an","entityset","Attributes",":","id","dataframe_dict","relationships","time_type","Properties",":","metadata"]
docstr: Find or set interesting values for categorical columns, to be used to generate "where" clauses
  
  Args:
      max_values (int) : Maximum number of values per column to add.
      verbose (bool) : If True, print summary of interesting values found.
      dataframe_name (str) : The dataframe in the EntitySet for which to add interesting values.
          If not specified interesting values will be added for all dataframes.
      values (dict): A dictionary mapping column names to the interesting values to set
          for the column. If specified, a corresponding dataframe_name must also be provided.
          If not specified, interesting values will be set for all eligible columns. If values
          are specified, max_values and verbose parameters will be ignored.
  
  Notes:
  
      Finding interesting values is not supported with Dask or Spark EntitySets.
      To set interesting values for Dask or Spark EntitySets, values must be
      specified with the ``values`` parameter.
  
  Returns:
      None
docstr_tok: ["Find","or","set","interesting","values","for","categorical","columns",",","to","be","used","to","generate","``","where","''","clauses","Args",":","max_values","(","int",")",":","Maximum","number","of","values","per","column","to","add",".","verbose","(","bool",")",":","If","True",",","print","summary","of","interesting","values","found",".","dataframe_name","(","str",")",":","The","dataframe","in","the","EntitySet","for","which","to","add","interesting","values",".","If","not","specified","interesting","values","will","be","added","for","all","dataframes",".","values","(","dict",")",":","A","dictionary","mapping","column","names","to","the","interesting","values","to","set","for","the","column",".","If","specified",",","a","corresponding","dataframe_name","must","also","be","provided",".","If","not","specified",",","interesting","values","will","be","set","for","all","eligible","columns",".","If","values","are","specified",",","max_values","and","verbose","parameters","will","be","ignored",".","Notes",":","Finding","interesting","values","is","not","supported","with","Dask","or","Spark","EntitySets",".","To","set","interesting","values","for","Dask","or","Spark","EntitySets",",","values","must","be","specified","with","the","``","values","``","parameter",".","Returns",":","None"]
code: def add_interesting_values(
      self,
      max_values=5,
      verbose=False,
      dataframe_name=None,
      values=None,
  ):
      """Find or set interesting values for categorical columns, to be used to generate "where" clauses
  
      Args:
          max_values (int) : Maximum number of values per column to add.
          verbose (bool) : If True, print summary of interesting values found.
          dataframe_name (str) : The dataframe in the EntitySet for which to add interesting values.
              If not specified interesting values will be added for all dataframes.
          values (dict): A dictionary mapping column names to the interesting values to set
              for the column. If specified, a corresponding dataframe_name must also be provided.
              If not specified, interesting values will be set for all eligible columns. If values
              are specified, max_values and verbose parameters will be ignored.
  
      Notes:
  
          Finding interesting values is not supported with Dask or Spark EntitySets.
          To set interesting values for Dask or Spark EntitySets, values must be
          specified with the ``values`` parameter.
  
      Returns:
          None
  
      """
      if dataframe_name is None and values is not None:
          raise ValueError(
              "dataframe_name must be specified if values are provided"
          )
  
      if dataframe_name is not None and values is not None:
          for column, vals in values.items():
              self[dataframe_name].ww.columns[column].metadata[
                  "interesting_values"
              ] = vals
          return
  
      if dataframe_name:
          dataframes = [self[dataframe_name]]
      else:
          dataframes = self.dataframes
  
      def add_value(df, col, val, verbose):
          if verbose:
              msg = "Column {}: Marking {} as an interesting value"
              logger.info(msg.format(col, val))
          interesting_vals = df.ww.columns[col].metadata.get(
              "interesting_values", []
          )
          interesting_vals.append(val)
          df.ww.columns[col].metadata[
              "interesting_values"
          ] = interesting_vals
  
      for df in dataframes:
          value_counts = df.ww.value_counts(
              top_n=max(25, max_values), dropna=True
          )
          total_count = len(df)
  
          for col, counts in value_counts.items():
              if {"index", "foreign_key"}.intersection(
                  df.ww.semantic_tags[col]
              ):
                  continue
  
              for i in range(min(max_values, len(counts))):
                  # Categorical columns will include counts of 0 for all values
                  # in categories. Stop when we encounter a 0 count.
                  if counts[i]["count"] == 0:
                      break
                  if len(counts) < 25:
                      value = counts[i]["value"]
                      add_value(df, col, value, verbose)
                  else:
                      fraction = counts[i]["count"] / total_count
                      if fraction > 0.05 and fraction < 0.95:
                          value = counts[i]["value"]
                          add_value(df, col, value, verbose)
                      else:
                          break
  
      self.reset_data_description()
  
imports: import copy
  import logging
  import warnings
  from collections import defaultdict
  import numpy
  import pandas
  from woodwork import init_series
  from woodwork.logical_types import Datetime, LatLong
  from featuretools.entityset import deserialize, serialize
  from featuretools.entityset.relationship import Relationship, RelationshipPath
  from featuretools.feature_base.feature_base import _ES_REF
  from featuretools.utils.gen_utils import Library, import_or_none, is_instance
  from featuretools.utils.plot_utils import check_graphviz, get_graphviz_format, save_graph
  from featuretools.utils.wrangle import _check_timedelta
label_desc: Use image node_id 36 for calling the EntitySet obj's underlying member method code with example usage: obj.add_interesting_values(max_values, verbose, dataframe_name, values) without return types