Séries Temporais
Dados indexados por tempo precisam de agrupamento ciente do calendário, estatísticas deslizantes e regras explícitas de fuso horário - o DatetimeIndex do pandas fornece os mecanismos.
Busque em todas as páginas da documentação
Dados indexados por tempo precisam de agrupamento ciente do calendário, estatísticas deslizantes e regras explícitas de fuso horário - o DatetimeIndex do pandas fornece os mecanismos.
Cartão de receita de referência rápida - pronto para copiar e colar.
import pandas as pd
ts = df.set_index("ordered_at").sort_index()
daily = ts["revenue"].resample("D").sum()
roll = daily.rolling(7, min_periods=3).mean()
local = ts.index.tz_convert("America/New_York")Quando usar isso:
import pandas as pd
idx = pd.date_range("2025-01-01", periods=48, freq="h", tz="UTC")
events = pd.DataFrame(
{"revenue": range(48), "region": ["East"] * 24 + ["West"] * 24},
index=idx,
)
events.index.name = "ts"
# Totais diários por região (largo)
daily = (
events.groupby([pd.Grouper(freq="D"), "region"])["revenue"]
.sum()
.unstack(fill_value=0)
)
# Média deslizante de 7 dias na coluna East
daily["East_roll7"] = daily["East"].rolling(7, min_periods=3).mean()
# Reindexação para dias úteis com preenchimento para frente para lacunas de relatório
biz = daily.asfreq("B").ffill()
# Exibição no horário Leste dos EUA
eastern = events.index.tz_convert("America/New_York")
print(daily.head())
print("primeira hora Leste:", eastern[0])O que isso demonstra:
Grouper(freq="D") para agrupamentos diários de calendáriomin_periods para evitar janelas minúsculasasfreq + ffill para alinhamento de dias úteisDatetimeIndex armazena int64 nanosegundos mais metadados de fuso horário.resample agrupa em períodos regulares (strings de regra como D, ME, h).rolling desliza uma janela fixa; expanding cresce a partir do início.| Regra | Significado |
|---|---|
h | Horário |
D | Dia de calendário |
B | Dia útil |
ME | Fim do mês |
W-MON | Semanal segunda-feira |
import pandas as pd
# Analisa formatos mistos, força UTC
pd.to_datetime(series, format="mixed", utc=True)
# Desloca para recursos de atraso
df["revenue_lag1"] = df["revenue"].shift(1)resample e rolling assumem tempo ordenado. Correção: df.sort_index() primeiro.tz_convert para exibição.MS vs ME muda os limites do KPI. Correção: documente o calendário de relatórios com as partes interessadas.min_periods=window padrão produz muitos NA. Correção: diminua min_periods conscientemente ou impute lacunas.DatetimeIndex de ponta a ponta.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
Polars group_by_dynamic | Grandes buckets de tempo preguiçosos | Pequenos notebooks apenas com pandas |
| statsmodels | ARIMA/decomposição sazonal | KPIs simples de reamostragem |
DuckDB date_trunc | Agregações de armazém nativas SQL | Operações de Series em máquina única |
np.convolve | Suavização FIR fixa em ndarray | Timestamps irregulares |
resample funciona diretamente no DatetimeIndex.Grouper se anexa às chaves de coluna em groupby.ts.resample("D").sum().asfreq("D", fill_value=0)weekly = ts.resample("W").sum()
wow = weekly.pct_change()ts.rolling("7D").mean()merge_asof para junções "as-of".closed="left" inclui a borda esquerda do bin.label define qual timestamp nomeia o bucket.ts.index.duplicated().any()to_excel.merge_asofVersões da Stack: Esta página foi escrita para Python 3.14.0 (stable 3.14, maintenance 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026