一組用於資料框架上的聚合方法,由 DataFrame.groupBy建立。
支援 Spark Connect
語法
DataFrame.groupBy(*cols)
方法
| 方法 | 說明 |
|---|---|
agg(*exprs) |
計算彙總結果並以資料框架回傳結果。 接受字典將欄位名稱映射到聚合函式名稱,或彙總欄位表達式清單。 |
avg(*cols) |
計算每個數值欄位對每個群組的平均值。
mean 是個化名。 |
count() |
計算每個群組的紀錄數量。 |
max(*cols) |
計算每個數值欄位對每個群組的最大值。 |
mean(*cols) |
計算每個數值欄位對每個群組的平均值。
avg 是個化名。 |
min(*cols) |
計算每個組數值欄位的最小值。 |
pivot(pivot_col, values) |
將當前資料框的一欄樞軸轉換,並執行指定的聚合。 |
sum(*cols) |
計算每個組數值欄位的總和。 |
Examples
df = spark.createDataFrame(
[(2, "Alice"), (3, "Alice"), (5, "Bob"), (10, "Bob")], ["age", "name"])
df.groupBy("name").count().sort("name").show()
+-----+-----+
| name|count|
+-----+-----+
|Alice| 2|
| Bob| 2|
+-----+-----+
from pyspark.sql import functions as sf
df.groupBy("name").agg(sf.min("age")).sort("name").show()
+-----+--------+
| name|min(age)|
+-----+--------+
|Alice| 2|
| Bob| 5|
+-----+--------+
df.groupBy("name").avg("age").sort("name").show()
+-----+--------+
| name|avg(age)|
+-----+--------+
|Alice| 2.5|
| Bob| 7.5|
+-----+--------+
from pyspark.sql import Row
df1 = spark.createDataFrame([
Row(course="dotNET", year=2012, earnings=10000),
Row(course="Java", year=2012, earnings=20000),
Row(course="dotNET", year=2013, earnings=48000),
Row(course="Java", year=2013, earnings=30000),
])
df1.groupBy("year").pivot("course", ["dotNET", "Java"]).sum("earnings").sort("year").show()
+----+------+-----+
|year|dotNET| Java|
+----+------+-----+
|2012| 10000|20000|
|2013| 48000|30000|
+----+------+-----+