การรวมข้อมูลแบบ Rolling และแบบสะสม

การแปลงข้อมูลด้วย Polars

Liam Brannigan

Data Scientist & Polars Contributor

ทำไมต้องใช้ Rolling Statistics?

กราฟเส้นแสดงราคาไฟฟ้า

การแปลงข้อมูลด้วย Polars

ทำไมต้องใช้ Rolling Statistics?

กราฟเส้นแสดงราคาไฟฟ้าพร้อม Rolling Statistics

การแปลงข้อมูลด้วย Polars

Rolling Mean บนคอลัมน์

prices.with_columns(

)
การแปลงข้อมูลด้วย Polars

Rolling Mean บนคอลัมน์

prices.with_columns(
    pl.col("price").rolling_mean(            )
)
การแปลงข้อมูลด้วย Polars

Rolling Mean บนคอลัมน์

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3)
)
การแปลงข้อมูลด้วย Polars

Rolling Mean บนคอลัมน์

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3).alias("smoothed")
)
การแปลงข้อมูลด้วย Polars

Rolling Mean บนคอลัมน์

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     |

การแปลงข้อมูลด้วย Polars

Rolling Mean บนคอลัมน์

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     |
การแปลงข้อมูลด้วย Polars

การจัดกึ่งกลาง Window

prices.with_columns(
    pl.col("price").rolling_mean(window_size=3,            )
)
การแปลงข้อมูลด้วย Polars

การจัดกึ่งกลาง Window

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     |
การแปลงข้อมูลด้วย Polars

Rolling Expression อื่น ๆ

  • .rolling_sum() - ผลรวม Rolling
  • .rolling_std() - ส่วนเบี่ยงเบนมาตรฐาน Rolling
  • .rolling_max() / .rolling_min()
การแปลงข้อมูลด้วย Polars

Rolling บน DataFrame

prices.rolling(                                )


การแปลงข้อมูลด้วย Polars

Rolling บน DataFrame

prices.rolling(index_column="time",            )


การแปลงข้อมูลด้วย Polars

Rolling บน DataFrame

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


การแปลงข้อมูลด้วย Polars

Rolling บน DataFrame

prices.rolling(index_column="time", period="3h").agg(
    pl.all().mean()
)
การแปลงข้อมูลด้วย Polars

Rolling บน 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  |
การแปลงข้อมูลด้วย Polars

ทำไมต้องใช้ Cumulative Statistics?

กราฟอนุกรมเวลาของพลังงานแสงอาทิตย์

  • งาน: คำนวณค่าสะสม
การแปลงข้อมูลด้วย Polars

ทำไมต้องใช้ Cumulative Statistics?

กราฟอนุกรมเวลาของพลังงานแสงอาทิตย์พร้อมค่าสูงสุดสะสม

การแปลงข้อมูลด้วย Polars

Cumulative Statistics

prices.with_columns(
    pl.col("solar")
)
การแปลงข้อมูลด้วย Polars

Cumulative Statistics

prices.with_columns(
    pl.col("solar").cum_max()
)
การแปลงข้อมูลด้วย Polars

Cumulative Statistics

prices.with_columns(
    pl.col("solar").cum_max().alias("cumulative_solar")
)
การแปลงข้อมูลด้วย Polars

Cumulative Statistics

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            |
| ...                 | ...   | ...   | ...              |
การแปลงข้อมูลด้วย Polars

Cumulative Sum สำหรับผลรวมสะสม

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        |
การแปลงข้อมูลด้วย Polars

มาฝึกกันเถอะ!

การแปลงข้อมูลด้วย Polars

Preparing Video For Download...