Pular para o conteúdo principal

Classe DataFrameStatFunctions

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

Compatível com Spark Connect

Sintaxe

Python
DataFrame.stat

Métodos

Método

Descrição

approxQuantile(col, probabilities, relativeError)

Calcula os quantis aproximados das colunas numéricas de um DataFrame.

corr(col1, col2, method)

Calcula a correlação entre duas colunas como um valor do tipo double. Atualmente, suporta apenas o Coeficiente de Correlação de Pearson.

cov(col1, col2)

Calcula a covariância da amostra para as colunas fornecidas como um valor do tipo double.

crosstab(col1, col2)

Calcule uma tabela de frequência par a par das colunas fornecidas.

freqItems(cols, support)

Encontra itens frequentes em colunas, possivelmente com falsos positivos.

sampleBy(col, fractions, seed)

Retorna uma amostra estratificada sem reposição com base na fração fornecida em cada estrato.

Exemplos

quantis aproximados

Python
data = [(1,), (2,), (3,), (4,), (5,)]
df = spark.createDataFrame(data, ["values"])
df.stat.approxQuantile("values", [0.0, 0.5, 1.0], 0.05)
Output
[1.0, 3.0, 5.0]

Correlação

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

Covariância

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

tabulação cruzada

Python
df = spark.createDataFrame([(1, 11), (1, 11), (3, 10), (4, 8), (4, 8)], ["c1", "c2"])
df.stat.crosstab("c1", "c2").sort("c1_c2").show()
Output
+-----+---+---+---+
|c1_c2| 10| 11| 8|
+-----+---+---+---+
| 1| 0| 2| 0|
| 3| 1| 0| 0|
| 4| 0| 0| 2|
+-----+---+---+---+

Itens frequentes

Python
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()
Output
+------------+------------+
|c1_freqItems|c2_freqItems|
+------------+------------+
| [1, 3, 4]| [8, 10, 11]|
+------------+------------+

Amostra estratificada

Python
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()
Output
+---+-----+
|key|count|
+---+-----+
| 0| 4|
| 1| 9|
+---+-----+