Поделиться через


mode

Возвращает наиболее частое значение в группе.

Синтаксис

from pyspark.sql import functions as sf

sf.mode(col, deterministic=False)

Параметры

Параметр Тип Description
col pyspark.sql.Column или имя столбца Целевой столбец для вычисления.
deterministic bool, необязательный Если имеется несколько одинаковых результатов, возвращается наименьшее значение (по умолчанию — false).

Возвраты

pyspark.sql.Column: наиболее частое значение в группе.

Примеры

from pyspark.sql import functions as sf
df = spark.createDataFrame([
    ("Java", 2012, 20000), ("dotNET", 2012, 5000),
    ("Java", 2012, 20000), ("dotNET", 2012, 5000),
    ("dotNET", 2013, 48000), ("Java", 2013, 30000)],
    schema=("course", "year", "earnings"))
df.groupby("course").agg(sf.mode("year")).sort("course").show()
+------+----------+
|course|mode(year)|
+------+----------+
|  Java|      2012|
|dotNET|      2012|
+------+----------+

Если несколько значений имеют одну и ту же максимальную частоту, то возвращается любой из значений, если детерминированный имеет значение false или не определен, или наименьшее значение возвращается, если детерминированное значение имеет значение true.

from pyspark.sql import functions as sf
df = spark.createDataFrame([(-10,), (0,), (10,)], ["col"])
df.select(sf.mode("col", True)).show()
+---------------------------------------+
|mode() WITHIN GROUP (ORDER BY col DESC)|
+---------------------------------------+
|                                    -10|
+---------------------------------------+