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)
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
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.
import org.Apache.spark.sql.functions.countDistinct
df.groupBy("a").agg(countDistinct("s")).collect()
df.select("some_column").distinct.count