Freigeben über


DataFrameStatFunctions-Klasse

Funktionalität für statistische Funktionen mit einem DataFrame.

Unterstützt Spark Connect

Syntax

DataFrame.stat

Methodik

Methode Beschreibung
approxQuantile(col, probabilities, relativeError) Berechnet die ungefähren Quantiles numerischer Spalten eines DataFrames.
corr(col1, col2, method) Berechnet die Korrelation von zwei Spalten als doppelten Wert. Unterstützt derzeit nur den Pearson-Korrelationskoeffizient.
cov(col1, col2) Berechnet die Stichprobenkovarianz für die angegebenen Spalten als doppelten Wert.
crosstab(col1, col2) Berechnet eine paarweise Häufigkeitstabelle der angegebenen Spalten.
freqItems(cols, support) Sucht häufig verwendete Elemente für Spalten, möglicherweise mit falsch positiven Ergebnissen.
sampleBy(col, fractions, seed) Gibt eine gestazierte Probe ohne Ersatz basierend auf dem Bruch zurück, der auf den einzelnen Schichten angegeben ist.

Beispiele

Ungefähre Quantiles

data = [(1,), (2,), (3,), (4,), (5,)]
df = spark.createDataFrame(data, ["values"])
df.stat.approxQuantile("values", [0.0, 0.5, 1.0], 0.05)
[1.0, 3.0, 5.0]

Korrelation

df = spark.createDataFrame([(1, 12), (10, 1), (19, 8)], ["c1", "c2"])
df.stat.corr("c1", "c2")
-0.3592106040535498

Kovarianz

df = spark.createDataFrame([(1, 12), (10, 1), (19, 8)], ["c1", "c2"])
df.stat.cov("c1", "c2")
-18.0

Kreuzregisterkarten

df = spark.createDataFrame([(1, 11), (1, 11), (3, 10), (4, 8), (4, 8)], ["c1", "c2"])
df.stat.crosstab("c1", "c2").sort("c1_c2").show()
+-----+---+---+---+
|c1_c2| 10| 11|  8|
+-----+---+---+---+
|    1|  0|  2|  0|
|    3|  1|  0|  0|
|    4|  0|  0|  2|
+-----+---+---+---+

Häufige Elemente

from pyspark.sql import functions as sf

df = spark.createDataFrame([(1, 11), (1, 11), (3, 10), (4, 8), (4, 8)], ["c1", "c2"])
df2 = df.stat.freqItems(["c1", "c2"])
df2.select([sf.sort_array(c).alias(c) for c in df2.columns]).show()
+------------+------------+
|c1_freqItems|c2_freqItems|
+------------+------------+
|   [1, 3, 4]| [8, 10, 11]|
+------------+------------+

Gezeichnetes Beispiel

from pyspark.sql import functions as sf

dataset = spark.range(0, 100, 1, 5).select((sf.col("id") % 3).alias("key"))
dataset.stat.sampleBy("key", fractions={0: 0.1, 1: 0.2}, seed=0).groupBy("key").count().orderBy("key").show()
+---+-----+
|key|count|
+---+-----+
|  0|    4|
|  1|    9|
+---+-----+