Como agrupar dados por hora no pandas (com exemplo)


Você pode usar a seguinte sintaxe para agrupar dados por tempo e realizar agregação em pandas:

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

Este exemplo específico agrupa os valores por hora em uma coluna chamada Hora e depois calcula a soma dos valores da coluna Vendas para cada hora.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: agrupar dados por hora no Pandas

Digamos que temos o seguinte DataFrame do pandas que mostra o número de vendas realizadas em diferentes horários do dia para uma loja:

 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

Podemos usar a seguinte sintaxe para agrupar a coluna de tempo por horas e calcular a soma das vendas de cada hora:

 #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

Pelo resultado podemos ver:

  • Foram realizadas 38 vendas na primeira hora.
  • Um total de 29 vendas foram realizadas na segunda hora.
  • Um total de 10 vendas foram realizadas na quarta hora.
  • Um total de 9 vendas foram realizadas durante a quinta hora.

Observe que também podemos realizar outra agregação.

Por exemplo, poderíamos calcular o número médio de vendas por hora:

 #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

Também podemos agrupar por horas e minutos, se quisermos.

Por exemplo, o código a seguir mostra como calcular a soma das vendas, agrupadas por horas e minutos:

 #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

Pelo resultado podemos ver:

  • O número médio de vendas em 1 hora e 14 minutos foi de 18 .
  • O número médio de vendas durante 1 hora e 23 minutos foi de 20 .
  • O número médio de vendas em 2 horas e 52 minutos foi de 15 .

E assim por diante.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Como criar um intervalo de datas no Pandas
Como extrair o mês da data no Pandas
Como converter carimbo de data/hora em data/hora no Pandas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *