Dela via


DataFrameStatFunctions-klass

Funktioner för statistiska funktioner med en DataFrame.

Stöder Spark Connect

Syntax

DataFrame.stat

Methods

Metod Beskrivning
approxQuantile(col, probabilities, relativeError) Beräknar ungefärliga quantiles för numeriska kolumner i en DataFrame.
corr(col1, col2, method) Beräknar korrelationen mellan två kolumner som ett dubbelt värde. Stöder för närvarande endast Pearson Correlation Coefficient.
cov(col1, col2) Beräknar samvariansexemplet för de angivna kolumnerna som ett dubbelt värde.
crosstab(col1, col2) Beräknar en parvis frekvenstabell med de angivna kolumnerna.
freqItems(cols, support) Hittar vanliga objekt för kolumner, eventuellt med falska positiva identifieringar.
sampleBy(col, fractions, seed) Returnerar ett stratifierat prov utan ersättning baserat på bråket som anges på varje stratum.

Exempel

Ungefärliga kvantantiler

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

Kovarians

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

Korsflikning

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

Vanliga objekt

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

Stratifierat exempel

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