tgoop.com/python_real/992
Create:
Last Update:
Last Update:
📊 Группировка данных в Polars с помощью `groupby`
Polars — это высокопроизводительная библиотека для анализа данных на Python. Она особенно хороша при работе с большими объемами данных, благодаря своей колонко-ориентированной архитектуре и использованию Rust под капотом.
Одним из ключевых инструментов для агрегации и анализа данных является метод .groupby()
.
Основы .groupby()
Пример базовой группировки:
import polars as pl
df = pl.DataFrame({
"city": ["London", "London", "Oslo", "Oslo", "Berlin", "Berlin"],
"year": [2020, 2021, 2020, 2021, 2020, 2021],
"value": [100, 150, 200, 220, 50, 80],
})
result = df.groupby("city").agg([
pl.col("value").mean().alias("average_value")
])
print(result)
Группировка по нескольким колонкам
Можно сгруппировать по нескольким признакам:
df.groupby(["city", "year"]).agg([
pl.col("value").sum().alias("total_value")
])
Использование выражений
Polars поддерживает ленивое выполнение (lazy evaluation) и мощную систему выражений:
df.groupby("city").agg([
(pl.col("value") * 2).mean().alias("double_avg")
])
Методы
.groupby()
в ленивом APIДля работы с большими данными предпочтительно использовать ленивый режим:
df_lazy = df.lazy()
result = df_lazy.groupby("city").agg([
pl.col("value").sum().alias("total")
])
Для запуска вычислений используется
.collect()
:
result.collect()
Применение
.groupby_dynamic()
и .groupby_rolling()
Эти методы полезны при работе с временными рядами:
*
groupby_dynamic
: для агрегирования по фиксированным временным интервалам (например, по дням, неделям).*
groupby_rolling
: для скользящего окна (например, скользящее среднее за 7 дней).Пример:
df = pl.DataFrame({
"timestamp": pl.date_range(low=datetime(2022,1,1), high=datetime(2022,1,10), interval="1d"),
"value": range(10)
})
df.groupby_rolling(index_column="timestamp", period="3d").agg([
pl.col("value").mean().alias("rolling_avg")
])
https://realpython.com/polars-groupby/
#python
👉 @python_real
BY Реальный Python

Share with your friend now:
tgoop.com/python_real/992