Lambda 関数を Pandas DataFrame に適用する
- ラムダ関数
-
DataFrame.assign()
メソッドを使用して単一の列に Lambda 関数を適用する -
DataFrame.assign()
メソッドを使用して複数の列に Lambda 関数を適用する -
DataFrame.apply()
メソッドを使用して単一行に Lambda 関数を適用する - Lambda 関数を適用してデータをフィルタリングする
-
Lambda 関数を適用して
map()
関数を使用する -
Lambda 関数を適用して
if-else
ステートメントを使用する - まとめ
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 DataFrame
の dataframe.assign()
メソッドを使用して、複数の列に Lambda 関数を適用することもできます。
たとえば、Student Names
、Computer
、Math
、および Physics
の 4つの列があります。Computer
、Math
、Physics
などの複数のサブジェクト列に 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 のデータフレーム
シリーズでのラムダ関数のさまざまなアプリケーションを示しました。