日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
不能錯(cuò)過(guò)!你必須知道的3種重要Python技能

 學(xué)習(xí)Pandas是很棒的體驗(yàn),學(xué)習(xí)Numpy也很有趣。但是,你是否過(guò)早地開始使用程序庫(kù)了呢?這也許是因?yàn)槟氵€沒有意識(shí)到pure python的魅力。

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)鳳陽(yáng),10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

如果是這樣的話,那么這篇文章會(huì)對(duì)你很有幫助。

本文將介紹幾個(gè)非常有趣的pure python功能,這些功能是在日常數(shù)據(jù)科學(xué)工作中十分常用的。在整個(gè)數(shù)據(jù)準(zhǔn)備階段都都可以大量地使用它們(大量用于數(shù)據(jù)清理),甚至在繪制之前也可以使用它們來(lái)聚合數(shù)據(jù)。

希望你也可以將這些技巧運(yùn)用到項(xiàng)目中。盡管沒有運(yùn)行時(shí)的速度或性能優(yōu)勢(shì),但是與從零開始實(shí)施此邏輯相比,這將為你節(jié)省大量時(shí)間。因此,言歸正傳,讓我們來(lái)看第一點(diǎn)吧!

1、拉姆達(dá)函數(shù)(Lambda Functions)

拉姆達(dá)函數(shù)非常強(qiáng)大。當(dāng)然,當(dāng)必須以相同的方式清理多個(gè)列時(shí),我們不會(huì)使用它,但這并不是經(jīng)常遇到的情況。通常情況下,每個(gè)屬性在清理后都需要自己的邏輯。

Lambda函數(shù)允許創(chuàng)建“匿名”函數(shù)。這基本上意味著可以快速生成特定函數(shù),而無(wú)需使用pythonsdef來(lái)正確定義函數(shù)。

盡管如此,請(qǐng)記住Lambda函數(shù)主要被設(shè)計(jì)成one-liners,因此它應(yīng)該用于簡(jiǎn)單的東西。對(duì)于更復(fù)雜的邏輯,則需要使用常規(guī)函數(shù)。

里將展示兩個(gè)具體示例,通過(guò)這些示例,我們無(wú)需為所有項(xiàng)目定義函數(shù),從而可以節(jié)省許少時(shí)間。雖然第一個(gè)示例可能不會(huì)在現(xiàn)實(shí)中常用,但值得一提。這就是對(duì)數(shù)字求平方。

 
 
 
  1. #regular function 
  2. def square_number(x): 
  3.     res = x ** 2 
  4.     return res# lambda function 
  5. square = lambda x: x ** 2# results 
  6. print('square_number(4): {}'.format(square_number(4))) 
  7. print('square lambda: {}'.format(square(4)))>>> square_number(4):16 
  8. >>> square lambda: 16 

上面的代碼片段以常規(guī)方式和lambda函數(shù)的方式完成了相同邏輯的實(shí)現(xiàn)。雖然結(jié)果是一樣的,但是lambda的單行看起來(lái)舒服多了!

第二個(gè)例子是關(guān)于檢查數(shù)字是偶數(shù)或非偶數(shù):

 
 
 
  1. #regular function 
  2. def is_even(x): 
  3.     if x % 2 == 0: 
  4.         return True 
  5.     else: 
  6.         return False 
  7.   
  8.   
  9. # lambda function 
  10. even = lambda x: x % 2 == 0# results 
  11. print('is_even(4): {}'.format(is_even(4))) 
  12. print('is_even(3): {}'.format(is_even(3))) 
  13. print('even(4): {}'.format(even(4))) 
  14. print('even(3): {}'.format(even(3)))>>> is_even(4): True 
  15. >>> is_even(3): False 
  16. >>> even(4): True 
  17. >>> even(3): False 

再一次,同樣的邏輯以兩種方式實(shí)現(xiàn)。你來(lái)決定你喜歡哪一個(gè)吧。

2、列表解析(List Comprehensions)

簡(jiǎn)單來(lái)說(shuō),列表解析使我們可以使用其他符號(hào)創(chuàng)建列表??梢詫⑵湟暈槔ㄌ?hào)內(nèi)的單行循環(huán)。

在做特征工程時(shí),使用列表解析很方便。例如,假設(shè)我們?cè)谕ㄟ^(guò)分析電子郵件標(biāo)題來(lái)進(jìn)行垃圾郵件檢測(cè),那么我們會(huì)想弄明白是否問號(hào)會(huì)在垃圾郵件中經(jīng)常出現(xiàn)。如果用列表解析來(lái)實(shí)現(xiàn)的話,這將是一項(xiàng)非常簡(jiǎn)單的任務(wù)。

就不再進(jìn)行更多的理論解釋了。例子才是最重要的。

這里的例子選擇聲明一個(gè)常規(guī)函數(shù),該函數(shù)將檢查列表中以某個(gè)字符(在這種情況下為“ a”)開頭的項(xiàng)目。實(shí)施后,再用列表解析執(zhí)行相同的操作。猜猜哪個(gè)會(huì)寫起來(lái)更快呢?

 
 
 
  1. lst =['Acer', 'Asus', 'Lenovo', 'HP']# regular function 
  2. def starts_with_a(lst): 
  3.     valids = [] 
  4.   
  5.     for word in lst: 
  6.         if word[0].lower() == 'a': 
  7.             valids.append(word) 
  8.   
  9.     return valids 
  10.   
  11.   
  12. # list comprehension 
  13. lst_comp = [word for word in lst if word[0].lower() == 'a']# results 
  14. print('starts_with_a: {}'.format(starts_with_a(lst))) 
  15. print('list_comprehension: {}'.format(lst_comp))>>> starts_with_a:['Acer', 'Asus'] 
  16. >>> list_comprehension: ['Acer', 'Asus'] 

如果是第一次看到這樣的方式,語(yǔ)法可能會(huì)有點(diǎn)混亂。但是當(dāng)你每天都在寫這樣的函數(shù)時(shí),它們會(huì)越來(lái)越吸引你,看你能把多少?gòu)?fù)雜的東西應(yīng)用進(jìn)去。

3、Zip函數(shù)

這是在實(shí)踐中很少看到的內(nèi)置python方法之一。從數(shù)據(jù)科學(xué)家的角度來(lái)看,它使我們能夠同時(shí)迭代兩個(gè)或多個(gè)列表。在處理日期和時(shí)間時(shí),這可以派上用場(chǎng)。

例如,有一個(gè)屬性表示某個(gè)事件的開始時(shí)間,而第二個(gè)屬性表示該事件的結(jié)束時(shí)間時(shí),為了進(jìn)一步分析,幾乎總是需要計(jì)算它們之間的時(shí)間差。而到目前為止,zip函數(shù)是最簡(jiǎn)單的方法。

例如,來(lái)比較一些虛構(gòu)公司和虛構(gòu)地區(qū)的一周銷售日期:

 
 
 
  1. sales_north= [350, 287, 550, 891, 241, 653, 882] 
  2. sales_south = [551, 254, 901, 776, 105, 502, 976]for s1, s2 in zip(sales_north,sales_south): 
  3.     print(s1 — s2)>>> -201 
  4.     33 
  5.     -351 
  6.     115 
  7.     136 
  8.     151 
  9.     -94 

看看這有多么簡(jiǎn)單吧??梢詰?yīng)用相同的邏輯同時(shí)迭代3個(gè)數(shù)組,只需要在括號(hào)中添加“ s3”和其他一些列表名稱即可。

結(jié)語(yǔ)

Pure Python真的非常強(qiáng)大。了解其功能后,就不再需要專門的庫(kù)來(lái)存放所有內(nèi)容了。這將幫助你成為一名更好的程序員。

練習(xí)這些技能、掌握它們,并將其應(yīng)用到日常工作中。無(wú)論是僅僅為了娛樂、完成學(xué)業(yè)還是工作,你都不會(huì)后悔的。


本文名稱:不能錯(cuò)過(guò)!你必須知道的3種重要Python技能
本文URL:http://www.dlmjj.cn/article/dhescis.html