Many times during data analysis, we need to create our own custom functions to perform the task. This can be done using Lambda functions in Python. Learning to create your own function in Python can be super helpful and it is very easy. It can be created in 2 ways:
- Normal Functions
- Lambda Functions
We use lambda functions when we require a nameless function. It is generally passed as an argument to some other python in-built functions.
Lambda Functions (Anonymous Function)
lambda arguments: expression
- Lambda functions are used when we want to pass a function for a short period of time.
- Lambda Functions are passed as an argument to other python functions.
- They can have many arguments but evaluate and return only one expression.
- There’s no need to use
returnstatement in the lambda function.
#Normal Function - We define normal function with `def` keyword. def power(num, power): return num**power # There are 2 parameters/arguments- num, power # Return gives the value that function will give on execution power(3, 4) 81 #Output
The above function takes 2 arguments: num and power and return
num ^ power.
Note: In python
** means power (^).
3**2 = 9
Let’s write the same function using lambda function.
# Lambda Function - We define lambda function with `lambda` keyword. power_1 = lambda x,y: x**y # We gave the function 2 arguments: x & y power_1(5, 3) 125 #Output
Map function in Python
Map function in Python applies the function given to every element of iterable and returns the values. The function can either be a normal function or a lambda function.
num = [1, 2, 3, 4, 5, 6] # We created a list of numbers. num_sq = list(map(lambda x: x**2, num)) # The function given returns the square of the number. num_sq [1, 4, 9, 16, 25, 36] #Output
Map took the elements one by one, squared them and assigned them to a list.
Note here that we didn’t assign any name to the function.
Filter function in Python
Filter function in Python applies the function to every element of iterable and returns only those elements which satisfy the condition given in the function.
num = [1, 2, 3, 4, 5, 6] even_num = list(filter(lambda x: x%2 == 0, num)) even_num [2, 4, 6] #Output
modulo function in python. It gives the remainder. Eg, 5%2 = 1
The function we used in the above example says that return
True if a number when divided by 2 gives remainder 0 i.e. if the number is even.
Lambda function on Titanic dataset
import pandas as pd # Pandas library is used to import data in taubular format. data = pd.read_csv("train.csv") data.head(3) # Head function displays the top rows in the dataframe.
|0||1||0||3||Braund, Mr. Owen Harris||male||22.0||1||0||A/5 21171||7.2500||NaN||S|
|1||2||1||1||Cumings, Mrs. John Bradley (Florence Briggs Th…||female||38.0||1||0||PC 17599||71.2833||C85||C|
|2||3||1||3||Heikkinen, Miss. Laina||female||26.0||0||0||STON/O2. 3101282||7.9250||NaN||S|
data.Age.isnull().sum() # isnull() tells which values are null/missing. # summing them gives the count of missing values. 177 #Output
There are missing values in the Age column. We will use
lambda function with
apply to impute(fill) the missing values by the median based on Pclass and Sex of the passenger.
data.groupby(["Pclass", "Sex"]).Age.median() #Output Pclass Sex 1 female 35.0 male 40.0 2 female 28.0 male 30.0 3 female 21.5 male 25.0 Name: Age, dtype: float64
This can be read as follows: The median age of female passengers in Pclass 1 is 35 years.
data.loc[:, "Age"] = data.groupby(["Pclass", "Sex"]).Age.apply(lambda x: x.fillna(x.median())) #fillna() function fills the missing values data.Age.isnull().sum() 0 #Output
This is one simple example showing how elegant and useful lambda functions are in data analysis.
- Lambda functions do not require a
returnstatement to execute.
- It requires less amount of code and gets the job done in literally one step.
- They are most powerful when used with some other function.
- Generally, they are used in data preprocessing to perform complex tasks.
This article is written by Madhav Samariya . I thank him to write this article and give us permission to post it here. I urge you to visit his Linkedin Profile and share your views or feedback with him.
Thank you for reading.
In case you have not tried earlier exercises and want to learn it from the start, we have the table below.
This article has been published here by Jinal Shah.