DataFrameStatFunctions – třída

Funkce pro statistické funkce s datovým rámcem

Podporuje Spark Connect.

Syntaxe

DataFrame.stat

Methods

Metoda Description
approxQuantile(col, probabilities, relativeError) Vypočítá přibližné kvantové hodnoty číselných sloupců datového rámce.
corr(col1, col2, method) Vypočítá korelaci dvou sloupců jako dvojitou hodnotu. V současné době podporuje pouze Pearson korelační koeficient.
cov(col1, col2) Vypočítá kovarianci vzorku pro dané sloupce jako dvojitou hodnotu.
crosstab(col1, col2) Vypočítá tabulku četnosti párů daných sloupců.
freqItems(cols, support) Vyhledá časté položky pro sloupce, pravděpodobně s falešně pozitivními výsledky.
sampleBy(col, fractions, seed) Vrátí stratifikovaný vzorek bez nahrazení na základě zlomku zadaného na každé vrstvě.

Příklady

Přibližné kvantové hodnoty

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]

Korelace

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

Kovariance

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

Křížová tabulka

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

Časté položky

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

Stratifikovaný vzorek

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