
在使用python清理數(shù)據(jù)時(shí),會(huì)接觸到lambda表達(dá)式配合使用的四種函數(shù)、它們分別是:filter函數(shù)、map函數(shù)、sorted函數(shù)、reduce函數(shù)。下面我們來為大家詳細(xì)講解python清理數(shù)據(jù)領(lǐng)域的知識(shí)。
什么是lambda表達(dá)式
lambda 表達(dá)式是一個(gè)匿名函數(shù),lambda表達(dá)式基于數(shù)學(xué)中的λ演算得名,直接對(duì)應(yīng)于其中的lambda抽象,是一個(gè)匿名函數(shù),即沒有函數(shù)名的函數(shù)。
lambda表達(dá)式常用來聲明匿名函數(shù),即沒有函數(shù)名字的臨時(shí)使用的小函數(shù),常用在臨時(shí)需要一個(gè)類似于函數(shù)的功能但又不想定義函數(shù)的場(chǎng)合。它只可以包含一個(gè)表達(dá)式,不允許包含其他復(fù)雜的語(yǔ)句,但在表達(dá)式中可以調(diào)用其他函數(shù),該表達(dá)式的計(jì)算結(jié)果相當(dāng)于函數(shù)的返回結(jié)果。
lambda表達(dá)式可以接受任意數(shù)量的參數(shù),但函數(shù)只能包含一個(gè)表達(dá)式。表達(dá)式是lambda函數(shù)執(zhí)行的一段代碼,它可以返回任何值,返回函數(shù)對(duì)象。
lambda表達(dá)式可以返回函數(shù)對(duì)象。
在Python中,lambda的語(yǔ)法是唯一的。其形式如下:
我們可以有很多個(gè)參數(shù),但是只能有一個(gè)表達(dá)式。lambda操作符不能有任何聲明,它返回一個(gè)函數(shù)對(duì)象。其中,lambda是Python預(yù)留的關(guān)鍵字,argument_list和expression由用戶自定義。
lambda函數(shù)有如下特性:
下面是一些lambda表達(dá)式的基本用法示例:
lambda表達(dá)式返回的是一個(gè)函數(shù)對(duì)象,其本質(zhì)上只有一種用法,那就是定義一個(gè)lambda匿名函數(shù)。在實(shí)際中,根據(jù)這個(gè)lambda函數(shù)應(yīng)用場(chǎng)景的不同,lambda函數(shù)的用法有很多種,其中一種就是將lambda函數(shù)作為參數(shù)傳遞給其他函數(shù)。
Python有少數(shù)內(nèi)置函數(shù)可以接收l(shuí)ambda函數(shù)作為參數(shù),進(jìn)行組合使用,這也是最為常見的一種用法。典型的此類內(nèi)置函數(shù)有一下這四種。filter函數(shù):篩選列表中所有滿足條件的元素,lambda函數(shù)作為過濾列表元素的條件。
filter( )函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回一個(gè)迭代器對(duì)象,注意返回的不是列表,如果要轉(zhuǎn)換為列表,可以使用 list()來轉(zhuǎn)換。
該函數(shù)接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,filter函數(shù)的重點(diǎn)在于過濾,所以它必須有一個(gè)用于判斷的工具,這就是function參數(shù)的函數(shù),傳入的函數(shù)返回值必須是布爾類型,序列的每個(gè)元素作為參數(shù)逐個(gè)傳遞給函數(shù)進(jìn)行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
簡(jiǎn)單示例一:
簡(jiǎn)單示例二:
簡(jiǎn)單示例三:
map( )會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射,即根據(jù)傳入的函數(shù)逐一對(duì)序列中的元素進(jìn)行計(jì)算。
該函數(shù)至少接收兩個(gè)參數(shù),第一個(gè)參數(shù)為函數(shù)function,第二個(gè)參數(shù)為可迭代對(duì)象iterable,第二個(gè)參數(shù)序列中的每一個(gè)元素調(diào)用第一個(gè)參數(shù) function函數(shù)來進(jìn)行計(jì)算,返回包含每次 function 函數(shù)返回值的可迭代對(duì)象,map( )函數(shù)和filter( )函數(shù)一樣,在python3版本中返回的都是可迭代對(duì)象,有需要的話用list( )函數(shù)將其轉(zhuǎn)換成列表格式。
簡(jiǎn)單示例一:
簡(jiǎn)單示例二:
map( )函數(shù)可以僅對(duì)一個(gè)序列進(jìn)行運(yùn)算,也可以輸入多個(gè)序列進(jìn)行并行運(yùn)算,對(duì)多個(gè)序列同一位置的元素來逐步進(jìn)行運(yùn)算。序列不要求長(zhǎng)度必須相同,最后返回的結(jié)果遵循木桶準(zhǔn)則,以多個(gè)序列中長(zhǎng)度最短的長(zhǎng)度為準(zhǔn),即傳入一個(gè)長(zhǎng)度為4的序列,一個(gè)長(zhǎng)度為7的序列,最終返回的序列長(zhǎng)度為4。
簡(jiǎn)單示例三:
sorted( ) 函數(shù)的作用是對(duì)所有可迭代的對(duì)象進(jìn)行排序操作。它和sort函數(shù)的作用類似,但它們之間還是有一些區(qū)別:
執(zhí)行結(jié)果:
語(yǔ)法:
sorted(iterable, key=None, reverse=False)
參數(shù)說明:
返回:
重新排序后的列表,無論用什么可迭代對(duì)象進(jìn)行排序,最終返回的都是列表。
簡(jiǎn)單示例一:
一維的序列無需key參數(shù),只需要可迭代對(duì)象和reverse排序規(guī)則即可,注意,第一個(gè)參數(shù)可以默認(rèn)為iterable可迭代對(duì)象,不可更改順序,后兩個(gè)可選參數(shù)傳入函數(shù)時(shí),必須包含變量名稱,例如
簡(jiǎn)單示例二:
二維及以上的序列可以使用key參數(shù)傳入lambda匿名函數(shù)結(jié)合使用,實(shí)現(xiàn)按條件排序的作用,lambda函數(shù)的左右主要是用來指定用以排序的目標(biāo)。
執(zhí)行結(jié)果:
reduce() 函數(shù)在 python 2 是內(nèi)置函數(shù), 從python 3 開始移到了 functools 模塊。所以在使用前需要先導(dǎo)入,否則無法直接使用。
reduce函數(shù)的功能是,從左到右對(duì)一個(gè)序列的項(xiàng)逐個(gè)地應(yīng)用一個(gè)有兩個(gè)參數(shù)的函數(shù),用函數(shù)的功能對(duì)序列的項(xiàng)逐個(gè)的進(jìn)行運(yùn)算,最終返回所使用的函數(shù)的結(jié)果。例如:
reduce有三個(gè)參數(shù),分別是
function有兩個(gè)參數(shù)的函數(shù), 必需參數(shù)sequencetuple ,list ,dictionary, string等可迭代對(duì)象,必需參數(shù)initial初始值, 可選參數(shù),默認(rèn)為0
reduce的工作過程是 :在迭代sequence(tuple ,list ,dictionary, string等可迭代對(duì)象)的過程中,首先把前兩個(gè)元素傳給函數(shù)參數(shù),函數(shù)加工后,然后把得到的結(jié)果和第三個(gè)元素作為兩個(gè)參數(shù)傳給函數(shù)參數(shù), 函數(shù)加工后得到的結(jié)果又和第四個(gè)元素作為兩個(gè)參數(shù)傳給函數(shù)參數(shù),依次類推。如果傳入了initial值,那么首先傳的就不是 sequence的第一個(gè)和第二個(gè)元素,而是initial值和第一個(gè)元素。經(jīng)過這樣的累計(jì)計(jì)算之后合并序列到一個(gè)單一返回值。
將前面的例子中的加號(hào)改為乘號(hào),實(shí)際上就從求和的函數(shù)變?yōu)榍箅A乘的函數(shù):
我們?cè)偻嬉恍┥晕?fù)雜一些的用法,只是簡(jiǎn)單基本的用法介紹,對(duì)新手來說,理解肯定是不夠的,所以下面講點(diǎn)更深入的例子,以元組、字典類型的數(shù)據(jù)序列為目標(biāo)來進(jìn)行操作,我們的目標(biāo)是計(jì)算元組中每一個(gè)元素中對(duì)應(yīng)的薪資(wage)的平均數(shù):
也能用t實(shí)它現(xiàn)分組:
通過以上兩個(gè)案例可以看出,簡(jiǎn)單加減示例中很少出現(xiàn)的初始值參數(shù)initial恰恰是實(shí)現(xiàn)復(fù)雜目標(biāo)的最重要的點(diǎn),它可以說是整個(gè)實(shí)現(xiàn)過程中的地基,是塑造最終結(jié)果的骨骼。
更復(fù)雜的操作就沒必要使用reduce+lambdal了,可以使用一些其他的函數(shù)或者自定義來進(jìn)行處理。
以上四種就是能和lambda函數(shù)結(jié)合一起使用的函數(shù),除了reduce函數(shù)在python3中移到了 functools 模塊。需要先導(dǎo)入模塊才能使用,其他三種都是python的內(nèi)置函數(shù),可以直接使用。它們之中有一些相同點(diǎn)和不同點(diǎn),通過總結(jié)后更方便區(qū)分和以后的使用。
相同點(diǎn):
1、都是用以處理可迭代對(duì)象;
2、都可以配合lambda匿名函數(shù)進(jìn)行使用;
不同點(diǎn):
1、功能不同,lambda函數(shù)的作用不同
filter函數(shù):篩選列表中所有滿足條件的元素,lambda函數(shù)作為過濾列表元素的條件。關(guān)鍵詞:篩選
map函數(shù):根據(jù)提供的函數(shù)對(duì)指定序列做映射,lambda函數(shù)作為映射。關(guān)鍵詞:映射
sorted函數(shù):對(duì)列表中所有元素進(jìn)行排序,lambda函數(shù)可以用于指定排序規(guī)則。關(guān)鍵詞:排序
reduce函數(shù):列表中兩兩相鄰元素逐一進(jìn)行運(yùn)算,lambda函數(shù)用于指定運(yùn)算條件。關(guān)鍵詞:元素間運(yùn)算
2、reduce函數(shù)不是內(nèi)置函數(shù)
3、參數(shù)個(gè)數(shù)不同、序列和函數(shù)的傳入順序要求不同
記住不同函數(shù)的功能,最好的方法就是函數(shù)名,filter的意思為過濾器、過濾;map有提供信息(尤指其編排或組織方式)的意思,sorted則是排序,整理的意思,reduce為減少,縮小的意思。如此一看,就能很深刻的記住這幾種函數(shù)的作用和用法了。
閱讀完本篇有關(guān)python數(shù)據(jù)清洗的原創(chuàng)文章后,大家有沒有一些收獲,CDA數(shù)據(jù)分析師將為大家?guī)砀鄡?yōu)質(zhì)的作品。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03