web-dev-qa-db-fra.com

Comment compter les occurrences de chaque valeur distincte pour chaque colonne d'une trame de données?

edf.select("x").distinct.show() affiche les valeurs distinctes présentes dans la colonne x de edf DataFrame.

Existe-t-il une méthode efficace pour montrer également le nombre de fois où ces valeurs distinctes se produisent dans la trame de données? (compte pour chaque valeur distincte)

17
Leothorn

countDistinct est probablement le premier choix:

import org.Apache.spark.sql.functions.countDistinct

df.agg(countDistinct("some_column"))

Si la vitesse est plus importante que la précision, vous pouvez envisager approx_count_distinct (approxCountDistinct in Spark 1.x):

import org.Apache.spark.sql.functions.approx_count_distinct

df.agg(approx_count_distinct("some_column"))

Pour obtenir des valeurs et des nombres:

df.groupBy("some_column").count()

En SQL (spark-sql):

SELECT COUNT(DISTINCT some_column) FROM df

et

SELECT approx_count_distinct(some_column) FROM df
38
zero323

Une autre option sans recourir aux fonctions SQL

df.groupBy('your_column_name').count().show()

show affichera les différentes valeurs et leurs occurrences. Le résultat sans spectacle sera une trame de données.

2
Antoni
import org.Apache.spark.sql.functions.countDistinct

df.groupBy("a").agg(countDistinct("s")).collect()
1
user10232195
df.select("some_column").distinct.count
1
shengshan zhang