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 教程列表。