Python

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

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

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

データサイエンティストとして3年間で3社経験した僕の転職体験談まとめ

こんにちわ、サトシです。33歳です。 今回は、データサイエンティストの3年間に3社で働いた僕が、データサイエンティストとしての転職活動についてまとめて書きたいと思います。 これまでSE→博士研究員→ポ ...

 

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でもうまく扱えるとよいですね!

 

PySparkの勉強法

もしPySparkをちゃんと学びたい方はUdemyのコースがおすすめです。日本語の書籍は古いやつしかないからです。。。

【Udemy】PySparkによる大規模データ処理手法と機械学習

英語でもよい方は英語のこのあたりがわかりやすいです。

おすすめ記事

1

こんにちわ、サトシです。33歳です。 今回は、データサイエンティストの3年間に3社で働いた僕が、データサイエンティストとしての転職活動についてまとめて書きたいと思います。 これまでSE→博士研究員→ポ ...

2

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

3

こんにちわ、サトシです。 今回は、企業でデータサイエンティストとして働いていた僕が、フリーランスとしてどのような手順で独立していったかについて書いていきたいと思います。 僕はSIer SE→博士過程→ ...

-Python

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