1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Ускорить расчет скользящего среднего в питоне

Тема в разделе "python", создана пользователем searchengines, 5 июн 2019.


Поделиться в соц сетях

  1. searchengines

    searchengines Administrator

    Регистрация:
    5 янв 2019
    Сообщения:
    1.666
    Симпатии:
    2
    Баллы:
    38
    Код ниже считает скользящее среднее для каждой строки на отфильтрованном датафрейме. И все замечательно, но очень медленно. Возможно есть способ ускорить этот расчет? У меня более 200000 строк. Полный код:

    startdate = pd.to_datetime('2019-06-02')
    df['RES1_1Y'] = df.apply(
    lambda x: (df.loc[
    (
    (df.DATE_G < x.DATE_G)
    & (df.DATE_G >= (x.DATE_G + pd.DateOffset(days=-365)))
    & (df.ID1_G == x.ID1_G)
    & (df.ID_C_T == x.ID_C_T)
    ),
    "RES",
    ].mean()) if x.DATE_G > startdate else x.RES1_1Y,
    axis=1,
    )


    Мне предлагали использовать Rolling_mean, на как там задать условия для фильтрации я не знаю. Пример данных:

    DATE_G ID1_G ID_C_T RES RES1_1Y
    03.06.2019 35802 1 1
    04.06.2019 13592 2 0
    05.06.2019 28267 2 0
    06.06.2019 36327 1 0
    07.06.2019 28267 1 0
    08.06.2019 78317 1 0
    09.06.2019 13101 2 0
    10.06.2019 28267 2 1 0
    11.06.2019 46752 2 0
    12.06.2019 36320 1 1
    13.06.2019 28108 2 0
    14.06.2019 72815 1 1
    15.06.2019 31819 1 0
    16.06.2019 28267 2 0 0.5
    17.06.2019 14953 1 0
    18.06.2019 23381 1 0
    19.06.2019 29260 1 1
    20.06.2019 35498 1 0
    21.06.2019 28267 2 0 0.333333333
    22.06.2019 5058 2 0
    23.06.2019 4003 5 0
     

Поделиться этой страницей