Хобрук: Ваш путь к мастерству в программировании

Pandas - фактическое среднее значение возврата за последние 5 дней

Я пытаюсь найти среднее значение за последние 5 дней по дням и продуктам. Ниже показано, как выглядит мой Dataframe:

 df=pd.DataFrame({
    'day':['day_1','day_2','day_3','day_4','day_5','day_2','day_3','day_4','day_5','day_6','day_1'],
    'product':['prod_a','prod_a','prod_a','prod_a','prod_a','prod_b','prod_b','prod_b','prod_b','prod_b','prod_b'],
    'sale':[10,15,4,17,12,1,50,70,30,70,10]   
})

Чтобы найти среднее значение за последние 5 дней по продукту, я сделал следующее:

df_average = df.groupby(['day', 'product']).tail(5).groupby(['day', 'product']).mean()

Выполнение вышеуказанного возвращает только фактическое значение для этого дня для этого продукта за этот день и не берет среднее значение за последние 5 дней.

Ожидаемый результат:

day, product, sale, last_5_average
day_1, prod_a , 10, 11.6
day_2, prod_a , 15, 12
day_3, prod_a , 4, 11
day_4, prod_a , 17, 14.5
day_5, prod_a , 12, 12
day_1, prod_b , 1, 44.2
day_2, prod_b , 50, 54
day_3, prod_b , 70, 55
day_4, prod_b , 30, 50
day_5, prod_b , 70, 60
day_6, prod_c , 50, 50
29.06.2020

  • Почему значение day1_average равно 11.6, если вы берете 5-дневное скользящее среднее? 30.06.2020

Ответы:


1

Надеюсь, это поможет!

#original data frame


  df=pd.DataFrame({
    'day':['day_1','day_2','day_3','day_4','day_5','day_2','day_3','day_4','day_5','day_6','day_1'],
    'product':['prod_a','prod_a','prod_a','prod_a','prod_a','prod_b','prod_b','prod_b','prod_b','prod_b','prod_b'],
    'sale':[10,15,4,17,12,1,50,70,30,70,10]   
})
   

 
#sort by product and day 
df=df.sort_values(by=['product','day'])
#drop the sorted index 
df=df.reset_index(drop=True)

#take rolling past 5 record's mean by product group
df['rolling_mean_sale']=df.groupby('product')['sale'].rolling(5).mean().reset_index()['sale']
29.06.2020
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..