def get_missing_columns(data, columns, category_column):
    """
    Returns all of the given columns that are not in the given dataframe.

    Parameters
    ----------
    columns : List[str]
        the columns to look for
    category_column : str
        the category column to look for, or None if there is no category column
        being used

    Returns
    -------
    missing : List[str]
        a list of the missing columns
    """
    data_columns = set(data.columns)

    if not category_column is None:
        columns = columns + [category_column]

    missing = []
    for col in columns:
        if not col in data_columns:
            missing.append(col)

    return missing