Pandas: как выполнить повторную выборку временных рядов с помощью groupby()
Повторная выборка данных временных рядов означает агрегирование данных за новый период.
Если вы хотите выполнить повторную выборку временного ряда в pandas с помощью оператора groupby , вы можете использовать следующий базовый синтаксис:
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
В этом конкретном примере строки DataFrame группируются по столбцу магазина , затем выполняется повторная выборка временного ряда по неделям ( freq=’W’ ), а затем вычисляет сумму значений в столбце продаж .
Обратите внимание, что мы можем выполнить повторную выборку данных временных рядов для разных периодов времени, в том числе:
- С : Секунды
- мин : Минуты
- Ч : Часы
- Дж : День
- В : Неделя
- М : Месяц
- Вопрос : Четверть
- А : Год
В следующем примере показано, как на практике выполнить повторную выборку данных временных рядов с помощью операции группировки .
Пример: повторная выборка временного ряда с помощью groupby в Pandas
Предположим, у нас есть следующий DataFrame pandas, который показывает общий объем продаж, совершаемых каждый день в двух разных магазинах:
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
Допустим, мы хотим сгруппировать строки по магазинам , затем выполнить повторную выборку временного ряда по неделям, а затем посчитать сумму значений в столбце продаж .
Для этого мы можем использовать следующий синтаксис:
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
По результату мы видим:
- Сумма продаж за неделю, закончившуюся 08.01.2023 в магазине А равна 14 .
- Сумма продаж за неделю, закончившуюся 08.01.2023, в магазине Б равна 0 .
И так далее.
Обратите внимание, что в этом примере мы решили рассчитать сумму значений в столбце продаж .
Однако мы могли бы выбрать другие показатели, такие как количество, среднее значение, медиана, минимум, максимум и т. д.
Просто замените sum() в приведенном выше коде на count() , Mean() , Median() и т. д. для расчета показателя по вашему выбору.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:
Как построить временной ряд в Matplotlib
Как построить временной ряд в Seaborn
Как рассчитать MAPE по временным рядам в Python