温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在pandas中如何使用pipe()提升代码可读性

发布时间:2021-07-24 09:14:16 阅读:197 作者:chen 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容主要讲解“在pandas中如何使用pipe()提升代码可读性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在pandas中如何使用pipe()提升代码可读性”吧!

1. 简介

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

图1

而在以前我撰写的一些文章中,为大家介绍过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('PclassPclass=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], axisaxis=axis)     )          return data  # pipe()第二种使用方式 (     train     .pipe((do_something, 'data2'), data1=train, axis=0) )

在这样的设计下我们可以避免很多函数嵌套调用方式,随心所欲地优化我们的代码~

到此,相信大家对“在pandas中如何使用pipe()提升代码可读性”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:http://mp.weixin.qq.com/s?__biz=MzA3ODYwNDkzOQ==&mid=2659061287&idx=1&sn=2b36d5d726992527819860b60f8fa890&chksm=84ca91c3b3bd18d5f88aa15830b94027e363e5147aa6b2f386d82e55979d6eb352828eeff255&mpshare=1&s

AI

开发者交流群×