欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

个人对Pandas中agg、apply和transform函数的理解

程序员文章站 2024-01-18 14:59:04
个人对Pandas中apply、agg和transform函数的理解aggapplytransform内置聚合函数如何插入一段漂亮的代码片学习《利用Python进行数据分析》一书,关于pandas的这三个函数,个人理解如下。aggagg方法可以被groupby、dataframe、series等对象调用。dataframe的agg方法的官方文档其用法为pandas.DataFrame.agg(self, func, axis=0, *args, **kwargs)func可以是function,...

个人对Pandas中agg、apply和transform函数的理解


学习《利用Python进行数据分析》一书,关于pandas的这三个函数,个人理解如下。

agg

agg方法可以被groupby、dataframe、series等对象调用。
dataframe的agg方法的官方文档
其用法为pandas.DataFrame.agg(self, func, axis=0, *args, **kwargs)
func可以是function, str, list或dict,可以接受的形式有函数、函数名称的字符串、函数列表或字典。
agg可以直接以字符串的形式使用pandas和Python内置的函数,也可以使用用户自定义的函数,并且有axis参数。
还可以一次性传入多个函数,给函数设置计算结果的列名,支持对不同的series使用不同的函数(以字典形式传参)。
本方法主要用于聚合,首先对Frame对象的各行(或列)进行计算并得到标量聚合结果,然后汇总所有组的聚合结果为一个数组。

apply

apply方法可以被groupby、resampler、dataframe、series、offsets等对象调用。
dataframe的apply方法的官方文档
其用法为pandas.DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds)
文档中关于func参数,只说了是要应用到行或列的函数。
agg可以做的,好像apply都可以做,所以apply比agg更加灵活,更一般化,但是调用Python内置函数和pandas函数时,运行速度比agg慢。
不同的是apply还能向用户自定义函数中传递参数,而且支持在同一个dataframe的不同series间进行运算,当应用的不是聚合函数时,就是对每个元素的逐一操作。
其返回值可以是标量也可以是Series、DataFrame对象。
applymap先应用apply再对每个Series使用map,可实现逐个元素操作。

transform

transform方法可以被groupby、resampler、dataframe、series等对象调用。
groupby的transform方法的官方文档
其用法为pandas.DataFrame.transform(self, func, axis=0, *args, **kwargs)
func与agg中的func的说明完全相同。
其特点是,按元素进行操作,所以输入dataframe与输出dataframe的大小完全相同。
本方法同样支持对不同的轴调用不同的函数,以及通过字符串形式调用内置函数。
transform可以实现的操作,apply都可以,但是反之不成立。同agg一样,与内建函数一起使用时,比apply速度快。
在groupby对象中执行函数时,会同时使用元素的信息和所在组的信息。

Series.str

顺便说下对Series.str的个人理解。
Python的内置字符串方法不支持向量化操作。str是Series的属性,用于以string的方式访问序列中的元素,并对元素应用一些字符串方法,实现向量化操作。为实现这一功能,这些方法以StringMethods类的对象的方法来执行,以此来与Python的内置字符串方法进行区分。
———————————————————————————
以上均为个人观点,欢迎指正。

本文地址:https://blog.csdn.net/nilgnaw/article/details/107132525