Skip to main content

Streamlining Code: The Power of Map, Filter, and Reduce in Functional Programming - Python



Map, Filter, and Reduce are key paradigms in functional programming. 
They enable the creation of concise and efficient code, reducing the need for explicit loops and branching. 

1MAP:

Map applies a function to all items in an input list.

 

# Example: Converting temperatures from Celsius to Fahrenheit

celsius = [010203040]

fahrenheit = list(map(lambda c: (c * 9/5+ 32celsius))

print(fahrenheit)  

# Output: [32.0, 50.0, 68.0, 86.0, 104.0]

 

In data science, you might use map to apply a transformation to each element in a dataset.

 

2FILTER:

Filter creates a list of elements for which a function returns true.

 

# Example: Filtering out even numbers

numbers = [12345678910]

odd_numbers = list(filter(lambda xx % 2 != 0numbers))

print(odd_numbers)  

# Output: [1, 3, 5, 7, 9]

 

In data analysis, you could use filter to select data points that meet certain criteria.

 

3REDUCE:

Reduce applies a rolling computation to sequential pairs of values in a list.

 

from functools import reduce

 

# Example: Calculating the product of all numbers in a list

numbers = [12345]

product = reduce(lambda xyx * ynumbers)

print(product)  

# Output: 120

 

In data science, reduce can be used for aggregations like sum, product, or more complex rolling computations.

 

Here's a more data science-oriented example combining all three:

 

import pandas as pd

from functools

 

# Sample dataset

data = pd.DataFrame({

    'name': ['Alice''Bob''Charlie''David''Eve'],

    'age': [2530354045],

    'salary': [50000600007500090000100000]

})

 

# MAP: Increase all salaries by 10%

data['new_salary'] = list(map(lambda xx * 1.1data['salary']))

 

# FILTER: Select employees older than 30

older_employees = list(filter(lambda rowrow['age'> 30data.to_dict('records')))

 

# REDUCE: Calculate total salary of older employees

total_salary = functools.reduce(lambda xyx + y['new_salary'], older_employees0)

 

print(data)

print("\nOlder employees:\n"older_employees)

print("\nTotal salary of older employees:\n"total_salary)


# Output:

      name  age  salary  new_salary

0    Alice   25   50000     55000.0

1      Bob   30   60000     66000.0

2  Charlie   35   75000     82500.0

3    David   40   90000     99000.0

4      Eve   45  100000    110000.0


Older employees:

 [{'name': 'Charlie', 'age': 35, 'salary': 75000, 'new_salary': 82500.0}, {'name': 'David', 'age': 40, 'salary': 90000, 'new_salary': 99000.00000000001}, {'name': 'Eve', 'age': 45, 'salary': 100000, 'new_salary': 110000.00000000001}]


Total salary of older employees:

 291500.0

 

This example demonstrates:

- Using MAP to apply a salary increase

- Using FILTER to select older employees

- Using REDUCE to calculate the total salary of filtered employees

 

These functions can significantly simplify data manipulation tasks and are often more readable and efficient than traditional for loops.

 

Happy Computing!

Comments

Popular posts from this blog

How to Open Jupyter Lab in your favourite browser other than system default browser in Mac OS: A Step-by-Step Guide

Are you tired of Jupyter Lab opening in your default browser? Would you prefer to use Google Chrome or another browser of your choice? This guide will walk you through the process of configuring Jupyter Lab to open in your preferred browser, with a focus on using Google Chrome. The Challenge   Many tutorials suggest using the command prompt to modify Jupyter's configuration. However, this method often results in zsh errors and permission issues, even when the necessary permissions seem to be in place. This guide offers a more reliable solution that has proven successful for many users.   Step-by-Step Solution   1. Locate the Configuration File - Open Finder and navigate to your user folder (typically named after your username). - Use the keyboard shortcut Command + Shift + . (full stop) to reveal hidden folders. - Look for a hidden folder named .jupyter . - Within this folder, you'll find the jupyter_notebook_config.py file.   2. Edit the Configuration File - Open ...

Astype vs pd.to_datetime

Astype and pandas date time Ever wondered that we could be using date time conversion in python could lead us to two different methods that perform same job but little do we know that their real working principle. As we can see below that astype and pd.to_datetime are used for converting a column of dtype say from string or object to Datetime format. By doing so we can separate them for days, week, no of days or day of week by using .dt.dayofweek as an example.  astype Purpose:  General type conversion. Usage:  Converts a pandas object (like a DataFrame column) to a specified dtype. Example:  If you have a column of strings representing dates and you want to convert them to datetime objects, you can use  astype . df[ 'date_column' ] = df[ 'date_column' ].astype( 'datetime64[ns]' ) pd.to_datetime Purpose:  Specialized function for parsing date and time strings to datetime objects. Usage:  Converts argument to datetime, optionally with more control over ...

Understanding Large Language Models (LLMs): An Intermediate Guide – Part – 2

Intermediate Guide for LLMs At an intermediate level, we will go deeper into the inner workings of Large Language Models (LLMs), their structure, key components involved, how they are trained, and how they can be fine-tuned for specific tasks. Additionally, we will provide more hands-on examples with code, using advanced techniques like transfer learning and transformers. LLMs include GPT-3, BERT, T5, and GPT-2. These all fall within the broader category of the Transformer architecture. This architecture has revolutionized the area of natural language processing, or NLP. These models can deal with large quantities of text data, be context-sensitive, generate coherent responses, and even learn new languages and tasks without much extra training. Core Structure of LLMs: The Transformer Architecture The heart of modern LLMs is the Transformer architecture, introduced by Vaswani et al. in the paper "Attention is All You Need" in 2017. The Transformer model revolutionized ...