Pandas: como reamostrar séries temporais com groupby()


Reamostrar dados de séries temporais significa agregar os dados durante um novo período.

Se quiser reamostrar uma série temporal em pandas usando o operador groupby , você pode usar a seguinte sintaxe básica:

 group = df. groupby ([pd. Group (freq=' W '), ' store '])

result = group[' sales ']. sum (). unstack (' store '). fillna (0) 

Este exemplo específico agrupa as linhas do DataFrame por coluna de loja , depois faz uma nova amostragem da série temporal por semana ( freq=’W’ ) e calcula a soma dos valores na coluna de vendas .

Observe que podemos reamostrar dados de séries temporais para diferentes períodos de tempo, incluindo:

  • S : Segundos
  • min : Minutos
  • H : Horas
  • J : Dia
  • W : Semana
  • M : Mês
  • P : Trimestre
  • R : Ano

O exemplo a seguir mostra como reamostrar dados de série temporal com uma operação groupby na prática.

Exemplo: Reamostrar uma série temporal com groupby no Pandas

Suponha que temos o seguinte DataFrame do pandas que mostra o total de vendas realizadas a cada dia em duas lojas diferentes:

 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

Digamos que queremos agrupar as linhas por loja , depois reamostrar a série temporal por semana e, em seguida, calcular a soma dos valores na coluna de vendas .

Podemos usar a seguinte sintaxe para fazer isso:

 #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

Pelo resultado podemos ver:

  • A soma das vendas da semana encerrada em 01/08/2023 na loja A é 14 .
  • A soma das vendas da semana encerrada em 08/01/2023 na loja B é 0 .

E assim por diante.

Observe que neste exemplo optamos por calcular a soma dos valores da coluna vendas .

No entanto, poderíamos escolher outras métricas, como contagem, média, mediana, mínimo, máximo, etc.

Simplesmente substitua sum() no código acima por count() , Mean() , Median() , etc. para calcular a métrica de sua escolha.

Recursos adicionais

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

Como traçar uma série temporal no Matplotlib
Como traçar uma série temporal em Seaborn
Como calcular MAPE a partir de séries temporais em Python

Add a Comment

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