14

Sparkに似たもの- キーでグループ化し、値でカウントするdf.series.value_counts()と、Spark でパンダの機能をエミュレートして次のことができます。

結果のオブジェクトは降順になるため、最初の要素が最も頻繁に発生する要素になります。デフォルトで NA 値を除外します。( http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.value_counts.html )

Spark のデータ フレームでこれをより適切に/より簡単に実現できないかどうか、私は興味があります。

4

1 に答える 1

16

あくまでも基本的な集計ですね。

df.groupBy($"value").count.orderBy($"count".desc)

パンダ:

import pandas as pd

pd.Series([1, 2, 2, 2, 3, 3, 4]).value_counts()
2    3
3    2
4    1
1    1
dtype: int64

スパーク SQL:

Seq(1, 2, 2, 2, 3, 3, 4).toDF("value")
  .groupBy($"value").count.orderBy($"count".desc)
+-----+-----+
|value|count|
+-----+-----+
|    2|    3|
|    3|    2|
|    1|    1|
|    4|    1|
+-----+-----+

追加のグループ化列 (「キー」など) を含めたい場合は、これらをgroupBy:

df.groupBy($"key", $"value").count.orderBy($"count".desc)
于 2016-11-21T17:36:16.163 に答える