Polars GroupBy 函数
最后修改时间:2025年3月1日
Polars 是一个为 Python 设计的快速、高效的 DataFrame 库。`groupby` 函数用于基于一个或多个列对数据进行分组。本教程将通过实际示例介绍如何在 Polars 中使用 `groupby` 函数。
数据分组对于汇总、聚合和分析数据集至关重要。Polars 为这些任务提供了强大的 `groupby` 方法。
基本 GroupBy:计数
此示例展示了如何对数据进行分组并计算每个组的行数。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) result = df.groupby('Category').count() print(result)
groupby('Category').count()
按“Category”对数据进行分组,并计算每个组的行数。这对于汇总数据非常有用。
GroupBy:求和
此示例演示了如何对数据进行分组并计算某一列的总和。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) result = df.groupby('Category').sum() print(result)
groupby('Category').sum()
按“Category”对数据进行分组,并计算“Values”列的总和。这对于聚合数据非常有用。
GroupBy:平均值
此示例展示了如何对数据进行分组并计算某一列的平均值。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) result = df.groupby('Category').mean() print(result)
groupby('Category').mean()
按“Category”对数据进行分组,并计算“Values”列的平均值。这对于分析趋势非常有用。
GroupBy:多个聚合
此示例演示了如何对分组应用多个聚合函数。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) result = df.groupby('Category').agg([ pl.col('Values').sum().alias('Sum'), pl.col('Values').mean().alias('Mean') ]) print(result)
groupby('Category').agg()
对“Values”列应用多个聚合函数。这对于详细分析非常有用。
GroupBy:自定义聚合
此示例展示了如何对分组应用自定义聚合函数。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) def custom_agg(x): return x.max() - x.min() result = df.groupby('Category').agg([ pl.col('Values').apply(custom_agg).alias('Range') ]) print(result)
groupby('Category').agg()
应用自定义函数来计算每个组的范围(最大值 - 最小值)。这对于自定义计算非常有用。
GroupBy:多个列
此示例演示了如何按多个列对数据进行分组。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'SubCategory': ['X', 'X', 'Y', 'Y', 'X', 'Y'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) result = df.groupby(['Category', 'SubCategory']).sum() print(result)
groupby(['Category', 'SubCategory']).sum()
按“Category”和“SubCategory”对数据进行分组,并计算“Values”列的总和。这对于多级分析非常有用。
GroupBy:过滤组
此示例展示了如何根据条件过滤组。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) result = df.groupby('Category').filter( pl.col('Values').sum() > 100 ) print(result)
groupby('Category').filter()
过滤“Values”总和大于 100 的组。这对于条件分析非常有用。
GroupBy:排序组
此示例演示了如何根据某一列对组进行排序。
import polars as pl data = { 'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Values': [10, 20, 30, 40, 50, 60] } df = pl.DataFrame(data) result = df.groupby('Category').agg([ pl.col('Values').sum().alias('Sum') ]).sort('Sum', descending=True) print(result)
groupby('Category').agg().sort()
按“Values”的总和降序对组进行排序。这对于对组进行排名非常有用。
GroupBy 的最佳实践
- 理解数据:在分组之前分析数据结构。
- 选择合适的列:选择与您的分析目标一致的列。
- 处理缺失数据:使用 `fill_null` 来处理缺失值。
- 验证结果:检查分组数据的准确性和一致性。
来源
在本文中,我们探讨了如何在 Polars 中使用 `groupby` 函数。
作者
所有 Polars 教程列表。