[解決済み] PySparkのデータフレームで、各キーのパーセンタイルはどのように計算されますか?
2022-02-05 07:31:02
質問内容
x、y、zの3列からなるPySparkのデータフレームを持っています。
X はこのデータフレーム内で複数行を持つ可能性があります。x の各キーのパーセンタイルを個別に計算するにはどうすればよいですか?
+------+---------+------+
| Name| Role|Salary|
+------+---------+------+
| bob|Developer|125000|
| mark|Developer|108000|
| carl| Tester| 70000|
| carl|Developer|185000|
| carl| Tester| 65000|
| roman| Tester| 82000|
| simon|Developer| 98000|
| eric|Developer|144000|
|carlos| Tester| 75000|
| henry|Developer|110000|
+------+---------+------+
必要な出力
+------+---------+------+----------
| Name| Role|Salary| 50%|
+------+---------+------+----------
| bob|Developer|125000|117500.0 |
| mark|Developer|108000|117500.0 |
| carl| Tester| 70000|72500.0 |
| carl|Developer|185000|117500.0 |
| carl| Tester| 65000|72500.0 |
| roman| Tester| 82000|72500.0 |
| simon|Developer| 98000|117500.0 |
| eric|Developer|144000|117500.0 |
|carlos| Tester| 75000|72500.0 |
| henry|Developer|110000|117500.0 |
+------+---------+------+---------
解決方法は?
試す
groupby
+
F.expr
:
import pyspark.sql.functions as F
df1 = df.groupby('Role').agg(F.expr('percentile(Salary, array(0.25))')[0].alias('%25'),
F.expr('percentile(Salary, array(0.50))')[0].alias('%50'),
F.expr('percentile(Salary, array(0.75))')[0].alias('%75'))
df1.show()
出力します。
+---------+--------+--------+--------+
| Role| %25| %50| %75|
+---------+--------+--------+--------+
| Tester| 68750.0| 72500.0| 76750.0|
|Developer|108500.0|117500.0|139250.0|
+---------+--------+--------+--------+
今、あなたが参加するのは
df1
を元のデータフレームに追加します。
df.join(df1, on='Role', how='left').show()
出力します。
+---------+------+------+--------+--------+--------+
| Role| Name|Salary| %25| %50| %75|
+---------+------+------+--------+--------+--------+
| Tester| carl| 70000| 68750.0| 72500.0| 76750.0|
| Tester| carl| 65000| 68750.0| 72500.0| 76750.0|
| Tester| roman| 82000| 68750.0| 72500.0| 76750.0|
| Tester|carlos| 75000| 68750.0| 72500.0| 76750.0|
|Developer| bob|125000|108500.0|117500.0|139250.0|
|Developer| mark|108000|108500.0|117500.0|139250.0|
|Developer| carl|185000|108500.0|117500.0|139250.0|
|Developer| simon| 98000|108500.0|117500.0|139250.0|
|Developer| eric|144000|108500.0|117500.0|139250.0|
|Developer| henry|110000|108500.0|117500.0|139250.0|
+---------+------+------+--------+--------+--------+
関連
-
[解決済み] Apache SparkとAkkaの比較【終了しました
-
[解決済み] spark 2.4.4 をインストールした後に pyspark を実行しようとすると、「TypeError: an integer is required (got type bytes)」というエラーが発生するのを修正する方法
-
[解決済み] pyspark : NameError: name 'spark' is not defined.
-
[解決済み] スパークジョブとは?
-
[解決済み] spark.yarn.executor.memoryOverhead "の設定値?
-
[解決済み] TypeError: 'Column' オブジェクトは WithColumn を使用して呼び出すことができません。
-
[解決済み】pysparkでデータフレームの列名を変更する方法は?
-
[解決済み] Spark DataFrameに定数カラムを追加する方法は?
-
[解決済み] Spark DataFrameに新しいカラムを追加するにはどうすればよいですか(PySparkを使用)?
-
[解決済み] Pysparkのデータフレーム列をNone値でフィルタリングする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スパーク "プランの文字列表現が大きすぎたため、切り捨てました。" 手動で作成した集計式を使用した場合の警告
-
[解決済み] Spark が "java.net.URISyntaxException" を報告するのはなぜですか?DataFrameを使用する際に「java.net.URIStyntaxException: Relative path in absolute URI」と表示されるのはなぜですか?
-
[解決済み] Apache SparkとAkkaの比較【終了しました
-
[解決済み] spark 2.4.4 をインストールした後に pyspark を実行しようとすると、「TypeError: an integer is required (got type bytes)」というエラーが発生するのを修正する方法
-
[解決済み] Sparkのバージョンを確認する方法【終了しました
-
[解決済み] spark.yarn.executor.memoryOverhead "の設定値?
-
[解決済み] 実行中のSparkアプリケーションを終了させるには?
-
[解決済み] TypeError: 'Column' オブジェクトは WithColumn を使用して呼び出すことができません。
-
[解決済み] プロパティspark.yarn.jars - どのようにそれに対処するのですか?
-
[解決済み] 複数のテキストファイルを1つのRDDに読み込むには?