Python

PySparkで条件による行の抽出操作〜filter

条件による行の抽出操作はデータフレームを扱う時によくやることですよね。

今回はPySparkでSpark DataFrameの行を条件によって抽出する方法を紹介します

 

filterで条件による行の抽出

Pandasデータフレームで行を抽出したいときは例えば、df[df["A"]=="aa"]みたいな感じでできましたね。

一応説明しておくと、データフレームdfのA列の値が"aa"のレコード(行)を抽出するコードです。

PySparkでも同じやろと思ってやってみると、見事にエラーがでます。

PySparkではfilterメソッドを使う必要があるんです。

例えば、このようなデータフレームがあるとします。

 

 

このときにUnitPrice列が30より大きい行を抽出してみましょう。

それはこのように、df.filterのカッコの中にデータフレームの条件を入力する形になります。

 

 

 

ただ、行を表示するだけでなく、行数をカウントしたい場合は、抽出したあとに.count()をつければOKです。
 

 

 

ちょっと複雑な処理で集計した値に対して条件を設定する場合は、このように行うこともできます。

下の例は、Desctiption列の値でgroupbyをしてカウントし、そのカウント数が1000以上の場合にソートして表示するというものです。

 

 

 

この場合は、filterのカッコの中はデータフレームdfの条件にはならず、前のカウント結果を使うので、filter("count>=1000")のようになっています。

データフレームの処理はよくやることだと思いますので、PySparkでもうまく扱えるとよいですね!

おすすめ記事

1

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

2

こんにちわ、さとしです! 気がつけばこのデータサイエンティスト転職から、1年が経とうとしています。 今はご時世的に外にも出られず、変化があまりない生活を送ったせいもあってか、なんかあっという間に1年が ...

3

データサイエンティストに転職して1年が経ち、いろいろな業務を経験させてもらいつつ、自分でもある程度本を読んできました。 仕事の話は下記の記事で書きましたが、自分で読んだ本については書いていないのでこの ...

-Python

Copyright© さとぶろぐ , 2023 All Rights Reserved Powered by AFFINGER5.