偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

1. 簡(jiǎn)介

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

[[350930]]

圖1

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

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

顧名思義,就是專門用于對(duì)Series和DataFrame操作進(jìn)行流水線(pipeline)改造的API,其作用是將嵌套的函數(shù)調(diào)用過程改造為「鏈?zhǔn)健惯^程,其第一個(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)竭^程中。

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

  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類型

2021-04-01 16:43:05

代碼可讀性開發(fā)

2025-03-17 00:55:00

2023-11-14 08:10:06

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

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-23 14:57:43

Python技巧函數(shù)

2022-08-29 00:37:53

Python技巧代碼

2021-06-15 09:12:19

TypeScriptTypeScript Javascript

2019-12-03 09:32:32

JavaScript代碼開發(fā)

2024-10-11 06:00:00

Python代碼編程

2014-07-28 10:28:25

程序員

2014-07-29 09:55:33

程序員代碼可讀性
點(diǎn)贊
收藏

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