

在pandas中使用pipe()提升代码可读性
source link: http://www.cnblogs.com/feffery/p/13941809.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1 简介
我们在利用 pandas
开展数据分析时,应尽量避免过于 碎片化 的组织代码,尤其是创建出过多不必要的 中间变量 ,既浪费了 内存 ,又带来了关于变量命名的麻烦,更不利于整体分析过程代码的可读性,因此以流水线方式组织代码非常有必要。

而在以前我撰写的一些文章中,为大家介绍过 pandas
中的 eval()
和 query()
这两个帮助我们链式书写代码,搭建数据分析工作流的实用 API
,再加上下面要介绍的 pipe()
,我们就可以将任意 pandas
代码完美组织成流水线形式。
2 在pandas中灵活利用pipe()
pipe()
顾名思义,就是专门用于对 Series
和 DataFrame
操作进行流水线( pipeline )改造的API,其作用是将嵌套的函数调用过程改造为 链式 过程,其第一个参数 func
传入作用于对应 Series
或 DataFrame
的函数。
具体来说 pipe()
有两种使用方式, 第一种方式 下,传入函数对应的第一个位置上的参数必须是目标 Series
或 DataFrame
,其他相关的参数使用常规的 键值对 方式传入即可,就像下面的例子一样,我们自编函数对 泰坦尼克数据集 进行一些基础的特征工程处理:
import pandas as pd train = pd.read_csv('train.csv') def do_something(data, dummy_columns): ''' 自编示例函数 ''' data = ( pd # 对指定列生成哑变量 .get_dummies(data, # 先删除data中指定列 columns=dummy_columns, drop_first=True) ) return data # 链式流水线 ( train # 将Pclass列转换为字符型以便之后的哑变量处理 .eval('Pclass=Pclass.astype("str")', engine='python') # 删除指定列 .drop(columns=['PassengerId', 'Name', 'Cabin', 'Ticket']) # 利用pipe以链式的方式调用自编函数 .pipe(do_something, dummy_columns=['Pclass', 'Sex', 'Embarked']) # 删除含有缺失值的行 .dropna() )
可以看到,在紧接着 drop()
下一步的 pipe()
中,我们将自编函数作为其第一个参数传入,从而将一系列操作巧妙地嵌入到链式过程中。
第二种使用方式适合目标 Series
和 DataFrame
不为传入函数第一个参数的情况,譬如下面的例子中我们假设目标输入数据为第二个参数 data2
,则 pipe()
的第一个参数应以 (函数名, '参数名称')
的格式传入:
def do_something(data1, data2, axis): ''' 自编示例函数 ''' data = ( pd .concat([data1, data2], axis=axis) ) return data # pipe()第二种使用方式 ( train .pipe((do_something, 'data2'), data1=train, axis=0) )
在这样的设计下我们可以避免很多函数嵌套调用方式,随心所欲地优化我们的代码~
以上就是本文的全部内容,欢迎在评论区与我进行讨论~
Recommend
-
95
停顿十秒钟,思考沉淀
-
38
如果你对开发团队进行问卷,大多数人会说“我们想要可读性高的代码”。你甚至发现有些人认为可读性比功能更重要。但是,当要求人们对可读性做出定义时,他们的意见就会出现分歧。Laura Savino在 Explor...
-
73
前言 可能现在不管大家去面试还是在公司上班都会涉及到代码可读性,或者是代码规范。优秀的代码注释可以提高代码可读性,当然优秀的命名规范也可以啦。我们这里就讨论一下代码注释。代码注释可能就相当于产品使用说明书,当别人看到你的代码的时候,知道你的代码是...
-
30
作者:Milos Protic 译者:前端小智 来源:blog.risingstack 为了保证的可读性,本文采用意译而非直译。 简介 如果咱们关注代码本身结构及可读笥,而不是只关心它是否能工作,那么咱们写代码是有一定的水准。专业开发人员将为未来的自己和“
-
8
如何使用偏函数技术提高代码的可读性 对刚接触JS的人来,「偏函数」是一个让人困惑的概念,其实「偏函数」指代的不是一个特殊功能的函数,而是 一种有目的函数式编程(功能编程),这个目的可概述为,
-
14
(给 ImportNew 加星标,提高Java技能) 从命名变量到设计软件架构,开发人员每天都要做出许多决定,而做出正确决定的最好的办法就是经验。虽然并非每个人都具备丰富的软件开发经验,但每个人都可...
-
17
“ 本文整理自 taowen 师傅在滴滴内部的分享。 1.Why 对一线开发人员来说,每天工作内容大多是在已有项目的基础上继续堆代码。当项目实在堆不动时就需要寻找收益来重构代码。既然我们的大多数时间都花...
-
6
教育 · 2021.11.29 太原理工大学更新校徽,提升可读性
-
11
由 乔梁 | 2021-03-05小心使用过长的命名创建长标识符很容易被带飞。虽然较长的命名常常让代码更加具有可读性,但是,如果名字过长,也能...
-
3
提升代码可读性,减少 if-else 的几个小技巧 作者:树深遇鹿 2022-11-04 11:18:16 本文主要是向大家传递一种思想,我们有很多的方法去优化我们的代码,提高我们代码的可读性。对if else并没有歧视的意思,只是希望...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK