Как получить скользящее среднее для еженедельных данных в пандах? - PullRequest
0 голосов
/ 09 октября 2018

Ниже приведен пример образца данных: -

daterange   total_val
02/01/00    20.0005679
09/01/00    20.0005679
16/01/00    20.0005679
23/01/00    20.0005679
30/01/00    20.0005679
06/02/00    42.50061196
13/02/00    42.50061196
20/02/00    42.50061196
27/02/00    42.50061196
05/03/00    85.00073436
12/03/00    85.00073436
19/03/00    85.00073436
26/03/00    85.00073436
02/04/00    95.00083227
09/04/00    95.00083227
16/04/00    95.00083227

Мне нужно взять скользящее среднее за 3 месяца и 6 месяцев для того же.

В настоящее время я использовал приведенный ниже кодперевод данных в неделю из месяца в месяц, но это делает ма как непротиворечивую за месяц: -

df['total_val_ma3'] = df['total_val'].shift(1).rolling(3).mean()
df['total_val_ma6'] = df['total_val'].shift(1).rolling(6).mean()
df = func_resample_from_monthly(df, 'daterange', 'Weekly')

def func_resample_from_monthly(df,col, category):
    df.set_index(col, inplace=True)
    df.index = pd.to_datetime(df.index, dayfirst=True)
    #add new next month for correct resample
    idx = df.index[-1] + pd.offsets.MonthBegin(1)
    df = df.append(df.iloc[[-1]].rename({df.index[-1]: idx}))
    if category == "Daily":
        df = df.resample('D').ffill().iloc[:-1]
    elif category == "Weekly":
        df = df.resample('W').ffill().iloc[:-1]

    df.reset_index(inplace=True)
    return df

Любые предложения, если есть какой-либо способ перейти на 3 месяца, среднее значение за 6 месяцев с еженедельными данными в пандах илиПодход, использованный мной, тоже подходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...