【Python基础】在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 pdtrain = 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)
)
在这样的设计下我们可以避免很多函数嵌套调用方式,随心所欲地优化我们的代码~
以上就是本文的全部内容,欢迎在评论区与我进行讨论~
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
获取一折本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。加入微信群请扫码:
【Python基础】在pandas中使用pipe()提升代码可读性相关推荐
- 【Python基础】pandas中apply与map的异同
◆ ◆ ◆ ◆ ◆ 前言 pandas作为数据处理与分析的利器,它的江湖地位非同小可.在我们数据处理与分析过程中,有时候需要对某一列的每一个值都进行处理,这时候推荐大家使用apply或者map. 但 ...
- Python数据处理库pandas中的DataFrame数据结构简介
pandas 中有两大 数据结构 Series和 DataFrame. 本文主要介绍DataFrame的用法.DataFrame可以处理 表格数据. Series介绍在 Python数据处理库pand ...
- python read_excel 参数_对Python 2.7 pandas 中的read_excel详解
对Python 2.7 pandas 中的read_excel详解 发布时间:2020-08-28 03:32:56 来源:脚本之家 阅读:106 作者:G_66_hero 导入pandas模块: i ...
- 【Python基础】Pandas数据可视化原来也这么厉害
一.可视化概述 在Python中,常见的数据可视化库有3个: matplotlib:最常用的库,可以算作可视化的必备技能库,比较底层,api多,学起来不太容易. seaborn:是建构于matplot ...
- 【Python基础】Pandas笔记---深入Groupby,它的功能没有你想的这么简单
点击上方"潜心的Python小屋"关注我们,第一时间推送优质文章. 前言 大家好,我是潜心.上篇文章提到了Groupby,但其中举例的代码有点问题,在提取序列时用到了for循环,效 ...
- 【Python基础】Pandas笔记---概述与数据结构
点击上方"潜心的Python小屋"关注我们,第一时间推送优质文章. 前言 大家好,我是潜心.因为最近做实验发现Pandas的数据处理技术忘记了,所以准备系统的概述一下Pandas的 ...
- pandas to_csv参数详解_【Python基础】Pandas数据可视化原来也这么厉害
一.可视化概述 在Python中,常见的数据可视化库有3个: matplotlib:最常用的库,可以算作可视化的必备技能库,比较底层,api多,学起来不太容易. seaborn:是建构于matplot ...
- python怎么计算总值_python小白系列Day2—python基础以及pandas基础
最近恰逢过年期间,聚会太多,还有论文以及笔者年后的实习培训,时隔几天,笔者终于在第一天更文之后,继续写第二篇了. 打算写这个,主要是想记录自己从0到1的过程,欢迎拍砖. part one 思考部分 笔 ...
- 【Python基础】Pandas参数设置的八个小技巧
在日常使用pandas的过程中,由于我们所分析的数据表规模.格式上的差异,使得同样的函数或方法作用在不同数据上的效果存在差异. 而pandas有着自己的一套「参数设置系统」,可以帮助我们在遇到不同的数 ...
最新文章
- mysql semi join_MySQL 通过semi join 优化子查询
- iPhoneX快速适配,简单到你想哭。
- 关于VB中没有VSS菜单问题
- Runtime----字典转模型
- Google仍鸡蛋[DP]
- leetcode 258. 各位相加(Java版)
- Lucene 全文搜索解析
- t4 tornado 模板
- matlab编译器安装在哪里,MATLAB的m文件编辑器在哪里?
- sql server死锁_SQL Server死锁定义和概述
- 树莓派挂载硬盘/U盘以及分区教程
- Prometheus Cadvisor 监控k8s
- 计算机专业申请phd美国,揭秘美国大学计算机专业PHD申请难度有多大
- java 画折线图_jfreechart画折线图的方法
- C#如何遍历文件夹下的所有文件
- 如何在FPS游戏中快速实现简单的人体定位算法
- Android 将本地资源图片转换成Drawable,进行设置大小
- 白杨SEO:微信视频号直播功能怎么开通?视频号有什么价值?
- iOS 使用oc 版本的Lottie 库
- arduino wifi_Arduino MKR WiFi 1010