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関数のように条件分岐で値を設定する方法を、多値分類も含めて説明してきました。

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

 

よく読まれている記事

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