前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在pandas中使用pipe()提升代码可读性

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

作者头像
Feffery
发布于 2020-11-09 09:49:02
发布于 2020-11-09 09:49:02
51200
代码可运行
举报
运行总次数:0
代码可运行

1 简介

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

图1
图1

  而在以前我撰写的一些文章中,为大家介绍过pandas中的eval()query()这两个帮助我们链式书写代码,搭建数据分析工作流的实用API,再加上下面要介绍的pipe(),我们就可以将任意pandas代码完美组织成流水线形式。

2 在pandas中灵活利用pipe()

pipe()顾名思义,就是专门用于对SeriesDataFrame操作进行流水线(pipeline)改造的API,其作用是将嵌套的函数调用过程改造为链式过程,其第一个参数func传入作用于对应SeriesDataFrame的函数。

  具体来说pipe()有两种使用方式,第一种方式下,传入函数对应的第一个位置上的参数必须是目标SeriesDataFrame,其他相关的参数使用常规的键值对方式传入即可,就像下面的例子一样,我们自编函数对泰坦尼克数据集进行一些基础的特征工程处理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()中,我们将自编函数作为其第一个参数传入,从而将一系列操作巧妙地嵌入到链式过程中。

第二种使用方式适合目标SeriesDataFrame不为传入函数第一个参数的情况,譬如下面的例子中我们假设目标输入数据为第二个参数data2,则pipe()的第一个参数应以(函数名, '参数名称')的格式传入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
)

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一篇文章就可以跟你聊完Pandas模块的那些常用功能
在数据分析工作中,Pandas 的使用频率是很高的,一方面是因为 Pandas 提供的基础数据结构 DataFrame 与 json 的契合度很高,转换起来就很方便。 另一方面,如果我们日常的数据清理工作不是很复杂的话,你通常用几句 Pandas 代码就可以对数据进行规整。
1480
2019/07/22
5.4K0
一篇文章就可以跟你聊完Pandas模块的那些常用功能
Pandas
Pandas 是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具。经过多年不懈的努力,Pandas 离这个目标已经越来越近了。
爱编程的小明
2022/09/05
9.5K0
Pandas
Pandas常用的数据处理方法
本文的Pandas知识点包括: 1、合并数据集 2、重塑和轴向旋转 3、数据转换 4、数据聚合 1、合并数据集 Pandas中合并数据集有多种方式,这里我们来逐一介绍 1.1 数据库风格合并 数据库风格的合并指根据索引或某一列的值是否相等进行合并的方式,在pandas中,这种合并使用merge以及join函数实现。 先来看下面的例子: df1 = pd.DataFrame({'key':['b','b','a','c','a','a','b'],'data1':range(7)}) df2 = pd.Dat
石晓文
2018/04/11
8.5K0
Pandas常用的数据处理方法
Pandas进阶之数据规整化
---- 概述 在Pandas基本使用简单了介绍了一下Pandas的基本使用和用法,大家如果没有一点基础的同学可以先看一下那篇文章。今天我们来讲解一下Pandas的高级用法。 Numpy基本用法 在讲解Pandas高级特性之前,我们先来学习一下Numpy。Numpy是高性能计算和数据分析的基础包,一种ndarray的多维数组对象并且是一个同构的数据多维容器。创建和操作一个多维数组,我们来看一下简单的代码片段。 arr = np.arange(10,dtype=np.float32) # np.zero,n
吕海峰
2018/04/03
1.8K0
一句Python,一句R︱pandas模块——高级版data.frame
版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! https://blog.csdn.net/sinat_26917383/article/details/52291677
悟乙己
2019/05/26
5K0
Python科学计算:Pandas
在数据分析工作中,Pandas的使用频率是很高的,一方面是因为Pandas提供的基础数据结构DataFrame与json的契合度很高,转换起来就很方便。另一方面,如果我们日常的数据清理工作不是很复杂的话,你通常用几句Pandas代码就可以对数据进行规整。
慕白
2020/01/02
2.1K0
Python科学计算:Pandas
(数据科学学习手札72)用pdpipe搭建pandas数据分析流水线
  在数据分析任务中,从原始数据读入,到最后分析结果出炉,中间绝大部分时间都是在对数据进行一步又一步的加工规整,以流水线(pipeline)的方式完成此过程更有利于梳理分析脉络,也更有利于查错改正。pdpipe作为专门针对pandas进行流水线化改造的模块,为熟悉pandas的数据分析人员书写优雅易读的代码提供一种简洁的思路,本文就将针对pdpipe的用法进行介绍。
Feffery
2020/02/12
1.5K0
猿创征文|数据导入与预处理-第3章-pandas基础
pandas的官网地址为:https://pandas.pydata.org/ 官网首页介绍了Pandas,
IT从业者张某某
2022/11/12
14.3K0
猿创征文|数据导入与预处理-第3章-pandas基础
Pandas 第一轮零基础扫盲
公众号原文首发:https://mp.weixin.qq.com/s/4RYfYc8_2vNxvq_B1bZrUA
AI悦创
2022/06/06
2.2K0
pandas的类SQL操作
会写python不难,写好却需要下一番功夫,上篇文章写了for循环的简单优化方法,原本想一鼓作气,梳理一下for循环优化的高级方法,但是梳理过程中发现for循环优化需要比较多的python基础知识,如果了解不透彻很难达到优化的效果,因此,笔者想用几个短篇先介绍一下python的常用包和方法,方便后续优化使用。
数据森麟
2021/01/25
2K0
pandas的类SQL操作
13个Pandas实用技巧,有点香 !
归纳整理了一些工作中常用到的pandas使用技巧,方便更高效地实现数据分析。文章很短,不用收藏就能Get~
Python数据科学
2020/06/22
1.1K0
Pandas
Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成
GH
2020/03/19
1.6K0
python pandas 基础之二
pandas可以将两个数据的索引对齐;在算术的时候,如果一个索引,两个数据结构都有,就把它们元素运算,否则结果显示为NaN。
小末快跑
2019/07/03
3800
进阶法宝!掌握这些 NumPy & Pandas 方法,快速提升数据处理效率
Pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使python成为强大而高效的数据分析环境的重要因素之一。
数据STUDIO
2021/06/24
3.9K0
Python3快速入门(十五)——Pan
如果要将自定义函数或其它库函数应用于Pandas对象,有三种使用方式。pipe()将函数用于表格,apply()将函数用于行或列,applymap()将函数用于元素。
py3study
2020/01/03
1.9K0
我的Pandas学习经历及动手实践
Pandas 可以说是基于 NumPy 构建的含有更高级数据结构和分析能力的工具包, 实现了类似Excel表的功能,可以对二维数据表进行很方便的操作。
Datawhale
2022/04/08
1.9K0
我的Pandas学习经历及动手实践
【Mark一下】46个常用 Pandas 方法速查表
导读:Pandas是日常数据分析师使用最多的分析和处理库之一,其中提供了大量方便实用的数据结构和方法。但在使用初期,很多人会不知道:
Crossin先生
2019/12/16
5.1K0
我的Python分析成长之路9
统计分析是数据分析的重要组成部分,它几乎贯穿整个数据分析的流程。运用统计方法,将定量与定性结合,进行的研究活动叫做统计分析。而pandas是统计分析的重要库。
py3study
2020/02/10
2.3K0
【Python】这25个Pandas高频实用技巧,不得不服!
今天给大家准备了25个pandas高频实用技巧,让你数据处理速度直接起飞。文章较长,建议收藏!
黄博的机器学习圈子
2022/11/07
6.8K0
【Python】这25个Pandas高频实用技巧,不得不服!
004.python科学计算库pandas(中)
版权声明:本文为博主原创文章,允许转载,请标明出处。 https://blog.csdn.net/qwdafedv/article/details/82702375
qubianzhong
2018/09/19
7450
004.python科学计算库pandas(中)
相关推荐
一篇文章就可以跟你聊完Pandas模块的那些常用功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验