agg (GroupedData)
Calcule les agrégats et renvoie le résultat sous la forme d'un DataFrame.
Les fonctions d'agrégation disponibles peuvent être :
- Fonctions d'agrégation intégrées, telles que
avg,max,min,sum,count. - Agrégats de groupe UDF pandas, créés avec
pyspark.sql.functions.pandas_udf.
Syntaxe
agg(*exprs)
parameter
parameter | Type | Description |
|---|---|---|
| dict ou colonne | Un dictionnaire faisant correspondre le nom de colonne (chaîne) aux fonctions d'agrégation (chaîne), ou une liste d'expressions d'agrégation |
Renvoie
DataFrame
Notes
Les fonctions d'agrégation intégrées et les UDF pandas d'agrégation de groupe ne peuvent pas être mélangées dans un seul appel à cette fonction.
Lorsque exprs est un seul dict, la clé est la colonne sur laquelle effectuer l'agrégation et la valeur est la fonction d'agrégation. Lorsque exprs est une liste de Column expressions, chaque expression spécifie une agrégation à compute.
Exemples
Python
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|
# +-----+------------+