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のフィルターの操作を行う方法を説明してきました。

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

よく読まれている記事

se-shikaku 1

  社内SEになるには資格って必要?社内SEでキャリアップするときにおすすめの資格は? 回答としては、 社内SEは、対人スキル、実務での対応力や最新情 ...

社内SEの仕事内容 2

  社内SEってどんな仕事なんだろ~ 検索しても転職サイトの記事ばかりでよく分からない・・   確かにそうですね。。実経験を基に、社内SE( ...

side-work-trial 3

  コロナで会社の経営も不安。。個人でお金稼ぎたいな~ 今、こう考えるサラリーマン、OLの方はごまんといると思います。   僕は、本業では社 ...

adsense-pass 4

【3記事で一発合格】Google AdSense申請に合格したブログ情報 こんにちは、いなサラ(@いなサラ|田舎の情シスサラリーマン)です。 2019年10月5 ...

-Python × Excel

© 2020 inasala note