समूह के आधार पर डेटा ट्रांसफॉर्म करना

Polars के साथ Data Transformation

Liam Brannigan

Data Scientist & Polars Contributor

समूह आँकड़ों से तुलना क्यों?

दिनभर में बिजली कीमतों का टाइम सीरीज़ चार्ट

  • क्या कीमतें सामान्य से अधिक हैं या कम?
Polars के साथ Data Transformation

समूह आँकड़ों से तुलना क्यों?

घंटेवार औसत कीमतों सहित दिनभर की बिजली कीमतों का टाइम सीरीज़ चार्ट

Polars के साथ Data Transformation

समूह आँकड़ों से तुलना क्यों?

घंटेवार औसत कीमतों और दोपहर में सस्ती कीमतों को दिखाती एनोटेशन सहित चार्ट

Polars के साथ Data Transformation

समूह आँकड़ों से तुलना क्यों?

घंटेवार औसत कीमतों और शाम को सामान्य कीमतों को दिखाती एनोटेशन सहित चार्ट

Polars के साथ Data Transformation

घंटा निकालना

prices.with_columns(
    pl.col("time").dt.hour().alias("hour")
)
| time                | price | solar   | hour |
| ---                 | ---   | ---     | ---  |
| datetime[µs]        | f64   | f64     | i8   |
|---------------------|-------|-------  |------|
| 2025-07-05 10:00:00 | 2.3   | 419.0   | 10   |
| 2025-07-05 11:00:00 | 0.5   | 481.0   | 11   |
| 2025-07-05 12:00:00 | 0.0   | 462.0   | 12   |
Polars के साथ Data Transformation

.over() के साथ विंडो फंक्शन

prices.with_columns(
    pl.col("price").mean()
)
Polars के साथ Data Transformation

.over() के साथ विंडो फंक्शन

prices.with_columns(
    pl.col("price").mean().over("hour")
)
Polars के साथ Data Transformation

.over() के साथ विंडो फंक्शन

prices.with_columns(
    pl.col("price").mean().over("hour").alias("hourly_avg")
)
Polars के साथ Data Transformation

.over() के साथ विंडो फंक्शन

prices.with_columns(
    pl.col("price").mean().over("hour").alias("hourly_avg")
)
| time                | price | solar | hour | hourly_avg |
| ---                 | ---   | ---   | ---  | ---        |
| datetime[µs]        | f64   | f64   | i8   | f64        |
|---------------------|-------|-------|------|------------|
| 2025-07-05 10:00:00 | 2.3   | 419.0 | 10   | 49.6       |
| 2025-07-05 11:00:00 | 0.5   | 481.0 | 11   | 44.4       |
| 2025-07-05 12:00:00 | 0.0   | 462.0 | 12   | 39.5       |
Polars के साथ Data Transformation

मौसम की श्रेणी बनाना

  • Sunny: solar > 400 W/m²
  • Cloudy: solar <= 400 W/m²
Polars के साथ Data Transformation

मौसम की श्रेणी बनाना

prices.with_columns(
    pl.when(pl.col("solar") > 400)
    .then(pl.lit("sunny"))
    .otherwise(pl.lit("cloudy"))

.alias("weather")
)
| time                | price | solar | weather |
| ---                 | ---   | ---   | ---     |
| datetime[µs]        | f64   | f64   | str     |
|---------------------|-------|-------|---------|
| 2025-07-05 10:00:00 | 2.3   | 419.0 | sunny   |
| 2025-07-06 10:00:00 | 80.5  | 181.0 | cloudy  |
| 2025-07-07 10:00:00 | 41.5  | 150.0 | cloudy  |
Polars के साथ Data Transformation

कई कॉलम से समूह बनाना

prices.with_columns(
    pl.col("price").mean()
)
Polars के साथ Data Transformation

कई कॉलम से समूह बनाना

prices.with_columns(
    pl.col("price").mean().over("hour", "weather")
)
Polars के साथ Data Transformation

कई कॉलम से समूह बनाना

prices.with_columns(
    pl.col("price").mean().over("hour", "weather").alias("avg_by_hour_weather")
)
Polars के साथ Data Transformation

कई कॉलम से समूह बनाना

prices.with_columns(
    pl.col("price").mean().over("hour", "weather").alias("avg_by_hour_weather")
)
| time                | price | hour | weather | avg_by_hour_weather |
| ---                 | ---   | ---  | ---     | ---                 |
| datetime[µs]        | f64   | i8   | str     | f64                 |
|---------------------|-------|------|---------|---------------------|
| 2025-07-05 10:00:00 | 2.3   | 10   | sunny   | 34.2                |
| 2025-07-06 10:00:00 | 80.5  | 10   | cloudy  | 58.0                |
| 2025-07-07 10:00:00 | 41.5  | 10   | cloudy  | 58.0                |
Polars के साथ Data Transformation

समूह औसत से तुलना करना

prices.with_columns(
    (pl.col("price")                                     )

)
Polars के साथ Data Transformation

समूह औसत से तुलना करना

prices.with_columns(
    (pl.col("price") - pl.col("price").mean().over("hour"))

)
Polars के साथ Data Transformation

समूह औसत से तुलना करना

prices.with_columns(
    (pl.col("price") - pl.col("price").mean().over("hour"))
    .alias("diff_from_hourly_avg")
)
| time                | price | hour | diff_from_hourly_avg |
| ---                 | ---   | ---  | ---                  |
| datetime[µs]        | f64   | i8   | f64                  |
|---------------------|-------|------|----------------------|
| 2025-07-05 10:00:00 | 2.3   | 10   | -47.3                |
| 2025-07-06 10:00:00 | 25.1  | 10   | -24.5                |
| 2025-07-07 10:00:00 | 2.7   | 10   | -46.9                |
Polars के साथ Data Transformation

अन्य विंडो एग्रीगेशन

.over() कई एग्रीगेशन के साथ काम करता है:

  • .sum().over() - समूह कुल
  • .max().over() - समूह अधिकतम
  • .count().over() - समूह आकार
Polars के साथ Data Transformation

अभ्यास करते हैं!

Polars के साथ Data Transformation

Preparing Video For Download...