Compartilhar via


Classe DataFrameStatFunctions

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

Dá suporte ao Spark Connect

Sintaxe

DataFrame.stat

Methods

Método Descrição
approxQuantile(col, probabilities, relativeError) Calcula os quantiles aproximados de colunas numéricas de um DataFrame.
corr(col1, col2, method) Calcula a correlação de duas colunas como um valor duplo. Atualmente, só dá suporte ao Coeficiente de Correlação pearson.
cov(col1, col2) Calcula a covariância de exemplo para as colunas fornecidas como um valor duplo.
crosstab(col1, col2) Calcula uma tabela de frequência em termos de par das colunas fornecidas.
freqItems(cols, support) Localiza itens frequentes para colunas, possivelmente com falsos positivos.
sampleBy(col, fractions, seed) Retorna uma amostra estratificada sem substituição com base na fração fornecida 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]|
+------------+------------+

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