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