Skip to content

Instantly share code, notes, and snippets.

@victorouttes
Created June 7, 2022 20:39
Show Gist options
  • Select an option

  • Save victorouttes/667e810a3df6a1bf0e2eb97a33c27052 to your computer and use it in GitHub Desktop.

Select an option

Save victorouttes/667e810a3df6a1bf0e2eb97a33c27052 to your computer and use it in GitHub Desktop.

Revisions

  1. victorouttes created this gist Jun 7, 2022.
    34 changes: 34 additions & 0 deletions timeseries.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    ```
    def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
    """
    Frame a time series as a supervised learning dataset.
    Arguments:
    data: Sequence of observations as a list or NumPy array.
    n_in: Number of lag observations as input (X).
    n_out: Number of observations as output (y).
    dropnan: Boolean whether or not to drop rows with NaN values.
    Returns:
    Pandas DataFrame of series framed for supervised learning.
    """
    n_vars = 1 if type(data) is list else data.shape[1]
    df = pd.DataFrame(data)
    cols, names = list(), list()
    # input sequence (t-n, ... t-1)
    for i in range(n_in, 0, -1):
    cols.append(df.shift(i))
    names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
    # forecast sequence (t, t+1, ... t+n)
    for i in range(0, n_out):
    cols.append(df.shift(-i))
    if i == 0:
    names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
    else:
    names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]
    # put it all together
    agg = pd.concat(cols, axis=1)
    agg.columns = names
    # drop rows with NaN values
    if dropnan:
    agg.dropna(inplace=True)
    return agg
    ```