def make_seasonal_dummies()

in orbit/utils/features.py [0:0]


def make_seasonal_dummies(df, date_col, freq, sparse=True, drop_first=True):
    """Based on the frequency input (in pandas.DataFrame style), provide dummies indicator for regression type of
    purpose.

    Parameters
    ----------
    df : pd.DataFrame
        Input dataframe to supply datetime array for generating series of indicators
    date_col : str
        Label of the date column supply for generating series
    freq : str ['weekday', 'month', 'week']
        Options to pick the right frequency for generating dummies
    sparse : bool
        argument passed into `pd.get_dummies`
    drop_first : bool
        argument passed into `pd.get_dummies`
    Returns
    -------
    out : pd.DataFrame
        data with computed fourier series attached
    fs_cols : list
        list of labels derived from fourier series
    Notes
    -----
        This is calling :func:`pd.get_dummies`
    """
    if freq == "weekday":
        dummies = pd.get_dummies(
            df[date_col].dt.weekday, prefix="wd", sparse=sparse, drop_first=drop_first
        )
    elif freq == "month":
        dummies = pd.get_dummies(
            df[date_col].dt.month, prefix="m", sparse=sparse, drop_first=drop_first
        )
    elif freq == "week":
        dummies = pd.get_dummies(
            df[date_col].dt.week, prefix="w", sparse=sparse, drop_first=drop_first
        )
    else:
        raise IllegalArgument("Invalid argument of freq.")

    cols = dummies.columns.tolist()
    out = pd.concat([df, dummies], axis=1)
    return out, cols