集計を計算し、結果を DataFrameとして返します。
使用できる集計関数は次のとおりです。
-
avg、max、min、sum、countなどの組み込みの集計関数。 -
pyspark.sql.functions.pandas_udfで作成されたグループ集計 pandas UDF。
構文
agg(*exprs)
パラメーター
| パラメーター | タイプ | 説明 |
|---|---|---|
exprs |
dict または列 | 列名 (文字列) から集計関数 (文字列) へのディクテーション マッピング、または集計 Column 式のリスト。 |
返品
DataFrame
メモ
組み込みの集計関数とグループ集計 pandas UDF は、この関数の 1 回の呼び出しで混在させることはできません。
exprsが 1 つのディクテーションの場合、キーは集計を実行する列であり、値は集計関数です。
exprsがColumn式の一覧である場合、各式は計算する集計を指定します。
例示
import pandas as pd
from pyspark.sql import functions as sf
df = spark.createDataFrame(
[(2, "Alice"), (3, "Alice"), (5, "Bob"), (10, "Bob")], ["age", "name"])
# Group-by name, and count each group.
df.groupBy(df.name).agg({"*": "count"}).sort("name").show()
# +-----+--------+
# | name|count(1)|
# +-----+--------+
# |Alice| 2|
# | Bob| 2|
# +-----+--------+
# Group-by name, and calculate the minimum age.
df.groupBy(df.name).agg(sf.min(df.age)).sort("name").show()
# +-----+--------+
# | name|min(age)|
# +-----+--------+
# |Alice| 2|
# | Bob| 5|
# +-----+--------+
# Same as above but uses a pandas UDF.
from pyspark.sql.functions import pandas_udf
@pandas_udf('int')
def min_udf(v: pd.Series) -> int:
return v.min()
df.groupBy(df.name).agg(min_udf(df.age)).sort("name").show()
# +-----+------------+
# | name|min_udf(age)|
# +-----+------------+
# |Alice| 2|
# | Bob| 5|
# +-----+------------+