Скользящее среднее за последние 3 года для номера той же недели Python Pandas - PullRequest
0 голосов
/ 15 апреля 2019

Я нахожу среднее значение эквивалентных недель, когда есть данные, например, 201932, используя среднее значение данных за 201632, 201732 и 201832. Пример: 2019 - это год, а 32 - номер недели

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019
import pandas as pd
import datetime as datetime

df['Calender Week'] = pd.to_datetime(df['Calender Week'] + '-0', format = '%Y%W-%w')
df.groupby([df['C'], df['Calender Week'].dt.week])['Revenue'].mean()

Это делает то, что вы хотите.Сначала вы должны изменить столбец «Неделя календаря» на datetime.В конвертации мне пришлось добавить '-0', чтобы конвертировать правильно.Все, что он делает, - это решает, начинается ли неделя в воскресенье или понедельник, что в нашем случае не имеет значения.

Во второй строке мы используем groupby.Мы группируем страну и фактическую календарную неделю (от 1 до 52), представленную .dt.week.Мы смотрим на столбец Доход и, наконец, берем среднее значение.

Результат из моих случайно созданных тестовых данных выглядит следующим образом:

  C      Calender Week
France        50      16.50
              51      25.00
              52      30.00
USA           50      14.00
              51      13.25
              52      30.50
0 голосов
/ 15 апреля 2019

Обобщенный образец, не полностью протестированный, вы можете обновить его в соответствии с вашими потребностями. Прошу прощения за синтаксические ошибки / ошибки компиляции

# 1 load your data here
myYearlyWeekAvgList = [[Calendar, WkNumber, France, 0, 201538], [....]]

# 2 initialize variables here
totalSum = 0
movingAves = 0  # track total for that yr
myYear = currentYear #  input, for e.g. 2018

# 3 start totals & averages here
for i, x in enumerate(myYearlyWeekAvgList, 1):
    T = x[i]            # get each row
    if x == currentYear # for e.g. if yr is 2018, then sum value
        totalSum.append(T[3]) # your revenue in 3rd col I guess

        moving_ave = totalSum/i  # your average for that col
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...