Compartir a través de


Clase DataFrameStatFunctions

Funcionalidad de funciones estadísticas con dataframe.

Admite Spark Connect

Sintaxis

DataFrame.stat

Methods

Método Descripción
approxQuantile(col, probabilities, relativeError) Calcula los cuantiles aproximados de columnas numéricas de un dataframe.
corr(col1, col2, method) Calcula la correlación de dos columnas como un valor doble. Actualmente solo admite el coeficiente de correlación de Pearson.
cov(col1, col2) Calcula la covarianza de ejemplo para las columnas especificadas como un valor doble.
crosstab(col1, col2) Calcula una tabla de frecuencias en pares de las columnas especificadas.
freqItems(cols, support) Busca elementos frecuentes para las columnas, posiblemente con falsos positivos.
sampleBy(col, fractions, seed) Devuelve una muestra estratificada sin reemplazo en función de la fracción dada en cada estrato.

Ejemplos

Cuantiles aproximados

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]

Correlación

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

Covarianza

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

Tabulación cruzada

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

Elementos frecuentes

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

Ejemplo estratificado

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