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