其他
Pandas用了一年,这3个函数是我最爱…
The following article is from 小数志 Author luanhz
关注上方“Python数据科学”,选择星标,
精彩文章不会错过!
01 assign在数据分析处理中,赋值产生新的列是非常高频的应用场景,简单的可能是赋值常数列、复杂的可能是由一列产生另外一个一列,对于这种需求pandas有多种方法实现,但个人唯独喜欢assign,用起来优雅高效。注:本文短平快,5分钟可完成阅读了解3个高效的接口。
例如,对于以上简单的DataFrame数据框,需要创建一个新的列C,一般来说可能有3种创建需求:常数列、指定序列数据以及由已知列通过一定计算产生。那么应用assign完成这3个需求分别是:
1、assign赋值新列时,一般用新列名=表达式的形式,其中新列名为变量的形式,所以不加引号(加引号时意味着是字符串);2、assign返回创建了新列的dataframe,所以需要用新的dataframe对象接收返回值;3、assign不仅可用于创建新的列,也可用于更新已有列,此时创建的新列会覆盖原有列。02 eval实际上,eval是一个Python基础函数,用于执行字符串形式的计算表达式,例如以下简单实例:
了解SQL语法的都知道可用@前缀修饰自定义变量,这一用法在这里的eval中也得以保留,此时可非常方便的引用外部变量。当然,eval中的计算表达式本身属于字符串形式,所以自然也可以用Python的通用字符串引用方法。如下图所示。
03 query这应该是最近使用最为频繁的一个接口了,pandas中虽然也提供了多种数据筛选方式,例如loc中增加表达式、或者直接用df[df[]……]等等,但总觉得用起来不够优雅,尤其是要写两遍df以及[]等等,此时如果灵活运用query函数,那么会便捷不少。尤其是query也是类似于SQL中where关键字的语法逻辑,用起来会很顺滑。
1. query中也支持inplace参数,控制是否将查询过滤条件作用于dataframe本身;2. 与eval类似,query中也支持引用外部函数。