Ich versuche, die Varianz für ein GroupedData-Objekt in PySpark2 zu berechnen. Betrachtet man http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.GroupedData, sehe ich keine integrierten Funktionen zur Berechnung der Varianz.Berechne Varianz auf GroupedData
Gibt es eine effiziente Methode zur Berechnung der Varianz für ein GroupedData-Objekt in PySpark2?
Hier ist Beispielcode, wie ich den Mittelwert berechnen würde, min und max auf einem GroupedData Objekt, aber ich bin nicht sicher, wie die Varianz zu berechnen:
from pyspark.sql import *
from pyspark.sql.session import SparkSession
spark = SparkSession.builder.getOrCreate()
columns = ['a', 'b']
vals = [('x', 3), ('x', 5), ('y', 1), ('y', 8), ('y', 4), ('z', 5), ('z', 7), ('z', 4), ('z', 9)]
df = spark.createDataFrame(vals, columns)
df.groupBy('a').agg(avg('b'), min('b'), max('b')).show()
Der Datenrahmen df
wie folgt aussieht:
+---+---+
| a| b|
+---+---+
| x| 3|
| x| 5|
| y| 1|
| y| 8|
| y| 4|
| z| 5|
| z| 7|
| z| 4|
| z| 9|
+---+---+
ich möchte eine neue Datenrahmen ähnlich dem folgenden erstellen, um die Varianz zeigt:
+---+--------+
| a| b_var|
+---+--------+
| x| 1.0000|
| y| 8.2222|
| z| 3.6875|
+---+--------+