#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:
шаги:
- Сначала преобразуйте
data-type of the
дату.column to
дата и время». - Извлеките
year/month
, используя.dt.date /.dt.month
соответственно. - Используйте извлеченное значение для создания требуемых групп и агрегирования
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