不管是为Pandas对象应用自定义函数,还是应用第三方函数,都离不开以下几种方法。用哪种方法取决于操作的对象是DataFrame,还是Series;是行、列,还是元素。
1.表现级函数应用:pipe()
2.行列级函数应用:apply()
3.聚合API:agg()与transform()
4.元素级函数应用:applymap()
表现级函数应用
虽然可以把DataFrame与Series传递给函数,不过链式调用函数时,最好使用pipe()方法。对比以下两种方式:
下列代码与上述代码是等效的:
Pandas建议使用第二种方式,即链式方法。在链式方法中调用自定义函数或第三方支持库函数时,用pipe更容易,与用Pandas自身方法一样。
上述示例中,f、g与h这几个函数都把DataFrame当作首位参数。要是想把数据作为第二个参数,我们可以怎么做呢?本例中,pipe为元组(callable,data_keyword)形式。.pipe把DataFrame作为元组里指定的参数。
下面示例用statmodels拟合回归,该API先接收一个公示,DataFrame是第二个参数,data。要传递函数,则要用pipe接收关键词对(sm.ols,’data’)。
unix的pipe与后来出现的dplyr及magrittr带动了pipe方法,在此,引入了R语言里用于读取pipe的操作符(%>%)。pipe的实现思路非常清晰,仿佛跟Python源生的一样。
行列级函数应用
apply()方法沿着DataFrame的轴应用函数,比如,描述性统计方法,该方法支持axis参数。