
在使用python清理數(shù)據(jù)時,會接觸到lambda表達式配合使用的四種函數(shù)、它們分別是:filter函數(shù)、map函數(shù)、sorted函數(shù)、reduce函數(shù)。下面我們來為大家詳細講解python清理數(shù)據(jù)領域的知識。
什么是lambda表達式
lambda 表達式是一個匿名函數(shù),lambda表達式基于數(shù)學中的λ演算得名,直接對應于其中的lambda抽象,是一個匿名函數(shù),即沒有函數(shù)名的函數(shù)。
lambda表達式常用來聲明匿名函數(shù),即沒有函數(shù)名字的臨時使用的小函數(shù),常用在臨時需要一個類似于函數(shù)的功能但又不想定義函數(shù)的場合。它只可以包含一個表達式,不允許包含其他復雜的語句,但在表達式中可以調用其他函數(shù),該表達式的計算結果相當于函數(shù)的返回結果。
lambda表達式可以接受任意數(shù)量的參數(shù),但函數(shù)只能包含一個表達式。表達式是lambda函數(shù)執(zhí)行的一段代碼,它可以返回任何值,返回函數(shù)對象。
lambda表達式可以返回函數(shù)對象。
在Python中,lambda的語法是唯一的。其形式如下:
我們可以有很多個參數(shù),但是只能有一個表達式。lambda操作符不能有任何聲明,它返回一個函數(shù)對象。其中,lambda是Python預留的關鍵字,argument_list和expression由用戶自定義。
lambda函數(shù)有如下特性:
下面是一些lambda表達式的基本用法示例:
lambda表達式返回的是一個函數(shù)對象,其本質上只有一種用法,那就是定義一個lambda匿名函數(shù)。在實際中,根據(jù)這個lambda函數(shù)應用場景的不同,lambda函數(shù)的用法有很多種,其中一種就是將lambda函數(shù)作為參數(shù)傳遞給其他函數(shù)。
Python有少數(shù)內置函數(shù)可以接收lambda函數(shù)作為參數(shù),進行組合使用,這也是最為常見的一種用法。典型的此類內置函數(shù)有一下這四種。filter函數(shù):篩選列表中所有滿足條件的元素,lambda函數(shù)作為過濾列表元素的條件。
filter( )函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象,注意返回的不是列表,如果要轉換為列表,可以使用 list()來轉換。
該函數(shù)接收兩個參數(shù),第一個為函數(shù),第二個為序列,filter函數(shù)的重點在于過濾,所以它必須有一個用于判斷的工具,這就是function參數(shù)的函數(shù),傳入的函數(shù)返回值必須是布爾類型,序列的每個元素作為參數(shù)逐個傳遞給函數(shù)進行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
簡單示例一:
簡單示例二:
簡單示例三:
map( )會根據(jù)提供的函數(shù)對指定序列做映射,即根據(jù)傳入的函數(shù)逐一對序列中的元素進行計算。
該函數(shù)至少接收兩個參數(shù),第一個參數(shù)為函數(shù)function,第二個參數(shù)為可迭代對象iterable,第二個參數(shù)序列中的每一個元素調用第一個參數(shù) function函數(shù)來進行計算,返回包含每次 function 函數(shù)返回值的可迭代對象,map( )函數(shù)和filter( )函數(shù)一樣,在python3版本中返回的都是可迭代對象,有需要的話用list( )函數(shù)將其轉換成列表格式。
簡單示例一:
簡單示例二:
map( )函數(shù)可以僅對一個序列進行運算,也可以輸入多個序列進行并行運算,對多個序列同一位置的元素來逐步進行運算。序列不要求長度必須相同,最后返回的結果遵循木桶準則,以多個序列中長度最短的長度為準,即傳入一個長度為4的序列,一個長度為7的序列,最終返回的序列長度為4。
簡單示例三:
sorted( ) 函數(shù)的作用是對所有可迭代的對象進行排序操作。它和sort函數(shù)的作用類似,但它們之間還是有一些區(qū)別:
執(zhí)行結果:
語法:
sorted(iterable, key=None, reverse=False)
參數(shù)說明:
返回:
重新排序后的列表,無論用什么可迭代對象進行排序,最終返回的都是列表。
簡單示例一:
一維的序列無需key參數(shù),只需要可迭代對象和reverse排序規(guī)則即可,注意,第一個參數(shù)可以默認為iterable可迭代對象,不可更改順序,后兩個可選參數(shù)傳入函數(shù)時,必須包含變量名稱,例如
簡單示例二:
二維及以上的序列可以使用key參數(shù)傳入lambda匿名函數(shù)結合使用,實現(xiàn)按條件排序的作用,lambda函數(shù)的左右主要是用來指定用以排序的目標。
執(zhí)行結果:
reduce() 函數(shù)在 python 2 是內置函數(shù), 從python 3 開始移到了 functools 模塊。所以在使用前需要先導入,否則無法直接使用。
reduce函數(shù)的功能是,從左到右對一個序列的項逐個地應用一個有兩個參數(shù)的函數(shù),用函數(shù)的功能對序列的項逐個的進行運算,最終返回所使用的函數(shù)的結果。例如:
reduce有三個參數(shù),分別是
function有兩個參數(shù)的函數(shù), 必需參數(shù)sequencetuple ,list ,dictionary, string等可迭代對象,必需參數(shù)initial初始值, 可選參數(shù),默認為0
reduce的工作過程是 :在迭代sequence(tuple ,list ,dictionary, string等可迭代對象)的過程中,首先把前兩個元素傳給函數(shù)參數(shù),函數(shù)加工后,然后把得到的結果和第三個元素作為兩個參數(shù)傳給函數(shù)參數(shù), 函數(shù)加工后得到的結果又和第四個元素作為兩個參數(shù)傳給函數(shù)參數(shù),依次類推。如果傳入了initial值,那么首先傳的就不是 sequence的第一個和第二個元素,而是initial值和第一個元素。經過這樣的累計計算之后合并序列到一個單一返回值。
將前面的例子中的加號改為乘號,實際上就從求和的函數(shù)變?yōu)榍箅A乘的函數(shù):
我們再玩一些稍微復雜一些的用法,只是簡單基本的用法介紹,對新手來說,理解肯定是不夠的,所以下面講點更深入的例子,以元組、字典類型的數(shù)據(jù)序列為目標來進行操作,我們的目標是計算元組中每一個元素中對應的薪資(wage)的平均數(shù):
也能用t實它現(xiàn)分組:
通過以上兩個案例可以看出,簡單加減示例中很少出現(xiàn)的初始值參數(shù)initial恰恰是實現(xiàn)復雜目標的最重要的點,它可以說是整個實現(xiàn)過程中的地基,是塑造最終結果的骨骼。
更復雜的操作就沒必要使用reduce+lambdal了,可以使用一些其他的函數(shù)或者自定義來進行處理。
以上四種就是能和lambda函數(shù)結合一起使用的函數(shù),除了reduce函數(shù)在python3中移到了 functools 模塊。需要先導入模塊才能使用,其他三種都是python的內置函數(shù),可以直接使用。它們之中有一些相同點和不同點,通過總結后更方便區(qū)分和以后的使用。
相同點:
1、都是用以處理可迭代對象;
2、都可以配合lambda匿名函數(shù)進行使用;
不同點:
1、功能不同,lambda函數(shù)的作用不同
filter函數(shù):篩選列表中所有滿足條件的元素,lambda函數(shù)作為過濾列表元素的條件。關鍵詞:篩選
map函數(shù):根據(jù)提供的函數(shù)對指定序列做映射,lambda函數(shù)作為映射。關鍵詞:映射
sorted函數(shù):對列表中所有元素進行排序,lambda函數(shù)可以用于指定排序規(guī)則。關鍵詞:排序
reduce函數(shù):列表中兩兩相鄰元素逐一進行運算,lambda函數(shù)用于指定運算條件。關鍵詞:元素間運算
2、reduce函數(shù)不是內置函數(shù)
3、參數(shù)個數(shù)不同、序列和函數(shù)的傳入順序要求不同
記住不同函數(shù)的功能,最好的方法就是函數(shù)名,filter的意思為過濾器、過濾;map有提供信息(尤指其編排或組織方式)的意思,sorted則是排序,整理的意思,reduce為減少,縮小的意思。如此一看,就能很深刻的記住這幾種函數(shù)的作用和用法了。
閱讀完本篇有關python數(shù)據(jù)清洗的原創(chuàng)文章后,大家有沒有一些收獲,CDA數(shù)據(jù)分析師將為大家?guī)砀鄡?yōu)質的作品。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結構數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結構數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結構數(shù)據(jù)特征價值的專業(yè)核心 表結構數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結構化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結構數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結構數(shù)據(jù)(以 “行 - 列” 存儲的結構化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結構數(shù)據(jù)價值的核心操盤手 表格結構數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到決策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10CDA 數(shù)據(jù)分析師:商業(yè)數(shù)據(jù)分析實踐的落地者與價值創(chuàng)造者 商業(yè)數(shù)據(jù)分析的價值,最終要在 “實踐” 中體現(xiàn) —— 脫離業(yè)務場景的分 ...
2025-09-10