Класс DataFrameStatFunctions

Функции статистических функций с кадром данных.

Поддержка Spark Connect

Синтаксис

DataFrame.stat

Методы

Метод Описание
approxQuantile(col, probabilities, relativeError) Вычисляет приблизительные квантили числовых столбцов кадра данных.
corr(col1, col2, method) Вычисляет корреляцию двух столбцов как двойное значение. В настоящее время поддерживается только коэффициент корреляции Pearson.
cov(col1, col2) Вычисляет пример ковариации для заданных столбцов как двойное значение.
crosstab(col1, col2) Вычисляет таблицу с парой частоты заданных столбцов.
freqItems(cols, support) Находит частые элементы для столбцов, возможно, с ложными срабатываниями.
sampleBy(col, fractions, seed) Возвращает стратифицированный образец без замены на основе дроби, заданной на каждом страте.

Примеры

Приблизительные квантили

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]

Корреляция

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

Ковариации

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

Перекрестная табуляция

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

Частые элементы

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

Стратифицированный пример

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