Source code for featuretools.variable_types.utils

import pandas as pd

from featuretools.utils.gen_utils import find_descendents
from featuretools.utils.plot_utils import (
    check_graphviz,
    get_graphviz_format,
    save_graph
)
from featuretools.variable_types.variable import Variable


[docs]def find_variable_types(): """ Retrieves all Variable types as a dictionary where key is type_string of Variable, and value is a Variable object. Args: None Returns: variable_types (dict): """ return {vtype.type_string: vtype for vtype in find_descendents(Variable) if vtype != Variable}
[docs]def list_variable_types(): """ Retrieves all Variable types as a dataframe, with the column headers of name, type_string, and description. Args: None Returns: variable_types (pd.DataFrame): a DataFrame with column headers of name, type_strings, and description. """ v_types = list(find_variable_types().values()) v_type_strings = list(find_variable_types().keys()) v_names = [x.__name__ for x in v_types] descriptions = [v.__doc__ for v in v_types] return pd.DataFrame({'name': v_names, 'type_string': v_type_strings, 'description': descriptions})
[docs]def graph_variable_types(to_file=None): """ Create a UML diagram-ish graph of all the Variables. Args: to_file (str, optional) : Path to where the plot should be saved. If set to None (as by default), the plot will not be saved. Returns: graphviz.Digraph : Graph object that can directly be displayed in Jupyter notebooks. """ graphviz = check_graphviz() format_ = get_graphviz_format(graphviz=graphviz, to_file=to_file) # Initialize a new directed graph graph = graphviz.Digraph('variables', format=format_) graph.attr(rankdir="LR") graph.node(Variable.__name__, shape='Mdiamond') all_variables_types = list(find_variable_types().values()) all_variables_types.sort(key=lambda x: x.__name__) for node in all_variables_types: for parent in node.__bases__: graph.edge(parent.__name__, node.__name__) if to_file: save_graph(graph, to_file, format_) return graph