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