Como agrupar por semana no pandas dataframe (com exemplo)


Você pode usar a seguinte sintaxe básica para agrupar linhas por semana em um DataFrame do pandas:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()

Esta fórmula específica agrupa as linhas por semana na coluna de data e calcula a soma dos valores da coluna de valores no DataFrame.

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

Exemplo: Como agrupar por semana no Pandas

Digamos que temos o seguinte DataFrame do pandas que mostra as vendas realizadas por uma empresa em datas diferentes:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
                   ' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print (df)

         dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7

Relacionado: Como criar um intervalo de datas no Pandas

Podemos usar a seguinte sintaxe para calcular a soma das vendas agrupadas por semana:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum ()

date
2022-01-02 32
2022-01-09 44
2022-01-16 18
Freq: W-SUN, Name: sales, dtype: int64

Veja como interpretar o resultado:

  • Houve 32 vendas no total durante a semana que começou no dia seguinte a 02/01/2022.
  • Foram 44 vendas no total durante a semana iniciada no dia seguinte a 09/01/2022.
  • Foram realizadas 18 vendas durante a semana iniciada no dia seguinte a 16/01/2022.

Deve-se notar que, por padrão, os pandas assumem que a semana começa no dia seguinte ao domingo ( W-SUN ).

Porém, de acordo com a documentação , você pode alterar esse valor para Freq .

Por exemplo, você pode especificar Freq=W-MON se desejar que cada semana comece no dia seguinte à segunda-feira (ou seja, terça-feira).

Podemos usar sintaxe semelhante para calcular valores máximos de vendas agrupados por semana:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate max of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max ()

date
2022-01-02 9
2022-01-09 9
2022-01-16 7
Freq: W-SUN, Name: sales, dtype: int64

Veja como interpretar o resultado:

  • O máximo de vendas por dia durante a semana que começa no dia seguinte a 02/01/2022 foi 9 .
  • O número máximo de vendas por dia durante a semana iniciada no dia seguinte a 09/01/2022 foi 9 .
  • O número máximo de vendas por dia durante a semana iniciada no dia seguinte a 16/01/2022 foi 7 .

Nota : Você pode encontrar a documentação completa da operação groupby no pandas aqui .

Recursos adicionais

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

Como agrupar por mês no Pandas DataFrame
Como agrupar por dia no Pandas DataFrame
Como usar Groupby e contar condicionalmente no Pandas

Add a Comment

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