成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

開發 后端
學會Python確實能協助你高效工作。但學了是一回事兒,會了是另一回事兒,不是每個人學過Python的人都能玩得轉它。以下幾個小技巧,能讓你離玩轉Python更進一步。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)

Python出圈了,似乎現在人人都在學Python,朋友圈的課程廣告遍地跑,小學生都看起了編程入門。的確,Python是目前公認的最通用的編程語言,以其易理解易操作的優勢攻占了每一個職場人大學生必備技能榜單。

學會Python確實能協助你高效工作。但學了是一回事兒,會了是另一回事兒,不是每個人學過Python的人都能玩得轉它。以下幾個小技巧,能讓你離玩轉Python更進一步。

[[324967]]

把不常用的類別整合成一個

有時你會得到元素分布不均的欄,少有的類別也是僅僅存在而已。通常會希望能將這些類別合并為一個。

  1. df.artists.value_counts() 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

要將Coldplay和Weekend合并到一個類別中,因為它們對數據集的影響微乎其微。該怎么做?

首先,找到不想改變的元素,比如Eminem,TaylorSwift和BrunoMars:

  1. myList =df.artists.value_counts().nlargest(3).index 

使用where()函數替換其他元素

  1. dfdf_new = df.where(df.artists.isin(myList),other='otherartists'
  2. df_new.artists.value_counts() 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

這便是按要求修改后的更新列。

查找列表的新元素

給定兩個不同的列表,要求找到一個列表中有但另一個列表中沒有的元素時,參照這兩個列表:

  1. A = [ 1, 3, 5, 7, 9 ] 
  2. B = [ 4, 5, 6, 7, 8 ] 

為了找到列表A中的新元素,我們取列表A與列表B的集合差:

  1. set(A) - set(B) 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

值1、3和9只出現在列表A而不出現在列表B中。

擺脫警告

運行代碼時,經常會收到很多警告。沒過多久它就開始使人惱火。例如每當導入朝代時,可能會收到警告(FutureWarning)消息

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

可以用下述代碼隱藏所有警告。請確保其寫在代碼頂部。

  1. import warnings 
  2. warnings.filterwarnings(action='ignore'
  3. import keras 

這將有助于在整個代碼中隱藏所有警告。

Map() 函數

map()函數接受函數(function)和序列(iterable)兩個參數,返回包含結果的映射:

  1. map(func,itr) 

func 是指接收來自映射傳遞的給定序列元素的函數。

itr是指可以被映射的序列。

  1. def product(n1,n2): 
  2.     return n1 *n2 list1 = (1, 2, 3, 4) 
  3. list2 = (10,20,30,40)result = map(product, list1,list2) 
  4. list(result) 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

開始解碼。

Product函數接受兩個列表,并反饋兩個列表的乘積。列表1和列表2是充當map函數序列的兩個列表。map()集product函數和序列于一身→列表1和列表2,以及反饋兩個列表的乘積作為結果。

Map + Lambda組合

可以使用lambda表達式修改上述代碼,以替換product函數:

  1. list1 = (1, 2, 3, 4) 
  2. list2 = (10,20,30,40) 
  3. result = map(lambda x,y: x * y, list1,list2) 
  4. print(list(result)) 

Lambda表達式有助于降低單獨編寫函數的成本。

啟動、停止和設置

Slice(start:stop[:step])是通常包含部分序列的對象。

  • 如果只提供停止,則從索引0開始生成部分序列直到停止。
  • 如果只提供開始,則在索引開始之后生成部分序列直到最后一個元素。
  • 如果同時提供開始和停止,則在索引開始之后生成部分序列直到停止。
  • 如果起始、停止和步驟三者同時提供,則在索引開始之后生成部分序列直到停止,并增加索引步驟。
  1. x = [ 1, 2, 3, 4, 5, 6, 7, 8 ] 
  2. x[ 1: 6: 2] 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

上面的代碼中,1是開始索引,6是停止索引,2是步驟索引。這意味著從指數1開始到指數6停止,步長為2。

還可以使用[::-1]操作翻轉列表:

  1. x[::-1] 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

沒錯,通過開始、停止和步驟操作,很容易就可以將整個列表進行逆轉。

組合Zip和Enumerate

zip和enumerate函數常用于for循環,兩個一起用就更精彩了。它不僅可以在單個循環中迭代多個值,而且可以同時獲得索引。

  1. NAME = ['Sid','John','David'] 
  2. BIRD = ['Eagle','Sparrow','Vulture'] 
  3. CITY =['Mumbai','US','London']for i,(name,bird,city) inenumerate(zip(NAME,BIRD,CITY)): 
  4.     print(i,' represents ',name,' ,',bird,' and ',city) 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

Zip函數可以將所有列表合并為一個,以便同時訪問每個列表,而Enumerate函數協助獲得索引以及附加到該索引的元素。

隨機抽樣

有時會遇到非常大的數據集,因而決定處理數據的隨機子集。pandas數據框的sample函數可以實現更多的功能。不妨看看在上面已經創建過的歌星數據模型。

  1. df.sample(n=10

這有助于獲取數據集里隨機的10行。

  1. df.sample(frac=0.5).reset_index(drop=True

分解上面的代碼,frac參數取值在0到1之間,包括1。它占用分配給它的數據流的一部分。在上面的代碼片段中指定了0.5,因此它將返回size→0.5*的隨機子集

你能看到前面的reset_index函數。它有助于適當地重排索引,因為獲取隨機子集時,索引也會被重新排列。

保留內存

隨著編程的深入,你將意識到記住內存高效代碼的重要性。生成器是返回我們可以遍歷的對象的函數。這有助于有效利用內存,因此它主要用于當在無限長的序列上迭代。

  1. def SampleGenerator(n): 
  2.     yield n 
  3.     nn = n+1 
  4.     yield n 
  5.     nn = n+1 
  6.     yield ngen = SampleGenerator(1) 

Yield 語句暫停函數,保存其所有狀態,并在以后的連續調用中繼續執行。

  1. print(next(gen)) 
  2. print(next(gen)) 
  3. print(next(gen)) 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

如你所見,yield保存了前一個狀態,而每當我們調用下一個函數時,它都會繼續到下一個返回其新輸出的yield。

通過添加在generator函數內無限運行的while循環,可以迭代單個yield。

  1. def updatedGenerator(n): 
  2.     while(1): 
  3.         yield n 
  4.         nn = n + 1 
  5. a = updatedGenerator(1)for i in range(5): 
  6.     print(next(a)) 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

While語句可以反復迭代相同的yield語句。

救世主Skiprows

重頭戲壓軸出場!要讀取的csv文件過大,以至于內存不夠用?Skiprows可以輕松解決。

[[324974]]

圖源:unsplash

它可以指定需要在數據框中跳過的行數。

假設有個100萬行的數據集,不適合你的內存。如果分配skiprows=0.5 million(跳讀50萬行),在讀取數據集的時候就會跳過50萬行,這樣就可以輕松地讀取數據集的子集。

  1. df = pd.read_csv('artist.csv') 
  2. df_new = pd.read_csv('artist.csv',skiprows=50)df.shape, 
  3. df_new.shape 

這些讓人相見恨晚的高效代碼小技巧你聽過嗎?

在上面的代碼片段中,df表示包含112行的數據集。在添加了skiprows=50(跳讀50行)之后,它跳過了數據集中的50行,從而讀取了62行作為新數據集。

破案啦!編碼效率提升一大截的秘密就在于此。

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2021-04-14 09:22:18

Python技巧交換變量值

2018-01-25 14:53:20

iPhone技巧刪除照片

2020-04-01 14:16:05

Pandastips數據分析

2024-01-29 00:51:39

前端開發利器

2015-10-27 10:12:21

r語言命令相見恨晚

2021-09-28 14:40:03

Python內置庫itertools

2024-08-20 14:25:20

2016-12-09 12:50:36

Android

2018-02-07 14:54:17

Riverbed應用性能管理數字體驗

2019-08-09 14:13:22

Python知乎程序員

2021-04-20 10:47:59

手機APP科技

2020-05-06 09:18:56

Pandas函數大數據技術

2020-11-23 21:23:34

辦公

2017-06-01 09:34:55

R語言包sqldf

2009-02-20 13:12:23

unixSolaris初學者

2021-08-20 15:43:54

iPhone手機iOS

2024-08-22 08:57:32

Python技巧參數

2021-08-19 15:02:32

科技軟件電腦

2019-12-02 10:16:45

Linux 開源操作系統

2019-08-29 09:10:11

Linux命令編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97伦理电影| 91精品国产综合久久婷婷香蕉 | 亚洲一区黄色 | 国产精品一区二区不卡 | 一区二区三区视频在线观看 | 怡红院成人在线视频 | 成人av鲁丝片一区二区小说 | 免费日本视频 | 国产日韩欧美在线观看 | 免费一区在线观看 | jav成人av免费播放 | 精品欧美一区二区三区免费观看 | 亚洲成人国产综合 | 一级h片| 免费美女网站 | 狠狠躁18三区二区一区 | 国产一区二区三区精品久久久 | 国产真实精品久久二三区 | 啪啪综合网 | 免费h在线| 美国黄色一级片 | 日韩成人在线观看 | 一区二区视频在线观看 | 99久久免费精品 | 亚洲高清av在线 | 黄网站在线观看 | 精品国产亚洲一区二区三区大结局 | 婷婷在线免费 | 成人亚洲网站 | 中文在线观看视频 | 91精品久久久久久久久久 | 精品一区二区三区四区五区 | 一区二区在线看 | 日韩精品中文字幕一区二区三区 | 久久久久久久一区 | 一级在线视频 | 99国产精品视频免费观看一公开 | 成人一级视频在线观看 | 亚洲午夜视频在线观看 | 色一阁| 国产精品99久久久久久www |