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

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

大數據 數據分析
我們在利用pandas開展數據分析時,應盡量避免過于「碎片化」的組織代碼,尤其是創建出過多不必要的「中間變量」。

1. 簡介

我們在利用pandas開展數據分析時,應盡量避免過于「碎片化」的組織代碼,尤其是創建出過多不必要的「中間變量」,既浪費了「內存」,又帶來了關于變量命名的麻煩,更不利于整體分析過程代碼的可讀性,因此以流水線方式組織代碼非常有必要。

[[350930]]

圖1

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

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

顧名思義,就是專門用于對Series和DataFrame操作進行流水線(pipeline)改造的API,其作用是將嵌套的函數調用過程改造為「鏈式」過程,其第一個參數func傳入作用于對應Series或DataFrame的函數。

具體來說pipe()有兩種使用方式,「第一種方式」下,傳入函數對應的第一個位置上的參數必須是目標Series或DataFrame,其他相關的參數使用常規的「鍵值對」方式傳入即可,就像下面的例子一樣,我們自編函數對「泰坦尼克數據集」進行一些基礎的特征工程處理:

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

可以看到,在緊接著drop()下一步的pipe()中,我們將自編函數作為其第一個參數傳入,從而將一系列操作巧妙地嵌入到鏈式過程中。

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

  1. def do_something(data1, data2, axis): 
  2.     ''' 
  3.     自編示例函數 
  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

在這樣的設計下我們可以避免很多函數嵌套調用方式,隨心所欲地優化我們的代碼~

 

責任編輯:趙寧寧 來源: Python大數據分析
相關推薦

2021-10-09 10:24:53

Java 代碼可讀性

2017-10-30 15:22:29

代碼可讀性技巧

2022-11-04 11:18:16

代碼優化可讀性

2024-01-31 08:04:43

PygmentsPython

2024-10-07 10:00:00

Python代碼編碼

2023-10-30 18:05:55

Python類型

2021-04-01 16:43:05

代碼可讀性開發

2023-11-14 08:10:06

高級函數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映射庫

2024-04-23 08:01:20

面向對象C 語言代碼

2022-08-23 14:57:43

Python技巧函數

2022-08-29 00:37:53

Python技巧代碼

2021-06-15 09:12:19

TypeScriptTypeScript Javascript

2019-12-03 09:32:32

JavaScript代碼開發

2014-07-28 10:28:25

程序員

2014-07-29 09:55:33

程序員代碼可讀性

2024-10-11 06:00:00

Python代碼編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 9191av| 9999精品视频 | 中文一区二区视频 | 国产日韩欧美一区 | 亚洲精品九九 | 在线成人免费观看 | 国产做a爱片久久毛片 | 久久久网 | 日韩一区二区三区在线视频 | 亚洲欧美第一视频 | 欧美日韩高清 | 国产精品一级 | 欧美日韩综合一区 | 国产欧美一区二区三区日本久久久 | 在线视频 亚洲 | 1级毛片| 欧美精品一二区 | 亚洲看片网站 | 欧美舔穴 | 男女羞羞在线观看 | 亚洲精品电影在线观看 | 欧州一区二区三区 | 男女羞羞视频在线免费观看 | 国产精品免费高清 | 日韩毛片在线免费观看 | 在线看片网站 | 亚洲精品99| 国产精品99久久免费观看 | 久久精品视频在线观看 | 亚洲视频欧美视频 | 亚洲精品乱码久久久久久蜜桃91 | 欧美中文字幕 | 精品亚洲一区二区三区 | 18性欧美 | 国产精品日韩欧美一区二区三区 | 欧美黄在线观看 | 久久婷婷麻豆国产91天堂 | 中文字幕在线精品 | 国产一区二区在线免费观看 | 久久久久九九九女人毛片 | 91成人免费看 |