Pandas用了一年,这3个函数是我最的最爱……

导读

作为一名数据分析师,也是Pandas重度依赖者,虽然其提供了大量便利的接口,但其中的这3个却使用频率更高!

本文主要介绍pandas.DataFrame的三个接口,即assign、eval、query,分别用于赋值、查询和执行计算。

注:本文短平快,5分钟可完成阅读了解3个高效的接口。
01 assign

在数据分析处理中,赋值产生新的列是非常高频的应用场景,简单的可能是赋值常数列、复杂的可能是由一列产生另外一个一列,对于这种需求pandas有多种方法实现,但个人唯独喜欢assign,用起来优雅高效。

例如,对于以上简单的DataFrame数据框,需要创建一个新的列C,一般来说可能有3种创建需求:常数列、指定序列数据以及由已知列通过一定计算产生。那么应用assign完成这3个需求分别是:

注意事项:

  1. assign赋值新列时,一般用新列名=表达式的形式,其中新列名为变量的形式,所以不加引号(加引号时意味着是字符串);

  2. assign返回创建了新列的dataframe,所以需要用新的dataframe对象接收返回值;

  3. assign不仅可用于创建新的列,也可用于更新已有列,此时创建的新列会覆盖原有列。

02 eval

实际上,eval是一个Python基础函数,用于执行字符串形式的计算表达式,例如以下简单实例:

那么,eval作为pandas.dataframe数据结构的一个接口,执行功能应该也与执行计算有关。另一方面,pandas中实际上是内置了大量的SQL类语法(包括下面要介绍的query也是),而eval的功能正是执行类似SQL语法中的计算,对已知列执行一定的计算时可用eval完成。例如,仍以前述由A和B列产生C列为例,应用eval的方法为:

了解SQL语法的都知道可用@前缀修饰自定义变量,这一用法在这里的eval中也得以保留,此时可非常方便的引用外部变量。当然,eval中的计算表达式本身属于字符串形式,所以自然也可以用Python的通用字符串引用方法。如下图所示。

注意事项:

  1. eval支持接收一个inplace参数控制原地创建新变量或者返回新的dataframe;也支持仅用表达式而不设置新变量名,此时返回数据为series格式,如下图所示;

  2. eval表达式中也支持调用函数执行复杂计算。

03 query

这应该是最近使用最为频繁的一个接口了,pandas中虽然也提供了多种数据筛选方式,例如loc中增加表达式、或者直接用df[df[]……]等等,但总觉得用起来不够优雅,尤其是要写两遍df以及[]等等,此时如果灵活运用query函数,那么会便捷不少。尤其是query也是类似于SQL中where关键字的语法逻辑,用起来会很顺滑。

例如对于以上dataframe,需要根据不同场景查询满足条件的记录,调用query的实现方式为:

当然,之所以说query中支持类似SQL的语法,是因为其也有两个SQL中标志性的设计,其一是@引用自定义外部变量,其二是对于特殊的列名(例如包含空格的字符)可以用反引号``加以修饰引用。例如,下述例子中C C列中有个空格,直接用于字符串表达式会存在报错,此时可使用反引号加以修饰,同时查询条件中应用了@修饰符引用外部变量。当然,与eval中类似,这里当然也可以用f字符串修饰引用。

注意事项:

  1. query中也支持inplace参数,控制是否将查询过滤条件作用于dataframe本身;

  2. 与eval类似,query中也支持引用外部函数。

感谢阅读
(0)

相关推荐

  • Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略

    Py之Pandas:Python的pandas库简介.安装.使用方法详细攻略 推荐文章 Py之Pandas:Python的pandas库简介.安装.使用方法详细攻略 Python之pandas:Dat ...

  • connector-x | 让数据从DB高速导入到DataFrame中

    ConnectorX 使您能够以最快和最节省内存的方式将数据从数据库加载到 Python 中. 你需要的是一行代码: import connectorx as cx cx.read_sql(" ...

  • Pandas中groupby的这些用法你都知道吗?

    导读 pandas作为Python数据分析的瑞士军刀,集成了大量实用的功能接口,基本可以实现数据分析一站式处理.前期,笔者完成了一篇pandas系统入门教程,也针对几个常用的分组统计接口进行了介绍,今 ...

  • pyspark入门教程

    目录 一.windows下配置pyspark环境 1.1 jdk下载安装 1.2 Scala下载安装 1.3 spark下载安装 1.4 Hadoop下载安装 1.5 pyspark下载安装 1.6 ...

  • 什么是Numpy?与Pandas的差异!

    Pandas和Numpy想必大家都听说过,一个是数值计算的扩展包,一个是做数据处理的,那么它们之间有何区别呢?我们通过这篇文章来看看吧. 什么是Numpy? Numpy系统是Python的一种开源的数 ...

  • Pandas和Series有何关联?Python入门分享!

    想必大家都知道pandas,它是基于Numpy的一种工具,可以解决数据分析任务,也是Python学习过程中经常会用到的工具.而Series是pandas中最基本的对象,类似一种一维数组,那么Panda ...

  • 利用python tushare pandas进行财报分析

    一.财报分析 大家在购买股票的时候,已经不只是凭感觉去买了,基本上都会对一个股票进行深入的分析. 毕竟购买股票还是一项风险性较高的投资,需要在较为熟悉以后才能去开展,不能蛮干,钱也都不是天上掉下来的. ...

  • 财务数据分析神器Pandas:数据提取

    财务数据分析神器Pandas:数据提取

  • 从列表或字典创建Pandas的DataFrame对象的方法

    介绍 每当我使用pandas进行分析时,我的第一个目标是使用众多可用选项中的一个将数据导入Pandas的DataFrame . 对于绝大多数情况下,我使用的 read_excel , read_csv ...

  • 太强大了!一款可以像操作Excel一样玩Pandas的可视化神器来了!

    来源:程序员Github 大家好,我是Stitin涛哥! Pandas这个库对Python来说太重要啦!因为它的出现,让Python进行数据分析如虎添翼,作为Python里面最最牛逼的库之一,它在数据 ...

  • pandas数据分析案例:美国2012年总统候选人政治献金数据分析

    方便大家操作,将月份和参选人以及所在政党进行定义: months = {'JAN': 1, 'FEB': 2, 'MAR': 3, 'APR': 4, 'MAY': 5, 'JUN': 6, 'JUL ...

  • Pandas Series简述

    Series是Pandas的核心数据结构之一,也是理解高阶数据结构DataFrame的基础. Series是一种类似于一维数组的数据结构,是由一组数据及与之对应的标签(即索引)构成的.列表内的元素可以 ...

  • 入门Pandas不可不知的技巧

    大家好,我是Python之眼. 今天来跟大家分享 Pandas 的一些常用知识点,文章内容由公众号读者 Peter 创作. 如果你用 Python 做数据分析,必然会绕不过 Pandas 的使用,实际 ...