Pandas: як змінити часовий ряд за допомогою groupby()


Повторна вибірка даних часових рядів означає агрегування даних за новий період.

Якщо ви хочете змінити часовий ряд у pandas за допомогою оператора groupby , ви можете використати такий базовий синтаксис:

 group = df. groupby ([pd. Group (freq=' W '), ' store '])

result = group[' sales ']. sum (). unstack (' store '). fillna (0) 

У цьому конкретному прикладі групуються рядки DataFrame за стовпцем магазину , потім повторюється вибірка часових рядів за тижнями ( freq=’W’ ), а потім обчислюється сума значень у стовпці продажів .

Зауважте, що ми можемо повторювати вибірку даних часових рядів для різних періодів часу, зокрема:

  • S : Секунди
  • min : хвилини
  • H : години
  • Дж : День
  • W : Тиждень
  • М : Місяць
  • П : Чверть
  • A : Рік

У наведеному нижче прикладі показано, як на практиці повторити вибірку даних часових рядів за допомогою операції groupby .

Приклад: перевибірка часового ряду за допомогою Groupby в Pandas

Припустімо, що у нас є такий Frame 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

З результату ми бачимо:

  • Сума продажів за тиждень, що закінчився 01/08/2023 у магазині А, дорівнює 14 .
  • Сума продажів за тиждень, що закінчився 01/08/2023 у магазині B, дорівнює 0 .

І так далі.

Зверніть увагу, що в цьому прикладі ми вирішили обчислити суму значень у стовпці продажів .

Однак ми можемо вибрати інші показники, такі як кількість, середнє значення, медіана, мінімальний, максимальний тощо.

Просто замініть sum() у коді вище на count() , Mean() , Median() тощо. щоб обчислити метрику за вашим вибором.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в Python:

Як побудувати часовий ряд у Matplotlib
Як побудувати часовий ряд у Seaborn
Як розрахувати MAPE за часовими рядами в Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *