將 Lambda 函式應用於 Pandas DataFrame
- Lambda 函式
-
使用
DataFrame.assign()
方法在單個列上應用 Lambda 函式 -
使用
DataFrame.assign()
方法在多列上應用 Lambda 函式 -
使用
DataFrame.apply()
方法在單行上應用 Lambda 函式 - 通過應用 Lambda 函式過濾資料
-
通過應用 Lambda 函式來使用
map()
函式 -
通過應用 Lambda 函式使用
if-else
語句 - まとめ
lambda
函式解決了 Pandas python 中的各種資料科學問題。我們可以在 pandas DataFrame
中的行和列上應用 lambda 函式。
我們將在本文中探討如何將 lambda 函式應用於 pandas DataFrame
。
lambda 函式在 pandas DataFrame
上有多種應用,例如 filter()
、map()
和 條件語句
,我們將在本文中通過一些示例進行解釋。
Lambda 函式
Lambda 函式包含一個表示式。
Lambda
函式是一個小函式,也可以用作匿名函式,這意味著它不需要任何名稱。lambda
函式對於用更少的程式碼解決小問題很有用。
以下語法用於在 pandas DataFrame
上應用 lambda 函式:
dataframe.apply(lambda x: x + 2)
使用 DataFrame.assign()
方法在單個列上應用 Lambda 函式
dataframe.assign()
方法將 Lambda 函式應用於單個列。讓我們舉個例子。
在下面的示例中,我們在 Students Marks
列上應用了 lambda 函式。應用 Lambda 函式後,計算學生百分比並將其儲存在新的百分比
列中。
請參閱以下實現以在 Pandas DataFrame
中的單個列上應用 lambda 函式。
示例程式碼:
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
。我們在 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 函式應用於單行。
例如,我們將 lambda 函式應用於單行 axis=1
。使用 lambda 函式,我們將每個人的月收入
增加了 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 函式。Lambda 函式適用於過濾給定系列後返回特定結果的 pandas 系列。
在下面的示例中,我們在 Age
列上應用了 lambda 函式並過濾了 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()
和 lambda 函式。
lambda 函式應用於系列以根據輸入對應關係對映系列。此功能對於用其他值替換或替換系列很有用。
當我們使用 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
語句
我們還可以使用 lambda 函式對 pandas dataframes
應用條件語句。
在以下示例中,我們在 lambda 函式中使用了條件語句。我們將條件應用於 Monthly Income
列。
如果月收入大於等於 5000,在 Category
欄內新增 Stable
;否則,新增 UnStable
。
示例程式碼:
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 DataFrame
上應用 Lambda 函式的各種方法。我們已經看到如何使用 dataframe.assign()
和 dataframe.apply()
方法在行和列上應用 lambda 函式。
我們在 pandas DataFrame
系列上演示了 lambda 函式的不同應用,例如 filter()
函式、map()
函式、條件語句等。