Freigeben über


GroupedData

Eine Reihe von Methoden für Aggregationen in einem DataFrame, erstellt von DataFrame.groupBy.

Unterstützt Spark Connect

Syntax

DataFrame.groupBy(*cols)

Methodik

Methode Beschreibung
agg(*exprs) Berechnet Aggregate und gibt das Ergebnis als DataFrame zurück. Akzeptiert eine Wörterbuchzuordnung von Spaltennamen zu Aggregatfunktionsnamen oder eine Liste der Aggregatspaltenausdrücke.
avg(*cols) Berechnet Durchschnittswerte für jede numerische Spalte für jede Gruppe. mean ist ein Alias.
count() Zählt die Anzahl der Datensätze für jede Gruppe.
max(*cols) Berechnet den maximalen Wert für jede numerische Spalte für jede Gruppe.
mean(*cols) Berechnet Durchschnittswerte für jede numerische Spalte für jede Gruppe. avg ist ein Alias.
min(*cols) Berechnet den Min.-Wert für jede numerische Spalte für jede Gruppe.
pivot(pivot_col, values) Pivots a column of the current DataFrame and perform the specified aggregation.
sum(*cols) Berechnet die Summe für jede numerische Spalte für jede Gruppe.

Beispiele

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|
+----+------+-----+