Как получить запаздывающее среднемесячное значение в панд

#python #pandas #numpy #data-science

Вопрос:

У меня есть такие данные: Где total_percentage_sale-это процент продажи продукта в течение определенного периода времени.

 date.       product      sale   total_percentage_sale
2019-01-01.  productA.   12.    30
2019-01-01.  productB.   10.    25
2019-02-01.  productC.   8.     20
2019-02-01.  productD.   10.    25   
 

Я хотел бы получить среднее значение по месяцам с задержкой из столбца total_percentage_sale.

Комментарии:

1. Вы имеете в виду для конкретного year/month group , в чем дело average total_percentage_sale ?

2. На целый месяц. Среднее значение для общей процентной продажи составляет 25, но среднее значение за январь составляет 27,5, а за февраль-22,5

Ответ №1:

Попробуйте этот гораздо более простой подход, который возвращает среднемесячное значение желаемого столбца —

 df.groupby(['date'], sort=True)['total_percentage_sale'].mean()
 

Ответ №2:

шаги:

  1. Сначала преобразуйте data-type of the дату. column to дата и время».
  2. Извлеките year/month , используя .dt.date /.dt.month соответственно.
  3. Используйте извлеченное значение для создания требуемых групп и агрегирования total_percentage_sale столбца с mean функцией, чтобы получить требуемый результат
 df['date.'] = pd.to_datetime(df['date.'].str.strip('.'))
df.groupby([df['date.'].dt.year.values , df['date.'].dt.month.values]).agg({'total_percentage_sale' : 'mean'})
 

выход:

             total_percentage_sale
2019    1   27.5
        2   22.5