HOWTO · Pandas

Lambda 関数を Pandas DataFrame に適用する

このガイドでは、DataFrame.assign()メソッドと DataFrame.apply()メソッドを使用して Lambda 関数を Pandas DataFrame に適用する方法について説明します。

このページの内容

lambda 関数は、Pandaspython のさまざまなデータサイエンスの問題を解決します。Pandas データフレームの行と列の両方にラムダ関数を適用できます。

この記事では、ラムダ関数を Pandas データフレームに適用する方法について説明します。

PandasDataFrame には、filter()map()条件付きステートメントなどのラムダ関数のアプリケーションがいくつかあります。これらは、この記事のいくつかの例を使用して説明します。

ラムダ関数

Lambda 関数には単一の式が含まれています。

Lambda 関数は、匿名関数としても使用できる小さな関数です。つまり、名前は必要ありません。lambda 関数は、少ないコードで小さな問題を解決するのに役立ちます。

次の構文は、Pandas データフレームにラムダ関数を適用するために使用されます。

dataframe.apply(lambda x: x + 2)

DataFrame.assign() メソッドを使用して単一の列に Lambda 関数を適用する

dataframe.assign() メソッドは、Lambda 関数を単一の列に適用します。例を見てみましょう。

次の例では、Students Marks 列にラムダ関数を適用しています。Lambda 関数を適用した後、学生のパーセンテージが計算され、新しい Percentage 列に保存されます。

Pandas データフレームの単一の列にラムダ関数を適用するには、次の実装を参照してください。

サンプルコード:

import pandas as pd

# initialization of list
students_record = [
    ["Samreena", 900],
    ["Mehwish", 750],
    ["Asif", 895],
    ["Mirha", 800],
    ["Affan", 850],
    ["Raees", 950],
]

# pandas dataframe creation
dataframe = pd.DataFrame(students_record, columns=["Student Names", "Student Marks"])

# using Lambda function
dataframe1 = dataframe.assign(Percentage=lambda x: (x["Student Marks"] / 1000 * 100))

# display dataframe
print(dataframe1)

出力:

	Student Names	Student Marks	Percentage
0	Samreena	             900	90.0
1	Mehwish	                 750	75.0
2	Asif	                 895	89.5
3	Mirha	                 800	80.0
4	Affan	                 850	85.0
5	Raees	                 950	95.0

DataFrame.assign() メソッドを使用して複数の列に Lambda 関数を適用する

Pandas DataFramedataframe.assign() メソッドを使用して、複数の列に Lambda 関数を適用することもできます。

たとえば、Student NamesComputerMath、および Physics の 4つの列があります。ComputerMathPhysics などの複数のサブジェクト列に Lambda 関数を適用して、Marks_Obtained 列に格納されている取得されたマークを計算しました。

次の例を実装します。

サンプルコード:

import pandas as pd

# nested list initialization
values_list = [
    ["Samreena", 85, 75, 100],
    ["Mehwish", 90, 75, 90],
    ["Asif", 95, 82, 80],
    ["Mirha", 75, 88, 68],
    ["Affan", 80, 63, 70],
    ["Raees", 91, 64, 90],
]

# pandas dataframe creation
df = pd.DataFrame(values_list, columns=["Student Names", "Computer", "Math", "Physics"])

# applying Lambda function

dataframe = df.assign(
    Marks_Obtained=lambda x: (x["Computer"] + x["Math"] + x["Physics"])
)

# display dataframe
print(dataframe)

出力:

Student Names	Computer	Math	Physics	 Marks_Obtained
0	Samreena	85	        75	      100	 260
1	Mehwish	    90	        75	       90	 255
2	Asif	    95	        82	       80	 257
3	Mirha	    75	        88	       68	 231
4	Affan	    80	        63	       70	 213
5	Raees	    91	        64	       90	 245  

DataFrame.apply() メソッドを使用して単一行に Lambda 関数を適用する

dataframe.apply() メソッドは、Lambda 関数を単一の行に適用します。

たとえば、ラムダ関数を単一行 axis=1 に適用しました。ラムダ関数を使用して、各人の月収を 1000 ずつ増やしました。

サンプルコード:

import pandas as pd

df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
        "Age": [20, 25, 15, 10, 30],
        "Monthly Income": [4000, 6000, 5000, 2000, 8000],
    }
)
df["Monthly Income"] = df.apply(lambda x: x["Monthly Income"] + 1000, axis=1)
print(df)

出力:

	ID	Names	    Age	 Monthly Income
0	1	Samreena	 20	 5000
1	2	Asif	     25	 7000
2	3	Mirha	     15	 6000
3	4	Affan	     10	 3000
4	5	Mahwish	     30	 9000

Lambda 関数を適用してデータをフィルタリングする

Lambda 関数を適用して、目的のデータをフィルタリングすることもできます。

filter() 関数は、Pandas シリーズとラムダ関数を取ります。Lambda 関数は、指定されたシリーズをフィルタリングした後に特定の結果を返す Pandas シリーズに適用されます。

次の例では、Age 列にラムダ関数を適用し、25 歳未満の人々の年齢をフィルタリングしました。

サンプルコード:

import pandas as pd

df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
        "Age": [20, 25, 15, 10, 30],
        "Monthly Income": [4000, 6000, 5000, 2000, 8000],
    }
)
print(list(filter(lambda x: x < 25, df["Age"])))

出力:

[20, 15, 10]

Lambda 関数を適用して map() 関数を使用する

map() 関数とラムダ関数を使用できます。

ラムダ関数はシリーズに適用され、入力対応に基づいてシリーズをマップします。この関数は、系列を他の値に置き換えたり、置き換えたりするのに役立ちます。

map() 関数を使用すると、入力サイズは出力サイズと等しくなります。map() 関数の概念を理解するには、次のソースコードの実装を参照してください。

サンプルコード:

import pandas as pd

df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
        "Age": [20, 25, 15, 10, 30],
        "Monthly Income": [4000, 6000, 5000, 2000, 8000],
    }
)
df["Monthly Income"] = list(map(lambda x: int(x + x * 0.5), df["Monthly Income"]))
print(df)

出力:

    ID	  Names	    Age	 Monthly Income
0	1	Samreena	20	6000
1	2	Asif	    25	9000
2	3	Mirha	    15	7500
3	4	Affan	    10	3000
4	5	Mahwish	    30	12000

Lambda 関数を適用して if-else ステートメントを使用する

ラムダ関数を使用して、Pandas データフレームに条件ステートメントを適用することもできます。

次の例では、ラムダ関数内で条件ステートメントを使用しました。月収列に条件を適用しました。

月収が 5000 以上の場合は、[カテゴリ]列に[安定]を追加します。それ以外の場合は、不安定を追加します。

サンプルコード:

import pandas as pd

df = pd.DataFrame(
    {
        "ID": [1, 2, 3, 4, 5],
        "Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
        "Age": [20, 25, 15, 10, 30],
        "Monthly Income": [4000, 6000, 5000, 2000, 8000],
    }
)
df["Category"] = df["Monthly Income"].apply(
    lambda x: "Stable" if x >= 5000 else "UnStable"
)
print(df)

出力:

    ID	 Names	    Age	 Monthly Income	 Category
0	1	Samreena	20	    4000	    UnStable
1	2	Asif	    25	    6000	    Stable
2	3	Mirha	    15	    5000	    Stable
3	4	Affan	    10	    2000	    UnStable
4	5	Mahwish	    30	    8000	    Stable

まとめ

Pandas データフレームに Lambda 関数を適用するためのさまざまなメソッドを実装しました。dataframe.assign() および dataframe.apply() メソッドを使用して、行と列にラムダ関数を適用する方法を見てきました。

filter() 関数、map() 関数、条件ステートメントなど、Pandas のデータフレームシリーズでのラムダ関数のさまざまなアプリケーションを示しました。