Tổng hợp lăn và tích lũy

Biến đổi dữ liệu với Polars

Liam Brannigan

Data Scientist & Polars Contributor

Vì sao dùng thống kê lăn?

Biểu đồ đường giá điện

Biến đổi dữ liệu với Polars

Vì sao dùng thống kê lăn?

Biểu đồ đường giá điện với thống kê lăn

Biến đổi dữ liệu với Polars

Trung bình lăn trên một cột

prices.with_columns(

)
Biến đổi dữ liệu với Polars

Trung bình lăn trên một cột

prices.with_columns(
    pl.col("price").rolling_mean(            )
)
Biến đổi dữ liệu với Polars

Trung bình lăn trên một cột

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3)
)
Biến đổi dữ liệu với Polars

Trung bình lăn trên một cột

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3).alias("smoothed")
)
Biến đổi dữ liệu với Polars

Trung bình lăn trên một cột

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3).alias("smoothed")
)
| time                | price | solar | smoothed |
| ---                 | ---   | ---   | ---      |
| datetime[µs]        | f64   | f64   | f64      |
|---------------------|-------|-------|----------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   | null     |
| 2025-07-05 01:00:00 | 28.7  | 0.0   | null     |

Biến đổi dữ liệu với Polars

Trung bình lăn trên một cột

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3).alias("smoothed")
)
| time                | price | solar | smoothed |
| ---                 | ---   | ---   | ---      |
| datetime[µs]        | f64   | f64   | f64      |
|---------------------|-------|-------|----------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   | null     |
| 2025-07-05 01:00:00 | 28.7  | 0.0   | null     |
| 2025-07-05 02:00:00 | 27.5  | 0.0   | 30.1     |
Biến đổi dữ liệu với Polars

Căn giữa cửa sổ

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3,            )
)
Biến đổi dữ liệu với Polars

Căn giữa cửa sổ

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3, center=True).alias("centered")
)
| time                | price | solar | centered |
| ---                 | ---   | ---   | ---      |
| datetime[µs]        | f64   | f64   | f64      |
|---------------------|-------|-------|----------|
| 2025-07-05 00:00:00 | 34.2  | 0.0   | null     |
| 2025-07-05 01:00:00 | 28.7  | 0.0   | 30.1     |
| 2025-07-05 02:00:00 | 27.5  | 0.0   | 27.1     |
Biến đổi dữ liệu với Polars

Biểu thức lăn khác

  • .rolling_sum() - tổng lăn
  • .rolling_std() - độ lệch chuẩn lăn
  • .rolling_max() / .rolling_min()
Biến đổi dữ liệu với Polars

Rolling trên DataFrame

prices.rolling(                                )


Biến đổi dữ liệu với Polars

Rolling trên DataFrame

prices.rolling(index_column="time",            )


Biến đổi dữ liệu với Polars

Rolling trên DataFrame

prices.rolling(index_column="time", period="3h")


Biến đổi dữ liệu với Polars

Rolling trên DataFrame

prices.rolling(index_column="time", period="3h").agg(
    pl.all().mean()
)
Biến đổi dữ liệu với Polars

Rolling trên DataFrame

prices.rolling(index_column="time", period="3h").agg(
    pl.all().mean()
)
| time                | price | solar  |
| ---                 | ---   | ---    |
| datetime[µs]        | f64   | f64    |
|---------------------|-------|------- |
| 2025-07-05 10:00:00 | 1.8   | 247.3  |
| 2025-07-05 11:00:00 | 1.4   | 347.7  |
| 2025-07-05 12:00:00 | 0.9   | 420.7  |
Biến đổi dữ liệu với Polars

Vì sao dùng thống kê tích lũy?

Biểu đồ chuỗi thời gian công suất điện mặt trời

  • Nhiệm vụ: tính giá trị tích lũy
Biến đổi dữ liệu với Polars

Vì sao dùng thống kê tích lũy?

Biểu đồ chuỗi thời gian công suất mặt trời với cực đại tích lũy của công suất

Biến đổi dữ liệu với Polars

Thống kê tích lũy

prices.with_columns(
    pl.col("solar")
)
Biến đổi dữ liệu với Polars

Thống kê tích lũy

prices.with_columns(
    pl.col("solar").cum_max()
)
Biến đổi dữ liệu với Polars

Thống kê tích lũy

prices.with_columns(
    pl.col("solar").cum_max().alias("cumulative_solar")
)
Biến đổi dữ liệu với Polars

Thống kê tích lũy

prices.with_columns(
    pl.col("solar").cum_max().alias("cumulative_solar")
)
| time                | price | solar | cumulative_solar |
| ---                 | ---   | ---   | ---              |
| datetime[µs]        | f64   | f64   | f64              |
|---------------------|-------|-------|------------------|
| ...                 | ...   | ...   | ...              |
| 2025-07-05 10:00:00 | 2.3   | 419.0 | 419.0            |
| 2025-07-05 11:00:00 | 0.5   | 481.0 | 481.0            |
| 2025-07-05 12:00:00 | 0.0   | 462.0 | 481.0            |
| ...                 | ...   | ...   | ...              |
Biến đổi dữ liệu với Polars

Tổng tích lũy cho số liệu chạy dồn

prices.with_columns(
    pl.col("solar").cum_sum().alias("total_energy")
)
| time                | price | solar | total_energy |
| ---                 | ---   | ---   | ---          |
| datetime[µs]        | f64   | f64   | f64          |
|---------------------|-------|-------|--------------|
| 2025-07-05 06:00:00 | 22.1  | 62.0  | 62.0         |
| 2025-07-05 07:00:00 | 4.5   | 100.0 | 162.0        |
| 2025-07-05 08:00:00 | 1.7   | 180.0 | 342.0        |
Biến đổi dữ liệu với Polars

Ayo berlatih!

Biến đổi dữ liệu với Polars

Preparing Video For Download...