[Python筆記] 新手必學:使用 Lambda Function 解決資料篩選和轉換問題

更新於 2024/12/17閱讀時間約 10 分鐘

What's up guys! How are you doing? 我是 Rex,今天繼續跟大家分享我的 Python 筆記。

Introduction

今天的主題跟前幾篇不太一樣,我想跟各位介紹一個很好用的函式 - Lambda Function。記得大學在做資料分析的時候常常看到其他人的作品有用到這個技巧,但那時總覺得霧煞煞,覺得這個方法不必要,而且不好懂。我是到了實習公司之後才領悟這個方法的實用以及好處,接下來我就簡單地跟各位介紹這個技巧的使用方法。 Lambda Function 也稱為匿名函式,它與我們熟悉的函式差別就在 lambda 函式是 one-line 而且通常用在當你只需要使用到這個函式一次時,就可以使用這個方法,不僅可以避免建立一個 def block,也可以幫助你寫一個精準的 code。

優點:

  1. 簡單快捷:Lambda 函式是一行代碼,適合用在只需要簡單的操作時。
  2. 不需要命名:不需要為它創建一個新函式名,當你只需要簡單的計算或一個小範圍的操作時,這種方法非常實用。
  3. 即時使用:適合用在一個「立即」的情境,例如排序、過濾等簡單的運算操作。

Coding Question

因為今天的範例使用的資料都不相同,因此我不多描述資料,但我在這邊提供一個我覺得蠻好懂也實用的小抄,幫助大家理解和記憶!

要不要使用變數命名完全取決於使用的時機以及情境,從我提供的例子可以看到,我並沒有使用變數接 Lambda 函式,但在有些情況下的確可以這樣使用。我認為最常用的情境是搭配 filter 或是 map 這樣的函式,你可以在這些函式中設計你自己的條件,細節可以在我下面的範例中看到。

  1. 資料篩選 (Data Filtering) - 很常跟 filter () 一起使用!例子1(篩選數字)/ 例子2(篩選點擊某個產品超過5次的顧客)/ 例子3(篩選出年紀大於30且在 Engineering 部門工作的員工) 。
# Case1 - 篩選數字
# 先建立一個由1~10組成的列表​
numbers = [i for i in range(1, 11)]

# Lambda 函式定義篩選的標準(偶數)​
# 解釋: filter 函式採用我自訂的 lambda 函式,numbers 這個變數是我要篩選的原始資料。列表內的元素會逐一的被丟到 lambda 函式中做條件判斷
even_numbers = filter(lambda x: x % 2 == 0, numbers)

# Outputs: [2, 4, 6, 8, 10]

# Case2 - 篩選出點擊某個產品超過 5 次的顧客
customer_clicks = {
"client1": 3,
"client2": 6,
"client3": 2,
"client4": 7,
"client5": 4,
"client6": 10
}

# 解釋: 將 clicks 丟到 lambda 函式中,當點擊超過5次,該筆資料就被儲存到字典中
frequent_customers = {client: clicks for client, clicks in customer_clicks.items() if (lambda x: x> 5)(clicks)}
frequent_customers # Outputs: {'client2': 6, 'client4': 7, 'client6': 10}

# Case 3 - 篩選出年紀大於30且在 Engineering 部門工作的員工
employees = [
{'name': 'Alice', 'age': 28, 'department': 'Marketing'},
{'name': 'Bob', 'age': 35, 'department': 'Engineering'},
{'name': 'Charlie', 'age': 42, 'department': 'Engineering'},
{'name': 'David', 'age': 25, 'department': 'HR'},
{'name': 'Eve', 'age': 38, 'department': 'Engineering'}
]

# filter() 將此條件應用於員工列表,從而產生一個新列表
filtered_employees = list(filter(lambda e: e['age'] > 30 and e['department'] == 'Engineering', employees))

"""
Outputs:
[{'name': 'Bob', 'age': 35, 'department': 'Engineering'},
{'name': 'Charlie', 'age': 42, 'department': 'Engineering'},
{'name': 'Eve', 'age': 38, 'department': 'Engineering'}]
"""
  1. 資料轉換 (Data Transformation) - 很常跟 map () 一起使用!例子1(調整溫度)/ 例子2(調整產品價錢)。
# Case1 - 調整溫度

celsius_temperatures = [0, 20, 30, 100]

# 解釋: 列表中的溫度被丟到 lambda function 中做轉換,儲存到一個新的列表中
fahrenheit_temperatures = list(map(lambda c: c * 9/5 + 32, celsius_temperatures))
# Outputs: [32.0, 68.0, 86.0, 212.0]

# Case2 - 調整產品價錢

products = [
{'name': 'Product A', 'price': 45},
{'name': 'Product B', 'price': 55},
{'name': 'Product C', 'price': 30},
{'name': 'Product D', 'price': 75}
]

# map() 將此 lambda 函數應用於清單中的每個產品,根據條件轉換原始資料
# 解釋: 字典被丟到 lambda function 中,函式會一筆一筆的處理傳入的資料
adjusted_prices = list(map(lambda p: {'name': p['name'], 'price': p['price'] * 1.10 if p['price'] < 50 else p['price']}, products))

"""
Outputs:
[{'name': 'Product A', 'price': 49.50000000000001},
{'name': 'Product B', 'price': 55},
{'name': 'Product C', 'price': 33.0},
{'name': 'Product D', 'price': 75}]
"""


今天的教程雖然偏短,但每一部分都非常重要!希望今天的教學能幫助讀者更深入了解這個實用的功能。過去我的範例都偏簡單且「假」,但接下來我計畫在出完 NumPy 和 Pandas 的筆記後,展示更實務的資料分析操作。若有機會,也會跟大家分享實際的專案經驗。今天的文章中,我們依然會提供練習題,希望通過這些練習,幫助大家更好地理解和應用 Lambda Function。

Coding Question

  1. 使用 filter 搭配 Lambda Function 篩選出一個數字清單中所有大於 10 的元素。
  2. 使用 map 搭配 Lambda Function 將一個字串列表中的每個字串轉為大寫。

Concpet Quetion

  1. Lambda Function 的主要優點是什麼?試舉一個例子說明如何將 Lambda Function 用於資料篩選或資料轉換。


Conclusion

今天的教學就到這裡啦!希望大家透過這篇文章對 Lambda Function 有更深入的了解。如果你對文章中提到的操作或應用有任何問題,歡迎在留言區討論,或者分享你使用這個方法解決問題的經驗!也別忘了試試我提供的練習題目喔!祝大家練習順利,我們下次見~


Reference

avatar-img
1會員
7內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
CodingWRex的沙龍 的其他內容
本篇Python筆記介紹了List和Dictionary Comprehensions的應用與優勢。通過具體例子展示如何利用這些生成式來進行資料篩選、轉換和整合,並提升程式碼的可讀性和效能。適合新手學習如何用簡潔的語法來快速創建和操作資料結構,幫助你在資料分析中更靈活應用Python。
在這篇文章中,通過聖誕節主題來學習Python內建序列函式。介紹了enumerate(), zip(), sorted() 和 reversed()。示範了如何在迭代過程中追蹤索引和值、將多個序列合併成對、對可迭代對象進行排序和反向顯示等操作。這些函式簡化了代碼,提升了可讀性和效能,適合新手學習。
在這篇Python筆記中,我們將探索如何使用元組來管理地理資訊數據。元組是一種有序且不可變的資料結構,非常適合用於儲存地理座標等固定不變的資料。通過實際的Coding Example,我們將展示如何定義元組、進行解包操作,並如何利用元組來簡化地理資訊的管理和處理。
這篇文章介紹了集合,集合特點包括唯一元素和無順序特性,使其在資料處理中非常實用,例如去重和進行數學集合運算。文章以聖誕節為背景,舉例說明集合如何在計劃聖誕節旅行時幫助篩選重複的旅行地點和比較不同朋友的願望清單。通過使用Python集合,讀者可以更深入了解它們的應用和數學操作,並增強對集合概念的理解。
這次主題是字典。字典是一種靈活的數據結構,用於儲存鍵值對。它們提供快速的查找功能,適合管理數據。 文章展示了如何用字典來儲存和操作旅遊地點的中文和英文名稱,例如如何讀取、新增、修改和刪除項目。這些基本操作在資料分析和工作中至關重要。未來 Rex 會介紹更多資料結構的應用,歡迎繼續關注並留言交流!
在這篇文章中,Rex 分享了 Python 中的資料結構 - 列表。列表是一種可變且長度可變的序列,可以包含多種數據類型。文章介紹了列表的優點及其基本操作,包括新增、插入和刪除項目,並透過實際的旅遊清單範例來說明。適合對 Python 感興趣的初學者,瞭解列表的基本用法及其特性。
本篇Python筆記介紹了List和Dictionary Comprehensions的應用與優勢。通過具體例子展示如何利用這些生成式來進行資料篩選、轉換和整合,並提升程式碼的可讀性和效能。適合新手學習如何用簡潔的語法來快速創建和操作資料結構,幫助你在資料分析中更靈活應用Python。
在這篇文章中,通過聖誕節主題來學習Python內建序列函式。介紹了enumerate(), zip(), sorted() 和 reversed()。示範了如何在迭代過程中追蹤索引和值、將多個序列合併成對、對可迭代對象進行排序和反向顯示等操作。這些函式簡化了代碼,提升了可讀性和效能,適合新手學習。
在這篇Python筆記中,我們將探索如何使用元組來管理地理資訊數據。元組是一種有序且不可變的資料結構,非常適合用於儲存地理座標等固定不變的資料。通過實際的Coding Example,我們將展示如何定義元組、進行解包操作,並如何利用元組來簡化地理資訊的管理和處理。
這篇文章介紹了集合,集合特點包括唯一元素和無順序特性,使其在資料處理中非常實用,例如去重和進行數學集合運算。文章以聖誕節為背景,舉例說明集合如何在計劃聖誕節旅行時幫助篩選重複的旅行地點和比較不同朋友的願望清單。通過使用Python集合,讀者可以更深入了解它們的應用和數學操作,並增強對集合概念的理解。
這次主題是字典。字典是一種靈活的數據結構,用於儲存鍵值對。它們提供快速的查找功能,適合管理數據。 文章展示了如何用字典來儲存和操作旅遊地點的中文和英文名稱,例如如何讀取、新增、修改和刪除項目。這些基本操作在資料分析和工作中至關重要。未來 Rex 會介紹更多資料結構的應用,歡迎繼續關注並留言交流!
在這篇文章中,Rex 分享了 Python 中的資料結構 - 列表。列表是一種可變且長度可變的序列,可以包含多種數據類型。文章介紹了列表的優點及其基本操作,包括新增、插入和刪除項目,並透過實際的旅遊清單範例來說明。適合對 Python 感興趣的初學者,瞭解列表的基本用法及其特性。
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
ITS python認證內容含蓋六大主題
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
ITS python認證內容含蓋六大主題
Thumbnail
這邊統整了所有過去發表過關於 QUERY 函式的教學分享,希望可以方便你按照順序閱讀和練習。 QUERY 可以用來查詢、篩選、聚集、排序資料,還可以做張簡易的資料透視表,是我在 Google 試算表上做數據分析、製作報告、製作儀表板時最常用的函式之一,既方便又好用,誠心推薦!
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
邏輯運算子 它們在許多情境下都是程式語言中重要的工具,用於進行條件判斷和控制流程 在日常中總會遇到有些需要思考判斷的問題,比如要買東西,就會考慮到CP值,東西要好且要便宜,就是and的概念,如果在一些比較複雜的狀況,例如想晚餐吃什麼,就會想火鍋或燒烤都行,這就是or的概念。