python pythonコード集 pandas python データサイエンス 非エンジニア向け

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

こんにちは、TAKです。
今回は、pythonのpandasにある機能「isin」を使って条件抽出をする方法を紹介していきます。

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

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

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

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

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

必要ライブラリのインポート(共通)

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

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

利用データの作成

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

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

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

「isin」は「bool型」を返す

具体的な使い方やコードを紹介する前に、これだけは知っておいて欲しい点をお伝えしておきます。
それは、「isin」を使った結果は「Bool型」であるということです。

ある値がデータフレームやシリーズの中にあるかを確かめた結果、その値が存在すれば「True」を返し、その値が存在しなければ「False」を返すということです。これを頭に入れた上で、実際の使い方を見ていきましょう。

「isin」の使い方

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

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

上記のようにコードを書くことで、「男性(male)」が含まれている行には「True」、含まれていない(=女性(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」と同じような結果となる書き方はあるので、自分の使いやすい方法を是非見つけてみてください。

今回の記事がデータ分析向上の助けになればうれしいです。
じゃあまたね~。