Path: blob/main/docs/source/src/python/user-guide/transformations/time-series/rolling.py
7891 views
# --8<-- [start:setup]1from datetime import date, datetime23import polars as pl45# --8<-- [end:setup]67# --8<-- [start:df]8df = pl.read_csv("docs/assets/data/apple_stock.csv", try_parse_dates=True)9df = df.sort("Date")10print(df)11# --8<-- [end:df]1213# --8<-- [start:group_by]14annual_average_df = df.group_by_dynamic("Date", every="1y").agg(pl.col("Close").mean())1516df_with_year = annual_average_df.with_columns(pl.col("Date").dt.year().alias("year"))17print(df_with_year)18# --8<-- [end:group_by]1920# --8<-- [start:group_by_dyn]21df = (22pl.date_range(23start=date(2021, 1, 1),24end=date(2021, 12, 31),25interval="1d",26eager=True,27)28.alias("time")29.to_frame()30)3132out = df.group_by_dynamic("time", every="1mo", period="1mo", closed="left").agg(33pl.col("time").cum_count().reverse().head(3).alias("day/eom"),34((pl.col("time") - pl.col("time").first()).last().dt.total_days() + 1).alias(35"days_in_month"36),37)38print(out)39# --8<-- [end:group_by_dyn]4041# --8<-- [start:group_by_roll]42df = pl.DataFrame(43{44"time": pl.datetime_range(45start=datetime(2021, 12, 16),46end=datetime(2021, 12, 16, 3),47interval="30m",48eager=True,49),50"groups": ["a", "a", "a", "b", "b", "a", "a"],51}52)53print(df)54# --8<-- [end:group_by_roll]5556# --8<-- [start:group_by_dyn2]57out = df.group_by_dynamic(58"time",59every="1h",60closed="both",61group_by="groups",62include_boundaries=True,63).agg(pl.len())64print(out)65# --8<-- [end:group_by_dyn2]666768