Python × Excel

PythonでExcelのフィルター(完全一致、部分一致、複数条件)を行う方法

2020-10-20

python-excel-filter

本記事では、PythonでExcel のフィルター(完全一致、部分一致、複数条件)を行う方法をご紹介します。

Pythonの実行環境

今回は、以下の実行環境でプログラムを実行しています。

・Python 3.7.6
・Jupyterlab 1.2.6
・Pandas:1.1.2

テストデータは、次のような予算管理表を使います。

ファイル名は「テストデータ.xlsx」で、シート名は「予算管理表」です。

■予算管理表

テストデータ

 

本記事で、利用するライブラリはPandasです。
そして、テストデータの予算管理表をdfとして読み込んでおきます。

import pandas as pd
df = pd.read_excel('テストデータ.xlsx', sheet_name = '予算管理表')

 

※本記事では、Pythonのコードの下のコメントアウトは、出力結果を示しています。

 

PythonでExcelのフィルターの操作を行う方法(完全一致)

まずは、もっとも基本的な1つのフィルターで完全一致の値を抽出するフィルターをみていきます。

filter_syoumou = df['費目1'] == '1-消耗品費'
df[filter_syoumou]

まず1行目では、filter_syoumouとしてフィルターを定義しています。

「費目1」列で、値が '1-消耗品費' となるものを抽出しています。

この定義したフィルターを、2行目のようにdf[ ]の中に入れると、フィルターが実現できます。

結果は次の通りとなります。

フィルター1

 

PythonでExcelのフィルターの操作を行う方法(部分一致)

次は、部分一致の条件でフィルターをする方法をみていきます。

これもExcelでも頻繁に使う機能ですね。

例として、テストデータの「件名」列で、’改修’ という単語を含む行を抽出してみます。

filter_kaisyu = df['件名'].str.contains('改修')
df[filter_kaisyu]

これも先ほどと同様に、まずは、filter_kaisyuとしてフィルターを定義します。

定義の仕方は先ほどと異なり、str.contains()というものを使います。

これは、文字列の中で、()内の文字列を含むとTrueにする関数です。ぜひ覚えておきましょう。

結果は次の通りとなり、「件名」列で '改修' を含む行が抽出されています。

フィルター2

 

またこの方法は、複数の文字列の部分一致をOR条件としてフィルターすることができます。

filter_kaisyu_torikae = df['件名'].str.contains('改修|取替')
df[filter_kaisyu_torikae]

「改修」もしくは「取替」を含む行が抽出されました。

フィルター3

この方法は、OR条件で抽出されることを忘れないでください。

 

 

PythonでExcelのフィルターの操作を行う方法(数値の大小条件)

ここまでは文字列のフィルターでしたが、次は数値の大小の条件に基づくフィルターをみていきます。

「2021年度」列の金額が2,000以上になる行を抽出してみます。

filter_over_2000 = df['2021年度'] >= 2000
df[filter_over_2000]

 

これは、書き方としても不等号を使うだけなので、非常に分かりやすいものではないでしょうか。

結果は、「2021年度」列の金額が、2,000以上の行のみがフィルターされていることが分かります。

フィルター4

 

PythonでExcelのフィルターの操作を行う方法(複数フィルターの組み合わせ)

最後に、複数のフィルターの組み合わせる方法をみていきます。

これまで定義してきたフィルターは、実は、AND条件またはOR条件で組み合わせることができます。

例えば、「費目1」列が '1-消耗品費' であり、かつ、「2021年度」列の金額が2,000以上になるフィルターをみてみます。

filter_syoumou_and_2000 = filter_syoumou & filter_over_2000
df[filter_syoumou_and_2000]

フィルターを&で繋げることで、AND条件で、フィルターが適用されていることが分かります。

フィルター5

OR条件とする場合は、& を | に変えるだけでOKです。

filter_syoumou_or_2000 = filter_syoumou | filter_over_2000
df[filter_syoumou_or_2000]

 

OR条件でフィルターされていることが分かります。

フィルター6

 

以上、PythonでExcelのフィルターの操作を行う方法を説明してきました。

最後まで読んでいただき、ありがとうございました。

よく読まれている記事

insta-auto-post 1

  インスタって自動で投稿できないのかな。いつもスマホで投稿するの大変だし・・ Pythonを使えば、インスタで自動で投稿できるよ!!特別に紹介するね ...

python-consult_1 2

  AI・機械学習、データサイエンティスト、、やっぱりこれからの時代Pythonは勉強すべきだよね!   その通り。Pythonは今後も伸び ...

【保存版】PythonでできるExcel操作のまとめ一覧 3

  Excelで作業するのって大変だな〜 なにか楽な方法ないかな〜   Excelの集計や単純作業は、Pythonで楽にできるよ!!この一覧 ...

python-works 4

ここでは、サイト管理者のいなサラがこれまでPythonで作ったものをご紹介します。 以下のリンクで、実際の作り方やソースコードを公開しているので、ぜひ参考にして ...

-Python × Excel

© 2021 inasala note