Як групувати дані за часом у pandas (з прикладом)


Ви можете використовувати такий синтаксис для групування даних за часом і виконання агрегації в pandas:

 df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

Цей конкретний приклад групує значення за годинами в стовпець під назвою «Година» , а потім обчислює суму значень у стовпці «Продажі» для кожної години.

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: згрупуйте дані за часом у Pandas

Припустімо, у нас є наступний DataFrame pandas, який показує кількість продажів, здійснених у магазині в різний час доби:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' time ': ['2022-01-01 01:14:00', '2022-01-01 01:24:15',
                            '2022-01-01 02:52:19', '2022-01-01 02:54:00',
                            '2022-01-01 04:05:10', '2022-01-01 05:35:09'],
                   ' sales ': [18, 20, 15, 14, 10, 9]})

#convert date column to datetime
df[' time '] = pd. to_datetime (df[' time '])

#view DataFrame
print (df)

                 time sales
0 2022-01-01 01:14:00 18
1 2022-01-01 01:24:15 20
2 2022-01-01 02:52:19 15
3 2022-01-01 02:54:00 14
4 2022-01-01 04:05:10 10
5 2022-01-01 05:35:09 9

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

 #group by hours in time column and calculate sum of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

time
1 38
2 29
4 10
5 9
Name: sales, dtype: int64

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

  • Всього за першу годину було здійснено 38 продажів.
  • Загалом за другу годину було здійснено 29 продажів.
  • Всього за четверту годину було здійснено 10 продажів.
  • Всього за п’яту годину було здійснено 9 продажів.

Зверніть увагу, що ми також можемо виконати інше агрегування.

Наприклад, можна розрахувати середню кількість продажів за годину:

 #group by hours in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . mean ()

time
1 19.0
2 14.5
4 10.0
5 9.0
Name: sales, dtype: float64

Ми також можемо групувати за годинами та хвилинами, якщо хочемо.

Наприклад, наведений нижче код показує, як обчислити суму продажів, згруповану за годинами та хвилинами:

 #group by hours and minutes in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour , df[' time ']. dt . minute ]). dirty . mean ()

time time
1 14 18
      24 20
2 52 15
      54 14
4 5 10
5 35 9
Name: sales, dtype: int64

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

  • Середня кількість продажів за 1 годину 14 хвилин склала 18 .
  • Середня кількість продажів за 1 годину 23 хвилини склала 20 .
  • Середня кількість продажів за 2 години 52 хвилини склала 15 .

І так далі.

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

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

Як створити діапазон дат у Pandas
Як витягти місяць із дати в Pandas
Як перетворити позначку часу в дату/час у Pandas

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

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