將 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()
函式、條件語句等。