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

在pandas中使用pipe()提升代碼可讀性

大數(shù)據(jù) 數(shù)據(jù)分析
我們?cè)诶胮andas開(kāi)展數(shù)據(jù)分析時(shí),應(yīng)盡量避免過(guò)于「碎片化」的組織代碼,尤其是創(chuàng)建出過(guò)多不必要的「中間變量」。

1. 簡(jiǎn)介

我們?cè)诶胮andas開(kāi)展數(shù)據(jù)分析時(shí),應(yīng)盡量避免過(guò)于「碎片化」的組織代碼,尤其是創(chuàng)建出過(guò)多不必要的「中間變量」,既浪費(fèi)了「內(nèi)存」,又帶來(lái)了關(guān)于變量命名的麻煩,更不利于整體分析過(guò)程代碼的可讀性,因此以流水線方式組織代碼非常有必要。

[[350930]]

圖1

而在以前我撰寫(xiě)的一些文章中,為大家介紹過(guò)pandas中的eval()和query()這兩個(gè)幫助我們鏈?zhǔn)綍?shū)寫(xiě)代碼,搭建數(shù)據(jù)分析工作流的實(shí)用API,再加上下面要介紹的pipe(),我們就可以將任意pandas代碼完美組織成流水線形式。

2.  在pandas中靈活利用pipe()pipe()

顧名思義,就是專(zhuān)門(mén)用于對(duì)Series和DataFrame操作進(jìn)行流水線(pipeline)改造的API,其作用是將嵌套的函數(shù)調(diào)用過(guò)程改造為「鏈?zhǔn)健惯^(guò)程,其第一個(gè)參數(shù)func傳入作用于對(duì)應(yīng)Series或DataFrame的函數(shù)。

具體來(lái)說(shuō)pipe()有兩種使用方式,「第一種方式」下,傳入函數(shù)對(duì)應(yīng)的第一個(gè)位置上的參數(shù)必須是目標(biāo)Series或DataFrame,其他相關(guān)的參數(shù)使用常規(guī)的「鍵值對(duì)」方式傳入即可,就像下面的例子一樣,我們自編函數(shù)對(duì)「泰坦尼克數(shù)據(jù)集」進(jìn)行一些基礎(chǔ)的特征工程處理:

  1. import pandas as pd 
  2.  
  3. train = pd.read_csv('train.csv') 
  4.  
  5. def do_something(data, dummy_columns): 
  6.     ''' 
  7.     自編示例函數(shù) 
  8.     ''' 
  9.  
  10.     data = ( 
  11.         pd 
  12.         # 對(duì)指定列生成啞變量 
  13.         .get_dummies(data, # 先刪除data中指定列 
  14.                      columns=dummy_columns
  15.                      drop_first=True
  16.     ) 
  17.      
  18.     return data 
  19.  
  20. # 鏈?zhǔn)搅魉€ 
  21.     train 
  22.     # 將Pclass列轉(zhuǎn)換為字符型以便之后的啞變量處理 
  23.     .eval('PclassPclass=Pclass.astype("str")', engine='python'
  24.     # 刪除指定列 
  25.     .drop(columns=['PassengerId', 'Name', 'Cabin', 'Ticket']) 
  26.     # 利用pipe以鏈?zhǔn)降姆绞秸{(diào)用自編函數(shù) 
  27.     .pipe(do_something,  
  28.           dummy_columns=['Pclass', 'Sex', 'Embarked']) 
  29.     # 刪除含有缺失值的行 
  30.     .dropna() 

可以看到,在緊接著drop()下一步的pipe()中,我們將自編函數(shù)作為其第一個(gè)參數(shù)傳入,從而將一系列操作巧妙地嵌入到鏈?zhǔn)竭^(guò)程中。

「第二種使用方式」適合目標(biāo)Series和DataFrame不為傳入函數(shù)第一個(gè)參數(shù)的情況,譬如下面的例子中我們假設(shè)目標(biāo)輸入數(shù)據(jù)為第二個(gè)參數(shù)data2,則pipe()的第一個(gè)參數(shù)應(yīng)以(函數(shù)名, '參數(shù)名稱(chēng)')的格式傳入:

  1. def do_something(data1, data2, axis): 
  2.     ''' 
  3.     自編示例函數(shù) 
  4.     ''' 
  5.  
  6.     data = ( 
  7.         pd 
  8.         .concat([data1, data2], axisaxis=axis) 
  9.     ) 
  10.      
  11.     return data 
  12.  
  13. # pipe()第二種使用方式 
  14.     train 
  15.     .pipe((do_something, 'data2'), data1=trainaxis=0

在這樣的設(shè)計(jì)下我們可以避免很多函數(shù)嵌套調(diào)用方式,隨心所欲地優(yōu)化我們的代碼~

 

責(zé)任編輯:趙寧寧 來(lái)源: Python大數(shù)據(jù)分析
相關(guān)推薦

2021-10-09 10:24:53

Java 代碼可讀性

2017-10-30 15:22:29

代碼可讀性技巧

2022-11-04 11:18:16

代碼優(yōu)化可讀性

2024-01-31 08:04:43

Pygments庫(kù)Python

2024-10-07 10:00:00

Python代碼編碼

2023-10-30 18:05:55

Python類(lèi)型

2021-04-01 16:43:05

代碼可讀性開(kāi)發(fā)

2023-11-14 08:10:06

高級(jí)函數(shù)Python

2025-03-17 00:55:00

2015-08-27 13:11:18

JavaScript代碼

2024-04-07 10:13:57

C++代碼if-else

2023-07-07 07:43:37

AutoMapper映射庫(kù)

2024-04-23 08:01:20

面向?qū)ο?/a>C 語(yǔ)言代碼

2022-08-29 00:37:53

Python技巧代碼

2022-08-23 14:57:43

Python技巧函數(shù)

2021-06-15 09:12:19

TypeScriptTypeScript Javascript

2019-12-03 09:32:32

JavaScript代碼開(kāi)發(fā)

2014-07-29 09:55:33

程序員代碼可讀性

2014-07-28 10:28:25

程序員

2024-10-11 06:00:00

Python代碼編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品一区二三区不卡 | 精品无码久久久久久久动漫 | 国产精品性做久久久久久 | 看av在线 | 最近中文字幕在线视频1 | 国产精品99久久久久久宅男 | 在线观看国产视频 | 欧美日韩亚 | 日皮视频免费 | 国产综合区 | 亚洲精品日韩精品 | 国产成人免费视频网站视频社区 | 久久久亚洲一区 | 91精品国产色综合久久 | 日韩福利 | 欧美日韩免费一区二区三区 | 成人av高清 | 欧美久久久网站 | 欧美不卡 | 国产一区2区 | 在线视频成人 | 亚洲草草视频 | 亚洲精品乱码久久久久久蜜桃 | 国产一区二区影院 | 在线免费观看毛片 | 免费一级网站 | 天天干夜夜操视频 | 91日韩 | 欧美激情在线观看一区二区三区 | 国产日韩精品一区二区 | 精品三级在线观看 | 在线免费观看日本视频 | 完全免费在线视频 | 中文字幕国产一区 | 久久在看 | 欧美日本韩国一区二区 | 天堂在线免费视频 | 精品一区二区三区在线观看国产 | 日韩亚洲视频 | 亚洲精品乱 | 色婷婷一区二区三区四区 |