Partilhar via


Classe DataFrameStatFunctions

Funcionalidade para funções estatísticas com um DataFrame.

Suporta Spark Connect

Sintaxe

DataFrame.stat

Methods

Método Descrição
approxQuantile(col, probabilities, relativeError) Calcula os quantículos aproximados das colunas numéricas de um DataFrame.
corr(col1, col2, method) Calcula a correlação de duas colunas como um valor duplo. Atualmente, suporta apenas o Coeficiente de Correlação de Pearson.
cov(col1, col2) Calcula a covariância da amostra para as colunas dadas como um valor duplo.
crosstab(col1, col2) Calcula uma tabela de frequências par a par das colunas dadas.
freqItems(cols, support) Encontra itens frequentes para colunas, possivelmente com falsos positivos.
sampleBy(col, fractions, seed) Devolve uma amostra estratificada sem substituição com base na fração dada em cada estrato.

Exemplos

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

Correlação

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

Covariância

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

Tabulação 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|
+-----+---+---+---+

Itens frequentes

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

Amostra estratificada

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