Как сгруппировать данные по времени в 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

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

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