pythonコード プログラミング系 pandas python データサイエンス 非エンジニア向け

【Python Coding】pandasの「isin」を使って条件抽出をする

「pandasの “isin” ってどうやって使えばいいのか」

今回はそんな方向けにpythonのpandasにある機能「isin」を使って条件抽出をする方法を紹介していきます

pandasのデータフレームから欲しいデータを抽出するような場面で使えるので、データ分析に役立てたい方は参考にしてみてください。今回はどちらかというと中上級者向けの内容になりますが、初心者の方でもわかりやすいように説明していくので、基本的な部分(基本編)だけでも抑えるようにしてみてください。

【こんな人に読んで欲しい記事です】

● pandasの「isin」の概要や使い方を知りたい方

● データフレームから条件に合致するデータを抽出出来るようになりたい方

【pandas】「isin」を使って条件抽出をする方法|基本編

基本編では以下のステップで紹介していきます。

 pandas「isin」の使い方手順|基本編

【ステップ①】 必要ライブラリのインポート

【ステップ②】 利用データの作成

【ステップ③】 isinはbool型を返すことを理解する

【ステップ④】 isinの使い方を知る


【ステップ①】 必要ライブラリのインポート


まず最初に、今回使うライブラリをインポートしておきます。
今回はpandasだけ使っていくので、以下ライブラリのインポートをしておいてください。

今回使うライブラリのインポート

【ステップ②】 利用データの作成


基礎編では、手元にあるタイタニックのデータを使っていきたいと思います。

今回は、pandasの「isin」の使い方を理解することが目的なので、データ自体は何でもOKです。
手元にあるデータもしくはオリジナルデータを作って、挙動を確認してみてください。

基礎で使うデータセット(タイタニック)

上記データを用いて、「isin」のコードを確認していきます。


【ステップ③】 isinはbool型を返すことを理解する


ステップ④でisinの使い方を紹介する前に、これだけは知っておいて欲しい点をお伝えしておきます。
それは「isin」を使った結果は「bool型」を返すということです。

ある値がデータフレームやシリーズの中にあるかを確かめた結果、その値が存在すれば「True」を返し、その値が存在しなければ「False」を返すということです。

これを頭に入れた上で、実際の使い方を見ていきましょう。


【ステップ④】 isinの使い方を知る


タイタニックデータにはいくつかカラムがありますが、まず手始めに「男性」のデータが含まれているかを確認してみます。具体的なコードは以下のようになります。

isinを使って「男性」が含まれているかを確認した結果

上記のようにコードを書くことで、
・ 男性(male)が含まれている行は「True」を返す
・ 男性(male)が含まれていない行(=女性/Female)は「False」を返す

ということになります。

これを使って、男性だけのデータを表示させることも可能です。

isinを使って「男性」のデータだけを表示した結果

同じように、別のカラムを使ってデータを抽出してみます。
今度は、生存者を意味する「Survived」が「1」のデータを取得していきます。

isinを使って「生存者」が含まれているかを確認した結果

先ほどは文字列を指定しましたが、今回は数値を指定するだけの違いとなります。
結果、「True」「False」が表示されているので、先ほどと同様に「True」データのみを表示させましょう。

isinを使って「生存者」のデータだけを表示した結果

「Survived」がすべて「1」になっているのがわかりますね。

以上が、pandasの「isin」に関する基本的な使い方となります。

「条件式を用いる方法」や「in演算子を用いる方法」と実質的に同じ効果となりますが、色々な方法を比較検討して自分が使いやすい方法を用いるようにしてみてください。

【pandas】「isin」を使って条件抽出をする方法|応用編

最後に、個人的によく使う方法を紹介しておきたいと思います。

応用編という程ではないかもしれませんが、「こんな使い方もあるのね」と思って頂ければうれしいです。

具体的にどのような場面で使うかというと、時系列データを扱うようなケースです。


飲食店を経営する会社から「販売量予測」を依頼された


今回はこういったケースを想定してみたいと思います。

需要予測をするには複合的な要因を紐解く必要があるのでかなり難しいですが、需要予測に影響を与えている要因の一つとして「平日か週末か」が考えられます。週末だと休みの方が多いので、相対的に需要は増える傾向にありますよね。

そこで今回は、日付データを参照しつつ「週末フラグ」を作成することを目的に「isin」を使ってみたいと思います。まずは、以下のように日付データを用意しておきます。

日付データを作成

上記データをもとに新しい列を作って、週末である「Saturday」や「Sunday」にフラグ立てをしていくイメージです。「isin」の使い方を理解していれば、以下のようなコードで実現することが出来ます。

isinを用いて、週末フラグ(weekend_flag)を作成した結果

結果、週末(Saturday / Sunday)の部分に「1」のフラグを立てることが出来ましたね。
あとはこの特徴量を使って、モデル構築やデータ予測をしていくことになります。

上記は一例ですが、このような使い方も出来るという紹介でした。

さいごに

今回は、pythonのpandasにある「isin」を用いてデータフレームから条件に合致するデータを抽出する方法を紹介してきました。

記事内でもお伝えしましたが、「isin」と同じような結果となる書き方はあるので、自分の使いやすい方法を是非見つけてみてください。

最後に、pandasを使ったデータ分析や実務力を身に付けるためのちょっとしたハックを紹介しておきます。
データ分析を向上させる方法としては、Kaggleなどのデータコンペに参加する方法が一般的ですが、僕が個人で案件を獲得していた時期に使っていたのがAI専門エージェント「BIGDATA NAVI」の活用でした。

pandasに限らず、pythonを使ったデータ分析案件や機械学習・人工知能関係の案件も豊富で高単価なので、実務経験を積みたい方や将来的に副業/フリーランスを視野に入れている方にはオススメです。

無料カウンセリングを通じて案件獲得も出来るので、自分のレベルに合った案件を通じた更なるレベルアップを目指す方法としてかなり裏技的に使えると思います。

今回の記事がデータ分析向上の助けになればうれしいです。それではまた!