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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *