Python × Excel

PythonでExcelのIF関数のように条件分岐で値を設定する方法(多値分類もあり)

本記事では、PythonでExcelのIF関数のように条件分岐で値を設定する方法をご紹介します。

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でExcelのIF関数のように条件分岐で値を設定する方法(2分類)

まずは、次の条件の2分類を考えます。

・「2021年度」列が、5000越の場合は、「大型件名」とする

・それ以外は、「小型件名」とする

 

これをExcelで行うと、IF関数を使って、次のようになります。

Excel_if_2分類

 

これをPythonで書くと次のようになります。

df['件名分類(2分類)'] = df['2021年度'].apply(lambda x : '大型件名' if x>5000 else '小型件名')

 

このように、apply()とlambda関数、IF文の組み合わせで書けます

 

python_if_2分類

 

結果は、Excelと同じになります。

 

ただ、apply()とlambda関数、IF文の組み合わせでは、2分類までしかできません。elifが使えないのです。。

次は、3分類以上に分類する方法をみていきます。

 

PythonでExcelのIF関数のように条件分岐で値を設定する方法(多値分類)

ここでは、次の条件の3分類を考えます。

・「2021年度」列が、5000越えの場合は、「大型件名」とする

・「2021年度」列が、5000以下で2000越えの場合は、「中型件名」とする

・それ以外は、「小型件名」とする

 

これをExcelで行うと、IF関数を入れ子にして次のように書きます。

Excel_if_3分類

 

これによって、「件名番号」列が'1006'が「中型件名」となり、3分類になりました。

 

本記事の最重要箇所


Pythonでは、自分で関数を作って、map()を使って、3分類以上の条件分岐ができるようになります。

 

まずは、次のように3分類する関数を作ります。

 

def check_kingaku(x):
    '''
    金額の値によって「大型件名」、「中型件名」、「小型件名」を分類する
    
    Parameter
    -------------------
        x : 金額

    Return
    -------------------
        xが5000越えの場合:'大型件名'
        xが5000以下で2000越えの場合:'中型件名'
        xが2000以下の場合:'小型件名'
    
    '''

    if x > 5000:
        return '大型件名'
    elif x > 2000:
        return '中型件名'
    else:
        return '小型件名'

 

関数の処理概要は、上のコメントの通りです。

IF文にelifを使って、条件分岐を増やしたものになります。

次に、この関数を列のそれぞれの値に適用するために、map()を使います。

map()は次のように書きます。

 

df['件名分類(3分類)'] = df['2021年度'].map(check_kingaku)

 

列を指定して、map()の引数に自分で作った関数名を入れるだけです。

この結果は、次の通りになります。

python_if_3分類
Excelの結果と同じように、「件名番号」列が'1006'が「中型件名」となり、3分類になっていることがわかります。

 

 

以上、PythonでExcelのIF関数のように条件分岐で値を設定する方法を、多値分類も含めて説明してきました。

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

 

よく読まれている記事

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