Lesson 16 / 25

Working With Time Series

Dates as an index.

resample and rolling windows

With a DatetimeIndex, resample("D") or resample("W") aggregates by calendar period (empty days appear with 0 for sum), and rolling("2D") computes moving-window statistics based on time rather than row count. The .dt accessor or index properties give parts of dates (day name, month, hour). Be explicit about time zones with tz_localize and tz_convert.

Daily and weekly totals and a rolling window, run

I ran this with Python 3.12.3 and pandas 3.0.6. Daily totals include an empty 3 March; weeks end on Sunday by default; the 2-day rolling sum resets after gaps.

import pandas as pd

ts = pd.DataFrame({
    "ts": pd.to_datetime(["2026-03-01 09:00", "2026-03-01 17:30", "2026-03-02 10:15",
                          "2026-03-04 12:00", "2026-03-08 08:45"]),
    "amount": [100, 50, 70, 30, 90],
}).set_index("ts")
print(ts.resample("D")["amount"].sum().head(4))
print(ts.resample("W")["amount"].sum())
print(ts["amount"].rolling("2D").sum().tolist())
print(ts.index.day_name().tolist())

Output:

ts
2026-03-01    150
2026-03-02     70
2026-03-03      0
2026-03-04     30
Freq: D, Name: amount, dtype: int64
ts
2026-03-01    150
2026-03-08    190
Freq: W-SUN, Name: amount, dtype: int64
[100.0, 150.0, 220.0, 30.0, 90.0]
['Sunday', 'Sunday', 'Monday', 'Wednesday', 'Sunday']

Store timestamps in UTC

Convert to local time only for display; mixing zones silently shifts aggregations.

Quick check: What does resample("W") do by default?

  • Shifts dates by a week
  • Keeps one row per weekday
  • Aggregates into weeks ending on Sunday
  • Removes weekends
Answer

Aggregates into weeks ending on Sunday — Weekly bins, W-SUN.