Как подсчитать вхождения каждого отдельного значения для каждого столбца в кадре данных?

edf.select("x").distinct.show() показывает различные значения, которые присутствуют вx столбецedf DataFrame.

Есть ли эффективный метод, чтобы также показать, сколько раз эти отдельные значения встречаются в кадре данных? (рассчитывать для каждого отдельного значения)

Ответы на вопрос(4)

Решение Вопроса

countDistinct вероятно, первый выбор:


df.agg(countDistinct("some_column"))

Если скорость важнее точности, которую вы можете рассмотретьapprox_count_distinct (approxCountDistinct в Spark 1.x):

import org.apache.spark.sql.functions.approx_count_distinct

df.agg(approx_count_distinct("some_column"))

Чтобы получить значения и цифры:

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

В SQL (spark-sql):

SELECT COUNT(DISTINCT some_column) FROM df

а также

SELECT approx_count_distinct(some_column) FROM df

Еще один вариант, не прибегая к функциям sql

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

шоу напечатает различные значения и их вхождения. Результат без показа будет кадром данных.

df.select("some_column").distinct.count
 Dan Ciborowski - MSFT19 дек. 2017 г., 15:57
Это говорит вам, как подсчитать каждое отдельное значение? Я думаю, это скажет вам, что у вас есть значения X, а не что у Val1 есть A, у Val2 есть B, .. у ValX есть C?
 Abu Shoeb20 мая 2019 г., 06:21
Это слишком медленно для вычисления, лучшая ставка используетcountDistinct
 Adam Arold10 дек. 2018 г., 15:48
Это не ответ на вопрос.

a"). agg (countDistinct ("s")). collect ()

 chevybow16 авг. 2018 г., 05:52
Можете ли вы объяснить свой ответ дальше о том, как это работает?

Ваш ответ на вопрос