加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘孜站长网 (https://www.0836zz.com.cn/)- 运维、物联设备、数据计算、智能推荐、云管理!
当前位置: 首页 > 大数据 > 正文

在pandas中使用pipe()增长代码可读性

发布时间:2021-06-04 14:12:11 所属栏目:大数据 来源:互联网
导读:1. 简介 我们在利用pandas开展数据分析时,应尽量避免过于「碎片化」的组织代码,尤其是创建出过多不必要的「中间变量」,既浪费了「内存」,又带来了关于变量命名的麻烦,更不利于整体分析过程代码的可读性,因此以流水线方式组织代码非常有必要。 图1 而在
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()中,我们将自编函数作为其第一个参数传入,从而将一系列操作巧妙地嵌入到链式过程中。

(编辑:甘孜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读