Lambda 関数を Pandas DataFrame に適用する

Samreena Aslam 2023年1月30日
  1. ラムダ関数
  2. DataFrame.assign() メソッドを使用して単一の列に Lambda 関数を適用する
  3. DataFrame.assign() メソッドを使用して複数の列に Lambda 関数を適用する
  4. DataFrame.apply() メソッドを使用して単一行に Lambda 関数を適用する
  5. Lambda 関数を適用してデータをフィルタリングする
  6. Lambda 関数を適用して map() 関数を使用する
  7. Lambda 関数を適用して if-else ステートメントを使用する
  8. まとめ
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 のデータフレームシリーズでのラムダ関数のさまざまなアプリケーションを示しました。

関連記事 - Pandas DataFrame